diff --git a/src/test/regress/expected/cf_executor.out b/src/test/regress/expected/cf_executor.out new file mode 100644 index 0000000000000000000000000000000000000000..76085c12fc9e9a0f6b23f5c625bec45fed2939cc --- /dev/null +++ b/src/test/regress/expected/cf_executor.out @@ -0,0 +1,59 @@ +--start_ignore +drop table if exists cf_executor_test; +NOTICE: table "cf_executor_test" does not exist, skipping +create table cf_executor_test (a integer); +NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table. +HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew. +insert into cf_executor_test select a from generate_series(1,100) a; +set log_min_messages=debug5; +--end_ignore +set debug_print_slice_table=on; +select count(*) from cf_executor_test; + count +------- + 100 +(1 row) + +--FOR UPDATE/FOR SHARE +select * from cf_executor_test order by a limit 1 for update; + a +--- + 1 +(1 row) + +select * from cf_executor_test order by a limit 1 for share; + a +--- + 1 +(1 row) + +--returning clause +insert into cf_executor_test values (1) returning *; +ERROR: The RETURNING clause of the INSERT statement is not supported in this version of Greenplum Database. +--start_ignore +drop table cf_executor_test; +create table cf_executor_test (a integer); +NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table. +HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew. +insert into cf_executor_test select a from generate_series(1,5) a; +--end_ignore +select * from cf_executor_test limit null; + a +--- + 3 + 4 + 5 + 1 + 2 +(5 rows) + +select * from cf_executor_test limit 0; + a +--- +(0 rows) + +--start_ignore +reset log_min_messages; +reset debug_print_slice_table; +drop table cf_executor_test; +--end_ignore diff --git a/src/test/regress/expected/cf_olap_window.out b/src/test/regress/expected/cf_olap_window.out new file mode 100644 index 0000000000000000000000000000000000000000..6abc37f16390e97f5af0151cd6b5c49bf3395c93 --- /dev/null +++ b/src/test/regress/expected/cf_olap_window.out @@ -0,0 +1,63745 @@ +-- +-- STANDARD DATA FOR olap_* TESTS. +-- +-- start_ignore +-- count number of certain operators in a given plan +create language plpythonu; +create or replace function ow_count_operator(explain_query text, operator text) returns int as +$$ +rv = plpy.execute(explain_query) +search_text = operator +result = 0 +for i in range(len(rv)): + cur_line = rv[i]['QUERY PLAN'] + if search_text.lower() in cur_line.lower(): + result = result+1 +return result +$$ +language plpythonu; +drop table ow_customer; +ERROR: table "ow_customer" does not exist +drop table ow_vendor; +ERROR: table "ow_vendor" does not exist +drop table ow_product; +ERROR: table "ow_product" does not exist +drop table ow_sale; +ERROR: table "ow_sale" does not exist +drop table ow_sale_ord; +ERROR: table "ow_sale_ord" does not exist +drop table ow_util; +ERROR: table "ow_util" does not exist +create table ow_customer +( + cn int not null, + cname text not null, + cloc text, + + primary key (cn) + +) distributed by (cn); +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "ow_customer_pkey" for table "ow_customer" +create table ow_vendor +( + vn int not null, + vname text not null, + vloc text, + + primary key (vn) + +) distributed by (vn); +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "ow_vendor_pkey" for table "ow_vendor" +create table ow_product +( + pn int not null, + pname text not null, + pcolor text, + + primary key (pn) + +) distributed by (pn); +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "ow_product_pkey" for table "ow_product" +create table ow_sale +( + cn int not null, + vn int not null, + pn int not null, + dt date not null, + qty int not null, + prc float not null, + + primary key (cn, vn, pn) + +) distributed by (cn,vn,pn); +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "ow_sale_pkey" for table "ow_sale" +create table ow_sale_ord +( + ord int not null, + cn int not null, + vn int not null, + pn int not null, + dt date not null, + qty int not null, + prc float not null, + + primary key (cn, vn, pn) + +) distributed by (cn,vn,pn); +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "ow_sale_ord_pkey" for table "ow_sale_ord" +create table ow_util +( + xn int not null, + + primary key (xn) + +) distributed by (xn); +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "ow_util_pkey" for table "ow_util" +-- Customers +insert into ow_customer values + ( 1, 'Macbeth', 'Inverness'), + ( 2, 'Duncan', 'Forres'), + ( 3, 'Lady Macbeth', 'Inverness'), + ( 4, 'Witches, Inc', 'Lonely Heath'); +-- Vendors +insert into ow_vendor values + ( 10, 'Witches, Inc', 'Lonely Heath'), + ( 20, 'Lady Macbeth', 'Inverness'), + ( 30, 'Duncan', 'Forres'), + ( 40, 'Macbeth', 'Inverness'), + ( 50, 'Macduff', 'Fife'); +-- Products +insert into ow_product values + ( 100, 'Sword', 'Black'), + ( 200, 'Dream', 'Black'), + ( 300, 'Castle', 'Grey'), + ( 400, 'Justice', 'Clear'), + ( 500, 'Donuts', 'Plain'), + ( 600, 'Donuts', 'Chocolate'), + ( 700, 'Hamburger', 'Grey'), + ( 800, 'Fries', 'Grey'); +-- Sales (transactions) +insert into ow_sale values + ( 2, 40, 100, '1401-1-1', 1100, 2400), + ( 1, 10, 200, '1401-3-1', 1, 0), + ( 3, 40, 200, '1401-4-1', 1, 0), + ( 1, 20, 100, '1401-5-1', 1, 0), + ( 1, 30, 300, '1401-5-2', 1, 0), + ( 1, 50, 400, '1401-6-1', 1, 0), + ( 2, 50, 400, '1401-6-1', 1, 0), + ( 1, 30, 500, '1401-6-1', 12, 5), + ( 3, 30, 500, '1401-6-1', 12, 5), + ( 3, 30, 600, '1401-6-1', 12, 5), + ( 4, 40, 700, '1401-6-1', 1, 1), + ( 4, 40, 800, '1401-6-1', 1, 1); +-- Sales (ord transactions) +insert into ow_sale_ord values + ( 1,2, 40, 100, '1401-1-1', 1100, 2400), + ( 2,1, 10, 200, '1401-3-1', 1, 0), + ( 3,3, 40, 200, '1401-4-1', 1, 0), + ( 4,1, 20, 100, '1401-5-1', 1, 0), + ( 5,1, 30, 300, '1401-5-2', 1, 0), + ( 6,1, 50, 400, '1401-6-1', 1, 0), + ( 7,2, 50, 400, '1401-6-1', 1, 0), + ( 8,1, 30, 500, '1401-6-1', 12, 5), + ( 9,3, 30, 500, '1401-6-1', 12, 5), + ( 10,3, 30, 600, '1401-6-1', 12, 5), + ( 11,4, 40, 700, '1401-6-1', 1, 1), + ( 12,4, 40, 800, '1401-6-1', 1, 1); +-- ow_util +insert into ow_util values + (1), + (20), + (300); +-- end_ignore +set datestyle="ISO, MDY"; +-- ROW_NUMBER() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc); -- mvd 2->4; + vn | cn | pn | to_char +----+----+-----+------------------- + 10 | 1 | 200 | 1.0000000 + 20 | 1 | 100 | 2.0000000 + 30 | 1 | 300 | 3.0000000 + 30 | 1 | 500 | 4.0000000 + 50 | 1 | 400 | 5.0000000 + 40 | 2 | 100 | 6.0000000 + 50 | 2 | 400 | 7.0000000 + 30 | 3 | 600 | 8.0000000 + 40 | 3 | 200 | 9.0000000 + 30 | 3 | 500 | 10.0000000 + 40 | 4 | 700 | 11.0000000 + 40 | 4 | 800 | 12.0000000 +(12 rows) + +-- ROW_NUMBER() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'),ow_sale.vn +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.pn desc,ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.pn desc,ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc,ow_sale.vn desc); -- mvd 6,2->5; 6,2->7; 6,2->8; 6,2->9; + cn | pn | qty | qty | to_char | vn | to_char | to_char | to_char +----+-----+------+------+-------------------+----+-------------------+-------------------+------------------- + 4 | 800 | 1 | 1 | 1.0000000 | 40 | 1.0000000 | 1.0000000 | 1.0000000 + 4 | 700 | 1 | 1 | 2.0000000 | 40 | 2.0000000 | 2.0000000 | 2.0000000 + 3 | 600 | 12 | 12 | 3.0000000 | 30 | 3.0000000 | 3.0000000 | 3.0000000 + 1 | 500 | 12 | 12 | 4.0000000 | 30 | 4.0000000 | 4.0000000 | 4.0000000 + 3 | 500 | 12 | 12 | 5.0000000 | 30 | 5.0000000 | 5.0000000 | 5.0000000 + 1 | 400 | 1 | 1 | 6.0000000 | 50 | 6.0000000 | 6.0000000 | 6.0000000 + 2 | 400 | 1 | 1 | 7.0000000 | 50 | 7.0000000 | 7.0000000 | 7.0000000 + 1 | 300 | 1 | 1 | 8.0000000 | 30 | 8.0000000 | 8.0000000 | 8.0000000 + 3 | 200 | 1 | 1 | 9.0000000 | 40 | 9.0000000 | 9.0000000 | 9.0000000 + 1 | 200 | 1 | 1 | 10.0000000 | 10 | 10.0000000 | 10.0000000 | 10.0000000 + 2 | 100 | 1100 | 1100 | 11.0000000 | 40 | 11.0000000 | 11.0000000 | 11.0000000 + 1 | 100 | 1 | 1 | 12.0000000 | 20 | 12.0000000 | 12.0000000 | 12.0000000 +(12 rows) + +-- ROW_NUMBER() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.pn desc); -- mvd 4,1,5,2->3; + cn | pn | to_char | dt | vn +----+-----+-------------------+------------+---- + 1 | 200 | 1.0000000 | 1401-03-01 | 10 + 1 | 100 | 1.0000000 | 1401-05-01 | 20 + 2 | 400 | 1.0000000 | 1401-06-01 | 50 + 3 | 200 | 1.0000000 | 1401-04-01 | 40 + 3 | 600 | 1.0000000 | 1401-06-01 | 30 + 4 | 800 | 1.0000000 | 1401-06-01 | 40 + 1 | 300 | 1.0000000 | 1401-05-02 | 30 + 1 | 500 | 1.0000000 | 1401-06-01 | 30 + 1 | 400 | 1.0000000 | 1401-06-01 | 50 + 2 | 100 | 1.0000000 | 1401-01-01 | 40 + 3 | 500 | 1.0000000 | 1401-06-01 | 30 + 4 | 700 | 1.0000000 | 1401-06-01 | 40 +(12 rows) + +-- ROW_NUMBER() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.vn order by ow_sale.pn desc,ow_sale.vn desc,ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.vn order by ow_sale.pn desc,ow_sale.vn desc,ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.vn order by ow_sale.pn desc,ow_sale.vn desc,ow_sale.vn asc); -- mvd 2,7,3,8->6; 2,7,3,8->9; 2,7,3,8->10; 2,7,3,8->11; 2,7,3,8->12; 2,7,3,8->13; + prc | dt | vn | prc | dt | to_char | cn | pn | to_char | to_char | to_char | to_char | to_char +------+------------+----+------+------------+-------------------+----+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 0 | 1401-03-01 | 10 | 0 | 1401-03-01 | 1.0000000 | 1 | 200 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 0 | 1401-05-01 | 20 | 0 | 1401-05-01 | 1.0000000 | 1 | 100 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 0 | 1401-06-01 | 50 | 0 | 1401-06-01 | 1.0000000 | 2 | 400 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 0 | 1401-04-01 | 40 | 0 | 1401-04-01 | 1.0000000 | 3 | 200 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 5 | 1401-06-01 | 30 | 5 | 1401-06-01 | 1.0000000 | 3 | 600 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 1401-06-01 | 40 | 1 | 1401-06-01 | 1.0000000 | 4 | 800 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 0 | 1401-05-02 | 30 | 0 | 1401-05-02 | 1.0000000 | 1 | 300 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 0 | 1401-06-01 | 50 | 0 | 1401-06-01 | 1.0000000 | 1 | 400 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 5 | 1401-06-01 | 30 | 5 | 1401-06-01 | 1.0000000 | 1 | 500 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 2400 | 1401-01-01 | 40 | 2400 | 1401-01-01 | 1.0000000 | 2 | 100 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 5 | 1401-06-01 | 30 | 5 | 1401-06-01 | 1.0000000 | 3 | 500 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 1401-06-01 | 40 | 1 | 1401-06-01 | 1.0000000 | 4 | 700 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- DENSE_RANK() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc,ow_sale.cn asc); -- mvd 2,5->4; + vn | cn | cn | to_char | pn +----+----+----+-------------------+----- + 20 | 1 | 1 | 1.0000000 | 100 + 40 | 2 | 2 | 2.0000000 | 100 + 10 | 1 | 1 | 3.0000000 | 200 + 40 | 3 | 3 | 4.0000000 | 200 + 30 | 1 | 1 | 5.0000000 | 300 + 50 | 1 | 1 | 6.0000000 | 400 + 50 | 2 | 2 | 7.0000000 | 400 + 30 | 1 | 1 | 8.0000000 | 500 + 30 | 3 | 3 | 9.0000000 | 500 + 30 | 3 | 3 | 10.0000000 | 600 + 40 | 4 | 4 | 11.0000000 | 700 + 40 | 4 | 4 | 12.0000000 | 800 +(12 rows) + +-- DENSE_RANK() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc); -- mvd 2->4; 2->5; 2->6; 2->7; 2->8; + qty | vn | vn | to_char | to_char | to_char | to_char | to_char +------+----+----+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | 50 | 50 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 50 | 50 | 1.0000000 | 1.0000000 | 1.0000000 | 2.0000000 | 2.0000000 + 1100 | 40 | 40 | 2.0000000 | 2.0000000 | 2.0000000 | 3.0000000 | 3.0000000 + 1 | 40 | 40 | 2.0000000 | 2.0000000 | 2.0000000 | 4.0000000 | 4.0000000 + 1 | 40 | 40 | 2.0000000 | 2.0000000 | 2.0000000 | 5.0000000 | 5.0000000 + 1 | 40 | 40 | 2.0000000 | 2.0000000 | 2.0000000 | 6.0000000 | 6.0000000 + 12 | 30 | 30 | 3.0000000 | 3.0000000 | 3.0000000 | 7.0000000 | 7.0000000 + 1 | 30 | 30 | 3.0000000 | 3.0000000 | 3.0000000 | 8.0000000 | 8.0000000 + 12 | 30 | 30 | 3.0000000 | 3.0000000 | 3.0000000 | 9.0000000 | 9.0000000 + 12 | 30 | 30 | 3.0000000 | 3.0000000 | 3.0000000 | 10.0000000 | 10.0000000 + 1 | 20 | 20 | 4.0000000 | 4.0000000 | 4.0000000 | 11.0000000 | 11.0000000 + 1 | 10 | 10 | 5.0000000 | 5.0000000 | 5.0000000 | 12.0000000 | 12.0000000 +(12 rows) + +-- DENSE_RANK() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.pn order by ow_sale.cn desc,ow_sale.cn asc); -- mvd 4,5,6,1->3; + pn | prc | to_char | cn | dt | qty +-----+------+-------------------+----+------------+------ + 100 | 0 | 1.0000000 | 1 | 1401-05-01 | 1 + 200 | 0 | 1.0000000 | 3 | 1401-04-01 | 1 + 300 | 0 | 1.0000000 | 1 | 1401-05-02 | 1 + 400 | 0 | 1.0000000 | 2 | 1401-06-01 | 1 + 400 | 0 | 2.0000000 | 1 | 1401-06-01 | 1 + 600 | 5 | 1.0000000 | 3 | 1401-06-01 | 12 + 800 | 1 | 1.0000000 | 4 | 1401-06-01 | 1 + 100 | 2400 | 1.0000000 | 2 | 1401-01-01 | 1100 + 200 | 0 | 1.0000000 | 1 | 1401-03-01 | 1 + 500 | 5 | 1.0000000 | 3 | 1401-06-01 | 12 + 500 | 5 | 2.0000000 | 1 | 1401-06-01 | 12 + 700 | 1 | 1.0000000 | 4 | 1401-06-01 | 1 +(12 rows) + +-- DENSE_RANK() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn desc); -- mvd 3,4,5,1->2; 3,4,5,1->6; 3,4,5,1->7; 3,4,5,1->8; 3,4,5,1->9; 3,4,5,1->10; + pn | to_char | dt | cn | vn | to_char | to_char | to_char | to_char | to_char +-----+-------------------+------------+----+----+-------------------+-------------------+-------------------+-------------------+------------------- + 100 | 1.0000000 | 1401-05-01 | 1 | 20 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 400 | 1.0000000 | 1401-06-01 | 2 | 50 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 200 | 1.0000000 | 1401-04-01 | 3 | 40 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 800 | 1.0000000 | 1401-06-01 | 4 | 40 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 700 | 2.0000000 | 1401-06-01 | 4 | 40 | 2.0000000 | 2.0000000 | 2.0000000 | 2.0000000 | 2.0000000 + 200 | 1.0000000 | 1401-03-01 | 1 | 10 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 300 | 1.0000000 | 1401-05-02 | 1 | 30 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 500 | 1.0000000 | 1401-06-01 | 1 | 30 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 400 | 1.0000000 | 1401-06-01 | 1 | 50 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 100 | 1.0000000 | 1401-01-01 | 2 | 40 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 600 | 1.0000000 | 1401-06-01 | 3 | 30 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 500 | 2.0000000 | 1401-06-01 | 3 | 30 | 2.0000000 | 2.0000000 | 2.0000000 | 2.0000000 | 2.0000000 +(12 rows) + +-- RANK() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(RANK() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc); -- mvd 1->5; + vn | cn | qty | cn | to_char +----+----+------+----+------------------- + 50 | 2 | 1 | 2 | 1.0000000 + 50 | 1 | 1 | 1 | 1.0000000 + 40 | 2 | 1100 | 2 | 3.0000000 + 40 | 4 | 1 | 4 | 3.0000000 + 40 | 3 | 1 | 3 | 3.0000000 + 40 | 4 | 1 | 4 | 3.0000000 + 30 | 3 | 12 | 3 | 7.0000000 + 30 | 1 | 1 | 1 | 7.0000000 + 30 | 1 | 12 | 1 | 7.0000000 + 30 | 3 | 12 | 3 | 7.0000000 + 20 | 1 | 1 | 1 | 11.0000000 + 10 | 1 | 1 | 1 | 12.0000000 +(12 rows) + +-- RANK() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(RANK() OVER(win1),0),'99999999.9999999'),ow_sale.cn +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc,ow_sale.cn desc); -- mvd 5->4; 5->6; + pn | pn | vn | to_char | cn | to_char +-----+-----+----+-------------------+----+------------------- + 200 | 200 | 10 | 1.0000000 | 1 | 1.0000000 + 100 | 100 | 20 | 1.0000000 | 1 | 1.0000000 + 300 | 300 | 30 | 1.0000000 | 1 | 1.0000000 + 500 | 500 | 30 | 1.0000000 | 1 | 1.0000000 + 400 | 400 | 50 | 1.0000000 | 1 | 1.0000000 + 100 | 100 | 40 | 6.0000000 | 2 | 2.0000000 + 400 | 400 | 50 | 6.0000000 | 2 | 2.0000000 + 600 | 600 | 30 | 8.0000000 | 3 | 3.0000000 + 200 | 200 | 40 | 8.0000000 | 3 | 3.0000000 + 500 | 500 | 30 | 8.0000000 | 3 | 3.0000000 + 700 | 700 | 40 | 11.0000000 | 4 | 4.0000000 + 800 | 800 | 40 | 11.0000000 | 4 | 4.0000000 +(12 rows) + +-- RANK() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(RANK() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.pn desc,ow_sale.vn desc); -- mvd 2,1,3->4; + vn | dt | pn | to_char +----+------------+-----+------------------- + 10 | 1401-03-01 | 200 | 1.0000000 + 30 | 1401-05-02 | 300 | 1.0000000 + 40 | 1401-06-01 | 800 | 1.0000000 + 40 | 1401-06-01 | 700 | 2.0000000 + 30 | 1401-06-01 | 600 | 3.0000000 + 30 | 1401-06-01 | 500 | 4.0000000 + 30 | 1401-06-01 | 500 | 4.0000000 + 50 | 1401-06-01 | 400 | 6.0000000 + 50 | 1401-06-01 | 400 | 6.0000000 + 40 | 1401-01-01 | 100 | 1.0000000 + 40 | 1401-04-01 | 200 | 1.0000000 + 20 | 1401-05-01 | 100 | 1.0000000 +(12 rows) + +-- RANK() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(RANK() OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.dt order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.dt order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn asc); -- mvd 3,6->7; 3,6->8; 3,6->9; 3,6->10; + qty | qty | dt | qty | qty | vn | to_char | to_char | to_char | to_char +------+------+------------+------+------+----+-------------------+-------------------+-------------------+------------------- + 1 | 1 | 1401-03-01 | 1 | 1 | 10 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 1401-05-02 | 1 | 1 | 30 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 12 | 12 | 1401-06-01 | 12 | 12 | 30 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 12 | 12 | 1401-06-01 | 12 | 12 | 30 | 1.0000000 | 2.0000000 | 1.0000000 | 1.0000000 + 12 | 12 | 1401-06-01 | 12 | 12 | 30 | 1.0000000 | 3.0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 1401-06-01 | 1 | 1 | 40 | 4.0000000 | 4.0000000 | 4.0000000 | 2.0000000 + 1 | 1 | 1401-06-01 | 1 | 1 | 40 | 4.0000000 | 5.0000000 | 4.0000000 | 2.0000000 + 1 | 1 | 1401-06-01 | 1 | 1 | 50 | 6.0000000 | 6.0000000 | 6.0000000 | 3.0000000 + 1 | 1 | 1401-06-01 | 1 | 1 | 50 | 6.0000000 | 7.0000000 | 6.0000000 | 3.0000000 + 1100 | 1100 | 1401-01-01 | 1100 | 1100 | 40 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 1401-04-01 | 1 | 1 | 40 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 1401-05-01 | 1 | 1 | 20 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- CUME_DIST() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc,ow_sale.vn asc); -- mvd 5,3->4; + qty | prc | vn | to_char | cn +------+------+----+-------------------+---- + 1 | 1 | 40 | .1666667 | 4 + 1 | 1 | 40 | .1666667 | 4 + 12 | 5 | 30 | .3333333 | 3 + 12 | 5 | 30 | .3333333 | 3 + 1 | 0 | 40 | .4166667 | 3 + 1100 | 2400 | 40 | .5000000 | 2 + 1 | 0 | 50 | .5833333 | 2 + 1 | 0 | 10 | .6666667 | 1 + 1 | 0 | 20 | .7500000 | 1 + 1 | 0 | 30 | .9166667 | 1 + 12 | 5 | 30 | .9166667 | 1 + 1 | 0 | 50 | 1.0000000 | 1 +(12 rows) + +-- CUME_DIST() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc,ow_sale.cn desc); -- mvd 1->3; 1->4; + cn | qty | to_char | to_char +----+------+-------------------+------------------- + 4 | 1 | .1666667 | 1.0000000 + 4 | 1 | .1666667 | 1.0000000 + 3 | 12 | .4166667 | 2.0000000 + 3 | 12 | .4166667 | 2.0000000 + 3 | 1 | .4166667 | 2.0000000 + 2 | 1 | .5833333 | 3.0000000 + 2 | 1100 | .5833333 | 3.0000000 + 1 | 1 | 1.0000000 | 4.0000000 + 1 | 12 | 1.0000000 | 4.0000000 + 1 | 1 | 1.0000000 | 4.0000000 + 1 | 1 | 1.0000000 | 4.0000000 + 1 | 1 | 1.0000000 | 4.0000000 +(12 rows) + +-- CUME_DIST() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.qty, TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.dt order by ow_sale.cn desc,ow_sale.cn asc); -- mvd 3,4->2; + qty | to_char | cn | dt +------+-------------------+----+------------ + 1100 | 1.0000000 | 2 | 1401-01-01 + 1 | 1.0000000 | 1 | 1401-03-01 + 1 | 1.0000000 | 1 | 1401-05-02 + 1 | 1.0000000 | 1 | 1401-06-01 + 12 | 1.0000000 | 1 | 1401-06-01 + 12 | 1.0000000 | 3 | 1401-06-01 + 12 | 1.0000000 | 3 | 1401-06-01 + 1 | 1.0000000 | 3 | 1401-04-01 + 1 | 1.0000000 | 1 | 1401-05-01 + 1 | 1.0000000 | 2 | 1401-06-01 + 1 | 1.0000000 | 4 | 1401-06-01 + 1 | 1.0000000 | 4 | 1401-06-01 +(12 rows) + +-- CUME_DIST() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.pn +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.dt order by ow_sale.vn desc); -- mvd 3,4,5,1,6->2; 3,4,5,1,6->7; + vn | to_char | prc | dt | cn | pn | to_char +----+-------------------+------+------------+----+-----+------------------- + 10 | 1.0000000 | 0 | 1401-03-01 | 1 | 200 | 1.0000000 + 50 | 1.0000000 | 0 | 1401-06-01 | 2 | 400 | 1.0000000 + 40 | 1.0000000 | 2400 | 1401-01-01 | 2 | 100 | 1.0000000 + 30 | 1.0000000 | 5 | 1401-06-01 | 3 | 600 | 1.0000000 + 40 | 1.0000000 | 1 | 1401-06-01 | 4 | 700 | 1.0000000 + 20 | 1.0000000 | 0 | 1401-05-01 | 1 | 100 | 1.0000000 + 30 | 1.0000000 | 0 | 1401-05-02 | 1 | 300 | 1.0000000 + 50 | 1.0000000 | 0 | 1401-06-01 | 1 | 400 | 1.0000000 + 30 | 1.0000000 | 5 | 1401-06-01 | 1 | 500 | 1.0000000 + 40 | 1.0000000 | 0 | 1401-04-01 | 3 | 200 | 1.0000000 + 30 | 1.0000000 | 5 | 1401-06-01 | 3 | 500 | 1.0000000 + 40 | 1.0000000 | 1 | 1401-06-01 | 4 | 800 | 1.0000000 +(12 rows) + +-- PERCENT_RANK() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc,ow_sale.vn desc); -- mvd 7->6; + pn | cn | pn | pn | prc | to_char | vn +-----+----+-----+-----+------+-------------------+---- + 200 | 1 | 200 | 200 | 0 | .0000000 | 10 + 100 | 1 | 100 | 100 | 0 | .0909091 | 20 + 600 | 3 | 600 | 600 | 5 | .1818182 | 30 + 300 | 1 | 300 | 300 | 0 | .1818182 | 30 + 500 | 1 | 500 | 500 | 5 | .1818182 | 30 + 500 | 3 | 500 | 500 | 5 | .1818182 | 30 + 100 | 2 | 100 | 100 | 2400 | .5454545 | 40 + 700 | 4 | 700 | 700 | 1 | .5454545 | 40 + 200 | 3 | 200 | 200 | 0 | .5454545 | 40 + 800 | 4 | 800 | 800 | 1 | .5454545 | 40 + 400 | 2 | 400 | 400 | 0 | .9090909 | 50 + 400 | 1 | 400 | 400 | 0 | .9090909 | 50 +(12 rows) + +-- PERCENT_RANK() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc); -- mvd 1->2; 1->3; 1->4; 1->5; + pn | to_char | to_char | to_char | to_char +-----+-------------------+-------------------+-------------------+------------------- + 800 | .0000000 | .0000000 | .0000000 | 1.0000000 + 700 | .0909091 | .0909091 | .0909091 | 2.0000000 + 600 | .1818182 | .1818182 | .1818182 | 3.0000000 + 500 | .2727273 | .2727273 | .2727273 | 4.0000000 + 500 | .2727273 | .2727273 | .2727273 | 4.0000000 + 400 | .4545455 | .4545455 | .4545455 | 6.0000000 + 400 | .4545455 | .4545455 | .4545455 | 6.0000000 + 300 | .6363636 | .6363636 | .6363636 | 8.0000000 + 200 | .7272727 | .7272727 | .7272727 | 9.0000000 + 200 | .7272727 | .7272727 | .7272727 | 9.0000000 + 100 | .9090909 | .9090909 | .9090909 | 11.0000000 + 100 | .9090909 | .9090909 | .9090909 | 11.0000000 +(12 rows) + +-- PERCENT_RANK() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.prc, TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc,ow_sale.vn,ow_sale.dt order by ow_sale.cn asc); -- mvd 1,3,4,5->2; + prc | to_char | dt | cn | vn +------+-------------------+------------+----+---- + 0 | .0000000 | 1401-03-01 | 1 | 10 + 0 | .0000000 | 1401-05-02 | 1 | 30 + 0 | .0000000 | 1401-06-01 | 1 | 50 + 5 | .0000000 | 1401-06-01 | 1 | 30 + 2400 | .0000000 | 1401-01-01 | 2 | 40 + 5 | .0000000 | 1401-06-01 | 3 | 30 + 5 | .0000000 | 1401-06-01 | 3 | 30 + 1 | .0000000 | 1401-06-01 | 4 | 40 + 1 | .0000000 | 1401-06-01 | 4 | 40 + 0 | .0000000 | 1401-05-01 | 1 | 20 + 0 | .0000000 | 1401-06-01 | 2 | 50 + 0 | .0000000 | 1401-04-01 | 3 | 40 +(12 rows) + +-- PERCENT_RANK() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999'),ow_sale.pn +, +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.qty,ow_sale.qty,ow_sale.dt order by ow_sale.cn desc,ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.dt order by ow_sale.cn desc,ow_sale.pn desc); -- mvd 1,4,2,8->7; 1,4,2,8->9; + cn | qty | qty | dt | cn | qty | to_char | pn | to_char +----+------+------+------------+----+------+-------------------+-----+------------------- + 1 | 1 | 1 | 1401-03-01 | 1 | 1 | .0000000 | 200 | 1.0000000 + 1 | 1 | 1 | 1401-05-02 | 1 | 1 | .0000000 | 300 | 1.0000000 + 4 | 1 | 1 | 1401-06-01 | 4 | 1 | .0000000 | 800 | .2500000 + 4 | 1 | 1 | 1401-06-01 | 4 | 1 | .3333333 | 700 | .5000000 + 2 | 1 | 1 | 1401-06-01 | 2 | 1 | .6666667 | 400 | .7500000 + 1 | 1 | 1 | 1401-06-01 | 1 | 1 | 1.0000000 | 400 | 1.0000000 + 2 | 1100 | 1100 | 1401-01-01 | 2 | 1100 | .0000000 | 100 | 1.0000000 + 3 | 1 | 1 | 1401-04-01 | 3 | 1 | .0000000 | 200 | 1.0000000 + 1 | 1 | 1 | 1401-05-01 | 1 | 1 | .0000000 | 100 | 1.0000000 + 3 | 12 | 12 | 1401-06-01 | 3 | 12 | .0000000 | 600 | .3333333 + 3 | 12 | 12 | 1401-06-01 | 3 | 12 | .5000000 | 500 | .6666667 + 1 | 12 | 12 | 1401-06-01 | 1 | 12 | 1.0000000 | 500 | 1.0000000 +(12 rows) + +-- LAG() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn+ow_sale.prc) as int),NULL) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc); -- mvd 7,4->6; + prc | vn | dt | pn | vn | to_char | cn +------+----+------------+-----+----+-------------------+---- + 2400 | 40 | 1401-01-01 | 100 | 40 | .0000000 | 2 + 0 | 10 | 1401-03-01 | 200 | 10 | .0000000 | 1 + 0 | 40 | 1401-04-01 | 200 | 40 | .0000000 | 3 + 0 | 20 | 1401-05-01 | 100 | 20 | .0000000 | 1 + 0 | 30 | 1401-05-02 | 300 | 30 | .0000000 | 1 + 0 | 50 | 1401-06-01 | 400 | 50 | .0000000 | 1 + 0 | 50 | 1401-06-01 | 400 | 50 | .0000000 | 2 + 5 | 30 | 1401-06-01 | 500 | 30 | .0000000 | 1 + 5 | 30 | 1401-06-01 | 500 | 30 | .0000000 | 3 + 5 | 30 | 1401-06-01 | 600 | 30 | .0000000 | 3 + 1 | 40 | 1401-06-01 | 700 | 40 | .0000000 | 4 + 1 | 40 | 1401-06-01 | 800 | 40 | .0000000 | 4 +(12 rows) + +-- LAG() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc), +win2 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn desc); -- mvd 3->5; 3->6; 3->7; 3->8; 10,3->9; + qty | prc | pn | prc | to_char | to_char | to_char | to_char | to_char | cn +------+------+-----+------+-------------------+-------------------+-------------------+-------------------+-------------------+---- + 1100 | 2400 | 100 | 2400 | .0000000 | .0000000 | .0833333 | 1.0000000 | .0000000 | 2 + 1 | 0 | 200 | 0 | .0000000 | .0909091 | .1666667 | 2.0000000 | 1.0000000 | 1 + 1 | 0 | 200 | 0 | .0000000 | .1818182 | .2500000 | 3.0000000 | 3.0000000 | 3 + 1 | 0 | 100 | 0 | .0000000 | .2727273 | .3333333 | 4.0000000 | 1.0000000 | 1 + 1 | 0 | 300 | 0 | .0000000 | .3636364 | .4166667 | 5.0000000 | 1.0000000 | 1 + 1 | 0 | 400 | 0 | .0000000 | .4545455 | .5000000 | 6.0000000 | 1.0000000 | 1 + 1 | 0 | 400 | 0 | .0000000 | .5454545 | .5833333 | 7.0000000 | 2.0000000 | 2 + 12 | 5 | 500 | 5 | .0000000 | .6363636 | .6666667 | 8.0000000 | .0000000 | 1 + 12 | 5 | 500 | 5 | .0000000 | .7272727 | .7500000 | 9.0000000 | .0000000 | 3 + 12 | 5 | 600 | 5 | .0000000 | .8181818 | .8333333 | 10.0000000 | .0000000 | 3 + 1 | 1 | 700 | 1 | .0000000 | .9090909 | .9166667 | 11.0000000 | .0000000 | 4 + 1 | 1 | 800 | 1 | .0000000 | 1.0000000 | 1.0000000 | 12.0000000 | 4.0000000 | 4 +(12 rows) + +-- LAG() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc); -- mvd 2,4->3; + prc | vn | to_char | pn +------+----+-------------------+----- + 0 | 10 | .0000000 | 200 + 0 | 20 | .0000000 | 100 + 0 | 30 | .0000000 | 300 + 5 | 30 | .0000000 | 500 + 5 | 30 | .0000000 | 500 + 5 | 30 | .0000000 | 600 + 2400 | 40 | .0000000 | 100 + 0 | 40 | .0000000 | 200 + 1 | 40 | .0000000 | 700 + 1 | 40 | .0000000 | 800 + 0 | 50 | .0000000 | 400 + 0 | 50 | .0000000 | 400 +(12 rows) + +-- LAG() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn-ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win1),0),'99999999.9999999'),ow_sale.vn +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,1->2; 3,1->4; 3,1->5; 3,1->6; 3,1->7; + pn | to_char | vn | to_char | to_char | to_char | to_char +-----+-------------------+----+-------------------+-------------------+-------------------+------------------- + 100 | .0000000 | 20 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 100 | .0000000 | 40 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 200 | .0000000 | 10 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 200 | .0000000 | 40 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 600 | .0000000 | 30 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 700 | .0000000 | 40 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 300 | .0000000 | 30 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 400 | .0000000 | 50 | 1.0000000 | 1.0000000 | 1.0000000 | .5000000 + 400 | .0000000 | 50 | 2.0000000 | 2.0000000 | 2.0000000 | 1.0000000 + 500 | .0000000 | 30 | 1.0000000 | 1.0000000 | 1.0000000 | .5000000 + 500 | .0000000 | 30 | 2.0000000 | 2.0000000 | 2.0000000 | 1.0000000 + 800 | .0000000 | 40 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- LEAD() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty*ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.prc) as int),cast (floor(ow_sale.vn-ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 5,3->6; 3->7; 3->8; 5,3->9; 3->10; + qty | dt | pn | qty | vn | to_char | to_char | to_char | to_char | to_char +------+------------+-----+------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 1100 | 1401-01-01 | 100 | 1100 | 40 | .0000000 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 1401-03-01 | 200 | 1 | 10 | .0000000 | 2.0000000 | 2.0000000 | 2.0000000 | 2.0000000 + 1 | 1401-04-01 | 200 | 1 | 40 | .0000000 | .0000000 | 3.0000000 | 3.0000000 | 3.0000000 + 1 | 1401-05-01 | 100 | 1 | 20 | .0000000 | .0000000 | 4.0000000 | 4.0000000 | 4.0000000 + 1 | 1401-05-02 | 300 | 1 | 30 | .0000000 | .0000000 | 5.0000000 | 5.0000000 | 5.0000000 + 1 | 1401-06-01 | 400 | 1 | 50 | .0000000 | .0000000 | 6.0000000 | 6.0000000 | 6.0000000 + 1 | 1401-06-01 | 400 | 1 | 50 | .0000000 | .0000000 | 7.0000000 | 7.0000000 | 7.0000000 + 12 | 1401-06-01 | 500 | 12 | 30 | .0000000 | .0000000 | 8.0000000 | 8.0000000 | 8.0000000 + 12 | 1401-06-01 | 500 | 12 | 30 | .0000000 | .0000000 | 9.0000000 | 9.0000000 | 9.0000000 + 12 | 1401-06-01 | 600 | 12 | 30 | .0000000 | .0000000 | 10.0000000 | 10.0000000 | 10.0000000 + 1 | 1401-06-01 | 700 | 1 | 40 | .0000000 | .0000000 | 11.0000000 | 11.0000000 | 11.0000000 + 1 | 1401-06-01 | 800 | 1 | 40 | .0000000 | .0000000 | 12.0000000 | 12.0000000 | 12.0000000 +(12 rows) + +-- LEAD() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.pn asc); -- mvd 5,1->4; + pn | dt | dt | to_char | prc +-----+------------+------------+-------------------+------ + 300 | 1401-05-02 | 1401-05-02 | 600.0000000 | 0 + 400 | 1401-06-01 | 1401-06-01 | 800.0000000 | 0 + 400 | 1401-06-01 | 1401-06-01 | 800.0000000 | 0 + 500 | 1401-06-01 | 1401-06-01 | .0000000 | 5 + 500 | 1401-06-01 | 1401-06-01 | .0000000 | 5 + 700 | 1401-06-01 | 1401-06-01 | .0000000 | 1 + 100 | 1401-05-01 | 1401-05-01 | 200.0000000 | 0 + 100 | 1401-01-01 | 1401-01-01 | .0000000 | 2400 + 200 | 1401-03-01 | 1401-03-01 | 400.0000000 | 0 + 200 | 1401-04-01 | 1401-04-01 | 400.0000000 | 0 + 600 | 1401-06-01 | 1401-06-01 | .0000000 | 5 + 800 | 1401-06-01 | 1401-06-01 | .0000000 | 1 +(12 rows) + +-- LEAD() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn/ow_sale.qty) as int),NULL) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc), +win2 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 2,4,5->3; 2,4,5->6; 4->7; + qty | cn | to_char | vn | pn | to_char | to_char +------+----+-------------------+----+-----+-------------------+------------------- + 1100 | 2 | 40.0000000 | 40 | 100 | 1.0000000 | .0000000 + 1 | 1 | .0000000 | 10 | 200 | 1.0000000 | 1.0000000 + 1 | 3 | .0000000 | 40 | 200 | 2.0000000 | .0000000 + 1 | 1 | .0000000 | 20 | 100 | 1.0000000 | .0000000 + 1 | 1 | 30.0000000 | 30 | 300 | 1.0000000 | .0000000 + 1 | 1 | 50.0000000 | 50 | 400 | 1.0000000 | .0000000 + 1 | 2 | .0000000 | 50 | 400 | 2.0000000 | .0000000 + 12 | 1 | 30.0000000 | 30 | 500 | 2.0000000 | .0000000 + 12 | 3 | 30.0000000 | 30 | 500 | 3.0000000 | .0000000 + 12 | 3 | 30.0000000 | 30 | 600 | 4.0000000 | .0000000 + 1 | 4 | .0000000 | 40 | 700 | 3.0000000 | .0000000 + 1 | 4 | .0000000 | 40 | 800 | 4.0000000 | .0000000 +(12 rows) + +-- COUNT() function with NULL OVER() clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (); -- mvd 7->7; + cn | cn | cn | pn | dt | qty | to_char +----+----+----+-----+------------+------+------------------- + 2 | 2 | 2 | 400 | 1401-06-01 | 1 | 12.0000000 + 4 | 4 | 4 | 800 | 1401-06-01 | 1 | 12.0000000 + 1 | 1 | 1 | 100 | 1401-05-01 | 1 | 12.0000000 + 1 | 1 | 1 | 200 | 1401-03-01 | 1 | 12.0000000 + 3 | 3 | 3 | 200 | 1401-04-01 | 1 | 12.0000000 + 3 | 3 | 3 | 600 | 1401-06-01 | 12 | 12.0000000 + 1 | 1 | 1 | 300 | 1401-05-02 | 1 | 12.0000000 + 1 | 1 | 1 | 400 | 1401-06-01 | 1 | 12.0000000 + 1 | 1 | 1 | 500 | 1401-06-01 | 12 | 12.0000000 + 3 | 3 | 3 | 500 | 1401-06-01 | 12 | 12.0000000 + 2 | 2 | 2 | 100 | 1401-01-01 | 1100 | 12.0000000 + 4 | 4 | 4 | 700 | 1401-06-01 | 1 | 12.0000000 +(12 rows) + +-- COUNT() function with NULL OVER() clause in combination with other window functions -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (), +win2 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.dt order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 4->4; 1,2,6,7->5; 9->8; + dt | cn | dt | to_char | to_char | qty | pn | to_char | vn +------------+----+------------+-------------------+-------------------+------+-----+-------------------+---- + 1401-01-01 | 2 | 1401-01-01 | 12.0000000 | 1.0000000 | 1100 | 100 | .0000000 | 40 + 1401-03-01 | 1 | 1401-03-01 | 12.0000000 | 1.0000000 | 1 | 200 | .0000000 | 10 + 1401-04-01 | 3 | 1401-04-01 | 12.0000000 | 1.0000000 | 1 | 200 | .0000000 | 40 + 1401-05-01 | 1 | 1401-05-01 | 12.0000000 | 1.0000000 | 1 | 100 | .0000000 | 20 + 1401-05-02 | 1 | 1401-05-02 | 12.0000000 | 1.0000000 | 1 | 300 | .0000000 | 30 + 1401-06-01 | 1 | 1401-06-01 | 12.0000000 | 1.0000000 | 1 | 400 | .0000000 | 50 + 1401-06-01 | 2 | 1401-06-01 | 12.0000000 | 1.0000000 | 1 | 400 | .0000000 | 50 + 1401-06-01 | 1 | 1401-06-01 | 12.0000000 | 1.0000000 | 12 | 500 | .0000000 | 30 + 1401-06-01 | 3 | 1401-06-01 | 12.0000000 | 1.0000000 | 12 | 500 | .0000000 | 30 + 1401-06-01 | 3 | 1401-06-01 | 12.0000000 | 2.0000000 | 12 | 600 | .0000000 | 30 + 1401-06-01 | 4 | 1401-06-01 | 12.0000000 | 1.0000000 | 1 | 700 | .0000000 | 40 + 1401-06-01 | 4 | 1401-06-01 | 12.0000000 | 2.0000000 | 1 | 800 | .0000000 | 40 +(12 rows) + +-- COUNT() function with OVER() clause having ONLY PARTITION BY -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.prc); -- mvd 4,6,7->5; + cn | dt | qty | prc | to_char | vn | pn +----+------------+------+------+-------------------+----+----- + 1 | 1401-05-02 | 1 | 0 | 1.0000000 | 30 | 300 + 1 | 1401-06-01 | 12 | 5 | 2.0000000 | 30 | 500 + 3 | 1401-06-01 | 12 | 5 | 2.0000000 | 30 | 500 + 4 | 1401-06-01 | 1 | 1 | 1.0000000 | 40 | 700 + 1 | 1401-06-01 | 1 | 0 | 2.0000000 | 50 | 400 + 2 | 1401-06-01 | 1 | 0 | 2.0000000 | 50 | 400 + 1 | 1401-03-01 | 1 | 0 | 1.0000000 | 10 | 200 + 1 | 1401-05-01 | 1 | 0 | 1.0000000 | 20 | 100 + 3 | 1401-06-01 | 12 | 5 | 1.0000000 | 30 | 600 + 2 | 1401-01-01 | 1100 | 2400 | 1.0000000 | 40 | 100 + 3 | 1401-04-01 | 1 | 0 | 1.0000000 | 40 | 200 + 4 | 1401-06-01 | 1 | 1 | 1.0000000 | 40 | 800 +(12 rows) + +-- COUNT() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn), +win2 as (partition by ow_sale.pn order by ow_sale.cn asc); -- mvd 2,3->5; 4,3->6; + prc | vn | pn | cn | to_char | to_char +------+----+-----+----+-------------------+------------------- + 0 | 30 | 300 | 1 | 1.0000000 | 1.0000000 + 0 | 50 | 400 | 1 | 2.0000000 | .5000000 + 0 | 50 | 400 | 2 | 2.0000000 | 1.0000000 + 5 | 30 | 500 | 1 | 2.0000000 | .5000000 + 5 | 30 | 500 | 3 | 2.0000000 | 1.0000000 + 1 | 40 | 800 | 4 | 1.0000000 | 1.0000000 + 0 | 20 | 100 | 1 | 1.0000000 | .5000000 + 2400 | 40 | 100 | 2 | 1.0000000 | 1.0000000 + 0 | 10 | 200 | 1 | 1.0000000 | .5000000 + 0 | 40 | 200 | 3 | 1.0000000 | 1.0000000 + 5 | 30 | 600 | 3 | 1.0000000 | 1.0000000 + 1 | 40 | 700 | 4 | 1.0000000 | 1.0000000 +(12 rows) + +-- COUNT() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc,ow_sale.vn asc); -- mvd 1,5->4; + cn | qty | cn | to_char | vn +----+------+----+-------------------+---- + 4 | 1 | 4 | 2.0000000 | 40 + 4 | 1 | 4 | 2.0000000 | 40 + 3 | 12 | 3 | 4.0000000 | 30 + 3 | 12 | 3 | 4.0000000 | 30 + 3 | 1 | 3 | 5.0000000 | 40 + 2 | 1100 | 2 | 6.0000000 | 40 + 2 | 1 | 2 | 7.0000000 | 50 + 1 | 1 | 1 | 8.0000000 | 10 + 1 | 1 | 1 | 9.0000000 | 20 + 1 | 1 | 1 | 11.0000000 | 30 + 1 | 12 | 1 | 11.0000000 | 30 + 1 | 1 | 1 | 12.0000000 | 50 +(12 rows) + +-- COUNT() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.vn asc,ow_sale.cn desc,ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc,ow_sale.cn desc,ow_sale.pn desc); -- mvd 1,2,3->5; 1,2,3->6; + cn | vn | pn | qty | to_char | to_char +----+----+-----+------+-------------------+------------------- + 1 | 10 | 200 | 1 | 1.0000000 | .0000000 + 1 | 20 | 100 | 1 | 2.0000000 | .0909091 + 3 | 30 | 600 | 12 | 3.0000000 | .1818182 + 3 | 30 | 500 | 12 | 4.0000000 | .2727273 + 1 | 30 | 500 | 12 | 5.0000000 | .3636364 + 1 | 30 | 300 | 1 | 6.0000000 | .4545455 + 4 | 40 | 800 | 1 | 7.0000000 | .5454545 + 4 | 40 | 700 | 1 | 8.0000000 | .6363636 + 3 | 40 | 200 | 1 | 9.0000000 | .7272727 + 2 | 40 | 100 | 1100 | 10.0000000 | .8181818 + 2 | 50 | 400 | 1 | 11.0000000 | .9090909 + 1 | 50 | 400 | 1 | 12.0000000 | 1.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range unbounded preceding ); -- mvd 1->5; + cn | cn | prc | qty | to_char +----+----+------+------+------------------- + 1 | 1 | 0 | 1 | 5.0000000 + 1 | 1 | 0 | 1 | 5.0000000 + 1 | 1 | 0 | 1 | 5.0000000 + 1 | 1 | 0 | 1 | 5.0000000 + 1 | 1 | 5 | 12 | 5.0000000 + 2 | 2 | 2400 | 1100 | 7.0000000 + 2 | 2 | 0 | 1 | 7.0000000 + 3 | 3 | 0 | 1 | 10.0000000 + 3 | 3 | 5 | 12 | 10.0000000 + 3 | 3 | 5 | 12 | 10.0000000 + 4 | 4 | 1 | 1 | 12.0000000 + 4 | 4 | 1 | 1 | 12.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn/ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range unbounded preceding ), +win2 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.pn desc), +win4 as (order by ow_sale.pn desc); -- mvd 4->3; 1,6->5; 4->7; 4->8; + cn | qty | to_char | pn | to_char | vn | to_char | to_char +----+------+-------------------+-----+-------------------+----+-------------------+------------------- + 4 | 1 | 1.0000000 | 800 | .0000000 | 40 | 1.0000000 | 1.0000000 + 4 | 1 | 2.0000000 | 700 | .0000000 | 40 | 2.0000000 | 2.0000000 + 3 | 12 | 3.0000000 | 600 | .0000000 | 30 | 3.0000000 | 3.0000000 + 3 | 12 | 5.0000000 | 500 | .0000000 | 30 | 4.0000000 | 4.0000000 + 1 | 12 | 5.0000000 | 500 | .0000000 | 30 | 4.0000000 | 4.0000000 + 1 | 1 | 7.0000000 | 400 | .0000000 | 50 | 6.0000000 | 5.0000000 + 2 | 1 | 7.0000000 | 400 | .0000000 | 50 | 6.0000000 | 5.0000000 + 1 | 1 | 8.0000000 | 300 | .0000000 | 30 | 8.0000000 | 6.0000000 + 1 | 1 | 10.0000000 | 200 | .0000000 | 10 | 9.0000000 | 7.0000000 + 3 | 1 | 10.0000000 | 200 | .0000000 | 40 | 9.0000000 | 7.0000000 + 2 | 1100 | 12.0000000 | 100 | .0000000 | 40 | 11.0000000 | 8.0000000 + 1 | 1 | 12.0000000 | 100 | .0000000 | 20 | 11.0000000 | 8.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range floor(ow_sale.qty) preceding ); -- mvd 1->5; + vn | qty | cn | cn | to_char +----+------+----+----+------------------- + 10 | 1 | 1 | 1 | 1.0000000 + 20 | 1 | 1 | 1 | 1.0000000 + 30 | 12 | 3 | 3 | 5.0000000 + 30 | 1 | 1 | 1 | 4.0000000 + 30 | 12 | 1 | 1 | 5.0000000 + 30 | 12 | 3 | 3 | 5.0000000 + 40 | 1100 | 2 | 2 | 10.0000000 + 40 | 1 | 4 | 4 | 4.0000000 + 40 | 1 | 3 | 3 | 4.0000000 + 40 | 1 | 4 | 4 | 4.0000000 + 50 | 1 | 2 | 2 | 2.0000000 + 50 | 1 | 1 | 1 | 2.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ); -- mvd 1->4; + cn | vn | vn | to_char +----+----+----+------------------- + 4 | 40 | 40 | 2.0000000 + 4 | 40 | 40 | 2.0000000 + 3 | 30 | 30 | 3.0000000 + 3 | 40 | 40 | 3.0000000 + 3 | 30 | 30 | 3.0000000 + 2 | 50 | 50 | 2.0000000 + 2 | 40 | 40 | 2.0000000 + 1 | 30 | 30 | 5.0000000 + 1 | 50 | 50 | 5.0000000 + 1 | 30 | 30 | 5.0000000 + 1 | 20 | 20 | 5.0000000 + 1 | 10 | 10 | 5.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ), +win2 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.qty order by ow_sale.pn desc); -- mvd 4->3; 6,7,4,8,2->5; 6,7,4,8,2->9; + vn | pn | to_char | cn | to_char | prc | dt | qty | to_char +----+-----+-------------------+----+-------------------+------+------------+------+------------------- + 40 | 700 | 2.0000000 | 4 | 1.0000000 | 1 | 1401-06-01 | 1 | 1.0000000 + 40 | 800 | 2.0000000 | 4 | 1.0000000 | 1 | 1401-06-01 | 1 | 1.0000000 + 40 | 200 | 3.0000000 | 3 | 1.0000000 | 0 | 1401-04-01 | 1 | 1.0000000 + 30 | 600 | 3.0000000 | 3 | 1.0000000 | 5 | 1401-06-01 | 12 | 1.0000000 + 30 | 500 | 3.0000000 | 3 | 1.0000000 | 5 | 1401-06-01 | 12 | 1.0000000 + 50 | 400 | 2.0000000 | 2 | 1.0000000 | 0 | 1401-06-01 | 1 | 1.0000000 + 40 | 100 | 2.0000000 | 2 | 1.0000000 | 2400 | 1401-01-01 | 1100 | 1.0000000 + 20 | 100 | 5.0000000 | 1 | 1.0000000 | 0 | 1401-05-01 | 1 | 1.0000000 + 50 | 400 | 5.0000000 | 1 | 1.0000000 | 0 | 1401-06-01 | 1 | 1.0000000 + 30 | 300 | 5.0000000 | 1 | 1.0000000 | 0 | 1401-05-02 | 1 | 1.0000000 + 10 | 200 | 5.0000000 | 1 | 1.0000000 | 0 | 1401-03-01 | 1 | 1.0000000 + 30 | 500 | 5.0000000 | 1 | 1.0000000 | 5 | 1401-06-01 | 12 | 1.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and 2 preceding ); -- mvd 2->3; + qty | vn | to_char +------+----+------------------- + 1 | 10 | .0000000 + 1 | 20 | 1.0000000 + 12 | 30 | 2.0000000 + 1 | 30 | 2.0000000 + 12 | 30 | 2.0000000 + 12 | 30 | 2.0000000 + 1100 | 40 | 6.0000000 + 1 | 40 | 6.0000000 + 1 | 40 | 6.0000000 + 1 | 40 | 6.0000000 + 1 | 50 | 10.0000000 + 1 | 50 | 10.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and floor(ow_sale.vn/ow_sale.pn) preceding ), +win2 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.pn order by ow_sale.vn asc); -- mvd 3->2; 1,5,6,3->4; + dt | to_char | pn | to_char | vn | qty +------------+-------------------+-----+-------------------+----+------ + 1401-05-01 | 2.0000000 | 100 | 1.0000000 | 20 | 1 + 1401-01-01 | 2.0000000 | 100 | 1.0000000 | 40 | 1100 + 1401-03-01 | 4.0000000 | 200 | 1.0000000 | 10 | 1 + 1401-04-01 | 4.0000000 | 200 | 1.0000000 | 40 | 1 + 1401-05-02 | 5.0000000 | 300 | 1.0000000 | 30 | 1 + 1401-06-01 | 7.0000000 | 400 | 1.0000000 | 50 | 1 + 1401-06-01 | 7.0000000 | 400 | 1.0000000 | 50 | 1 + 1401-06-01 | 9.0000000 | 500 | 1.0000000 | 30 | 12 + 1401-06-01 | 9.0000000 | 500 | 1.0000000 | 30 | 12 + 1401-06-01 | 10.0000000 | 600 | 1.0000000 | 30 | 12 + 1401-06-01 | 11.0000000 | 700 | 1.0000000 | 40 | 1 + 1401-06-01 | 12.0000000 | 800 | 1.0000000 | 40 | 1 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and current row ); -- mvd 5->4; + prc | qty | pn | to_char | cn +------+------+-----+-------------------+---- + 0 | 1 | 200 | 5.0000000 | 1 + 0 | 1 | 100 | 5.0000000 | 1 + 0 | 1 | 300 | 5.0000000 | 1 + 0 | 1 | 400 | 5.0000000 | 1 + 5 | 12 | 500 | 5.0000000 | 1 + 2400 | 1100 | 100 | 7.0000000 | 2 + 0 | 1 | 400 | 7.0000000 | 2 + 0 | 1 | 200 | 10.0000000 | 3 + 5 | 12 | 600 | 10.0000000 | 3 + 5 | 12 | 500 | 10.0000000 | 3 + 1 | 1 | 700 | 12.0000000 | 4 + 1 | 1 | 800 | 12.0000000 | 4 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn/ow_sale.vn) as int),cast (floor(ow_sale.vn+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and current row ), +win2 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 1->4; 6,1->5; 6,1->7; 9->8; 6,1->10; + pn | qty | pn | to_char | to_char | prc | to_char | to_char | vn | to_char +-----+------+-----+-------------------+-------------------+------+-------------------+-------------------+----+------------------- + 100 | 1100 | 100 | 12.0000000 | .0000000 | 2400 | 1.0000000 | .0000000 | 40 | 1.0000000 + 200 | 1 | 200 | 10.0000000 | .0000000 | 0 | 1.0000000 | .0000000 | 10 | 1.0000000 + 200 | 1 | 200 | 10.0000000 | .0000000 | 0 | 2.0000000 | .0000000 | 40 | 2.0000000 + 100 | 1 | 100 | 12.0000000 | .0000000 | 0 | 3.0000000 | .0000000 | 20 | 3.0000000 + 300 | 1 | 300 | 8.0000000 | .0000000 | 0 | 4.0000000 | .0000000 | 30 | 4.0000000 + 400 | 1 | 400 | 7.0000000 | .0000000 | 0 | 5.0000000 | .0000000 | 50 | 5.0000000 + 400 | 1 | 400 | 7.0000000 | .0000000 | 0 | 6.0000000 | .0000000 | 50 | 6.0000000 + 500 | 12 | 500 | 5.0000000 | .0000000 | 5 | 1.0000000 | .0000000 | 30 | 1.0000000 + 500 | 12 | 500 | 5.0000000 | .0000000 | 5 | 2.0000000 | .0000000 | 30 | 2.0000000 + 600 | 12 | 600 | 3.0000000 | .0000000 | 5 | 3.0000000 | .0000000 | 30 | 3.0000000 + 700 | 1 | 700 | 2.0000000 | .0000000 | 1 | 1.0000000 | .0000000 | 40 | 1.0000000 + 800 | 1 | 800 | 1.0000000 | .0000000 | 1 | 2.0000000 | .0000000 | 40 | 2.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.prc+ow_sale.qty) following ); -- mvd 6->5; + dt | dt | qty | qty | to_char | vn +------------+------------+------+------+-------------------+---- + 1401-06-01 | 1401-06-01 | 1 | 1 | 2.0000000 | 50 + 1401-06-01 | 1401-06-01 | 1 | 1 | 2.0000000 | 50 + 1401-01-01 | 1401-01-01 | 1100 | 1100 | 12.0000000 | 40 + 1401-06-01 | 1401-06-01 | 1 | 1 | 6.0000000 | 40 + 1401-04-01 | 1401-04-01 | 1 | 1 | 6.0000000 | 40 + 1401-06-01 | 1401-06-01 | 1 | 1 | 6.0000000 | 40 + 1401-06-01 | 1401-06-01 | 12 | 12 | 11.0000000 | 30 + 1401-05-02 | 1401-05-02 | 1 | 1 | 10.0000000 | 30 + 1401-06-01 | 1401-06-01 | 12 | 12 | 11.0000000 | 30 + 1401-06-01 | 1401-06-01 | 12 | 12 | 11.0000000 | 30 + 1401-05-01 | 1401-05-01 | 1 | 1 | 11.0000000 | 20 + 1401-03-01 | 1401-03-01 | 1 | 1 | 12.0000000 | 10 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn-ow_sale.qty)) OVER(order by ow_sale.cn desc range between unbounded preceding and 0 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and 0 following ); -- mvd 3->2; 3->4; + pn | to_char | cn | to_char +-----+-------------------+----+------------------- + 800 | 2.0000000 | 4 | 2.0000000 + 700 | 2.0000000 | 4 | 2.0000000 + 500 | 5.0000000 | 3 | 5.0000000 + 600 | 5.0000000 | 3 | 5.0000000 + 200 | 5.0000000 | 3 | 5.0000000 + 400 | 7.0000000 | 2 | 7.0000000 + 100 | 7.0000000 | 2 | 7.0000000 + 300 | 12.0000000 | 1 | 12.0000000 + 500 | 12.0000000 | 1 | 12.0000000 + 400 | 12.0000000 | 1 | 12.0000000 + 200 | 12.0000000 | 1 | 12.0000000 + 100 | 12.0000000 | 1 | 12.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 1->5; + vn | qty | pn | vn | to_char +----+------+-----+----+------------------- + 10 | 1 | 200 | 10 | 12.0000000 + 20 | 1 | 100 | 20 | 12.0000000 + 30 | 12 | 600 | 30 | 12.0000000 + 30 | 1 | 300 | 30 | 12.0000000 + 30 | 12 | 500 | 30 | 12.0000000 + 30 | 12 | 500 | 30 | 12.0000000 + 40 | 1100 | 100 | 40 | 12.0000000 + 40 | 1 | 700 | 40 | 12.0000000 + 40 | 1 | 800 | 40 | 12.0000000 + 40 | 1 | 200 | 40 | 12.0000000 + 50 | 1 | 400 | 50 | 12.0000000 + 50 | 1 | 400 | 50 | 12.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty+ow_sale.qty) as int),cast (floor(ow_sale.vn+ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.cn desc), +win3 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.cn desc), +win4 as (order by ow_sale.ord, ow_sale.vn asc), +win5 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 2->4; 2,6,7,3->5; 2,6,7->8; 7->9; 2,6->10; + prc | cn | pn | to_char | to_char | dt | vn | to_char | to_char | to_char +------+----+-----+-------------------+-------------------+------------+----+-------------------+-------------------+------------------- + 2400 | 2 | 100 | 12.0000000 | .0000000 | 1401-01-01 | 40 | 1.0000000 | .0000000 | .0000000 + 0 | 1 | 200 | 12.0000000 | .0000000 | 1401-03-01 | 10 | 1.0000000 | .0000000 | .0000000 + 0 | 3 | 200 | 12.0000000 | .0000000 | 1401-04-01 | 40 | 1.0000000 | .0000000 | .0000000 + 0 | 1 | 100 | 12.0000000 | .0000000 | 1401-05-01 | 20 | 1.0000000 | .0000000 | .0000000 + 0 | 1 | 300 | 12.0000000 | .0000000 | 1401-05-02 | 30 | 1.0000000 | .0000000 | .0000000 + 0 | 1 | 400 | 12.0000000 | 1.0000000 | 1401-06-01 | 50 | 2.0000000 | .0000000 | .0000000 + 0 | 2 | 400 | 12.0000000 | .0000000 | 1401-06-01 | 50 | 1.0000000 | .0000000 | 1.0000000 + 5 | 1 | 500 | 12.0000000 | 1.0000000 | 1401-06-01 | 30 | 3.0000000 | .0000000 | .0000000 + 5 | 3 | 500 | 12.0000000 | .0000000 | 1401-06-01 | 30 | 1.0000000 | .0000000 | .0000000 + 5 | 3 | 600 | 12.0000000 | .0000000 | 1401-06-01 | 30 | 2.0000000 | .0000000 | .0000000 + 1 | 4 | 700 | 12.0000000 | .0000000 | 1401-06-01 | 40 | 1.0000000 | .0000000 | 12.0000000 + 1 | 4 | 800 | 12.0000000 | .0000000 | 1401-06-01 | 40 | 2.0000000 | .0000000 | 1.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 1 preceding and floor(ow_sale.vn) preceding ); -- mvd 4->3; + dt | vn | to_char | pn +------------+----+-------------------+----- + 1401-05-01 | 20 | .0000000 | 100 + 1401-01-01 | 40 | .0000000 | 100 + 1401-03-01 | 10 | .0000000 | 200 + 1401-04-01 | 40 | .0000000 | 200 + 1401-05-02 | 30 | .0000000 | 300 + 1401-06-01 | 50 | .0000000 | 400 + 1401-06-01 | 50 | .0000000 | 400 + 1401-06-01 | 30 | .0000000 | 500 + 1401-06-01 | 30 | .0000000 | 500 + 1401-06-01 | 30 | .0000000 | 600 + 1401-06-01 | 40 | .0000000 | 700 + 1401-06-01 | 40 | .0000000 | 800 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 4 preceding and current row ); -- mvd 7->6; + pn | dt | pn | pn | pn | to_char | vn +-----+------------+-----+-----+-----+-------------------+---- + 200 | 1401-03-01 | 200 | 200 | 200 | 1.0000000 | 10 + 100 | 1401-05-01 | 100 | 100 | 100 | 1.0000000 | 20 + 600 | 1401-06-01 | 600 | 600 | 600 | 4.0000000 | 30 + 300 | 1401-05-02 | 300 | 300 | 300 | 4.0000000 | 30 + 500 | 1401-06-01 | 500 | 500 | 500 | 4.0000000 | 30 + 500 | 1401-06-01 | 500 | 500 | 500 | 4.0000000 | 30 + 100 | 1401-01-01 | 100 | 100 | 100 | 4.0000000 | 40 + 700 | 1401-06-01 | 700 | 700 | 700 | 4.0000000 | 40 + 200 | 1401-04-01 | 200 | 200 | 200 | 4.0000000 | 40 + 800 | 1401-06-01 | 800 | 800 | 800 | 4.0000000 | 40 + 400 | 1401-06-01 | 400 | 400 | 400 | 2.0000000 | 50 + 400 | 1401-06-01 | 400 | 400 | 400 | 2.0000000 | 50 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 3 preceding and floor(ow_sale.pn) following ); -- mvd 2->3; + vn | pn | to_char +----+-----+------------------- + 20 | 100 | 4.0000000 + 40 | 100 | 4.0000000 + 10 | 200 | 5.0000000 + 40 | 200 | 5.0000000 + 30 | 300 | 6.0000000 + 50 | 400 | 7.0000000 + 50 | 400 | 7.0000000 + 30 | 500 | 5.0000000 + 30 | 500 | 5.0000000 + 30 | 600 | 3.0000000 + 40 | 700 | 2.0000000 + 40 | 800 | 1.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between floor(ow_sale.qty+ow_sale.vn) preceding and unbounded following ); -- mvd 1->2; + pn | to_char +-----+------------------- + 800 | 12.0000000 + 700 | 11.0000000 + 600 | 10.0000000 + 500 | 9.0000000 + 500 | 9.0000000 + 400 | 7.0000000 + 400 | 7.0000000 + 300 | 5.0000000 + 200 | 4.0000000 + 200 | 4.0000000 + 100 | 2.0000000 + 100 | 12.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and current row ); -- mvd 3->2; + qty | to_char | vn +------+-------------------+---- + 1 | 1.0000000 | 10 + 1 | 1.0000000 | 20 + 12 | 4.0000000 | 30 + 1 | 4.0000000 | 30 + 12 | 4.0000000 | 30 + 12 | 4.0000000 | 30 + 1100 | 4.0000000 | 40 + 1 | 4.0000000 | 40 + 1 | 4.0000000 | 40 + 1 | 4.0000000 | 40 + 1 | 2.0000000 | 50 + 1 | 2.0000000 | 50 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and current row ), +win2 as (order by ow_sale.cn asc); -- mvd 2->4; 6->5; 6->7; 6->8; + dt | vn | qty | to_char | to_char | cn | to_char | to_char +------------+----+------+-------------------+-------------------+----+-------------------+------------------- + 1401-06-01 | 30 | 12 | 4.0000000 | 1.0000000 | 1 | 1.0000000 | 1.0000000 + 1401-05-02 | 30 | 1 | 4.0000000 | 1.0000000 | 1 | 1.0000000 | 2.0000000 + 1401-06-01 | 50 | 1 | 2.0000000 | 1.0000000 | 1 | 1.0000000 | 3.0000000 + 1401-03-01 | 10 | 1 | 1.0000000 | 1.0000000 | 1 | 1.0000000 | 4.0000000 + 1401-05-01 | 20 | 1 | 1.0000000 | 1.0000000 | 1 | 1.0000000 | 5.0000000 + 1401-06-01 | 50 | 1 | 2.0000000 | 2.0000000 | 2 | 2.0000000 | 6.0000000 + 1401-01-01 | 40 | 1100 | 4.0000000 | 2.0000000 | 2 | 2.0000000 | 7.0000000 + 1401-06-01 | 30 | 12 | 4.0000000 | 3.0000000 | 3 | 3.0000000 | 8.0000000 + 1401-06-01 | 30 | 12 | 4.0000000 | 3.0000000 | 3 | 3.0000000 | 9.0000000 + 1401-04-01 | 40 | 1 | 4.0000000 | 3.0000000 | 3 | 3.0000000 | 10.0000000 + 1401-06-01 | 40 | 1 | 4.0000000 | 4.0000000 | 4 | 4.0000000 | 11.0000000 + 1401-06-01 | 40 | 1 | 4.0000000 | 4.0000000 | 4 | 4.0000000 | 12.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and 4 following ); -- mvd 5->6; + qty | prc | dt | qty | vn | to_char +------+------+------------+------+----+------------------- + 1 | 0 | 1401-03-01 | 1 | 10 | 1.0000000 + 1 | 0 | 1401-05-01 | 1 | 20 | 1.0000000 + 12 | 5 | 1401-06-01 | 12 | 30 | 4.0000000 + 1 | 0 | 1401-05-02 | 1 | 30 | 4.0000000 + 12 | 5 | 1401-06-01 | 12 | 30 | 4.0000000 + 12 | 5 | 1401-06-01 | 12 | 30 | 4.0000000 + 1100 | 2400 | 1401-01-01 | 1100 | 40 | 4.0000000 + 1 | 1 | 1401-06-01 | 1 | 40 | 4.0000000 + 1 | 1 | 1401-06-01 | 1 | 40 | 4.0000000 + 1 | 0 | 1401-04-01 | 1 | 40 | 4.0000000 + 1 | 0 | 1401-06-01 | 1 | 50 | 2.0000000 + 1 | 0 | 1401-06-01 | 1 | 50 | 2.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and 2 following ), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 4->3; 4->5; + vn | vn | to_char | pn | to_char +----+----+-------------------+-----+------------------- + 40 | 40 | 2.0000000 | 100 | .0000000 + 10 | 10 | 2.0000000 | 200 | 800.0000000 + 40 | 40 | 2.0000000 | 200 | .0000000 + 20 | 20 | 2.0000000 | 100 | .0000000 + 30 | 30 | 1.0000000 | 300 | .0000000 + 50 | 50 | 2.0000000 | 400 | .0000000 + 50 | 50 | 2.0000000 | 400 | .0000000 + 30 | 30 | 2.0000000 | 500 | .0000000 + 30 | 30 | 2.0000000 | 500 | .0000000 + 30 | 30 | 1.0000000 | 600 | .0000000 + 40 | 40 | 1.0000000 | 700 | .0000000 + 40 | 40 | 1.0000000 | 800 | .0000000 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and unbounded following ); -- mvd 5->4; + vn | prc | dt | to_char | pn +----+------+------------+-------------------+----- + 20 | 0 | 1401-05-01 | 12.0000000 | 100 + 40 | 2400 | 1401-01-01 | 12.0000000 | 100 + 10 | 0 | 1401-03-01 | 10.0000000 | 200 + 40 | 0 | 1401-04-01 | 10.0000000 | 200 + 30 | 0 | 1401-05-02 | 8.0000000 | 300 + 50 | 0 | 1401-06-01 | 7.0000000 | 400 + 50 | 0 | 1401-06-01 | 7.0000000 | 400 + 30 | 5 | 1401-06-01 | 5.0000000 | 500 + 30 | 5 | 1401-06-01 | 5.0000000 | 500 + 30 | 5 | 1401-06-01 | 3.0000000 | 600 + 40 | 1 | 1401-06-01 | 2.0000000 | 700 + 40 | 1 | 1401-06-01 | 1.0000000 | 800 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 1 following and floor(ow_sale.prc) following ); -- mvd 3->4; + vn | vn | cn | to_char +----+----+----+------------------- + 10 | 10 | 1 | .0000000 + 20 | 20 | 1 | .0000000 + 30 | 30 | 1 | .0000000 + 30 | 30 | 1 | 7.0000000 + 50 | 50 | 1 | .0000000 + 40 | 40 | 2 | 5.0000000 + 50 | 50 | 2 | .0000000 + 30 | 30 | 3 | 2.0000000 + 40 | 40 | 3 | .0000000 + 30 | 30 | 3 | 2.0000000 + 40 | 40 | 4 | .0000000 + 40 | 40 | 4 | .0000000 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 0 following and 1 following ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.vn order by ow_sale.vn desc); -- mvd 4->3; 6->5; 4->7; + prc | cn | to_char | vn | to_char | pn | to_char +------+----+-------------------+----+-------------------+-----+------------------- + 1 | 4 | 4.0000000 | 40 | .0000000 | 800 | 3.0000000 + 1 | 4 | 4.0000000 | 40 | .0909091 | 700 | 1.0000000 + 5 | 3 | 4.0000000 | 30 | .1818182 | 600 | 4.0000000 + 5 | 3 | 4.0000000 | 30 | .2727273 | 500 | 2.0000000 + 5 | 1 | 4.0000000 | 30 | .2727273 | 500 | 3.0000000 + 0 | 2 | 2.0000000 | 50 | .4545455 | 400 | 2.0000000 + 0 | 1 | 2.0000000 | 50 | .4545455 | 400 | 1.0000000 + 0 | 1 | 4.0000000 | 30 | .6363636 | 300 | 1.0000000 + 0 | 3 | 4.0000000 | 40 | .7272727 | 200 | 2.0000000 + 0 | 1 | 1.0000000 | 10 | .7272727 | 200 | 1.0000000 + 2400 | 2 | 4.0000000 | 40 | .9090909 | 100 | 4.0000000 + 0 | 1 | 1.0000000 | 20 | .9090909 | 100 | 1.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.cn+ow_sale.prc) following and unbounded following ); -- mvd 3->4; + pn | pn | vn | to_char +-----+-----+----+------------------- + 200 | 200 | 10 | 11.0000000 + 100 | 100 | 20 | 10.0000000 + 600 | 600 | 30 | 6.0000000 + 300 | 300 | 30 | 6.0000000 + 500 | 500 | 30 | 6.0000000 + 500 | 500 | 30 | 6.0000000 + 100 | 100 | 40 | .0000000 + 700 | 700 | 40 | 2.0000000 + 200 | 200 | 40 | 2.0000000 + 800 | 800 | 40 | 2.0000000 + 400 | 400 | 50 | .0000000 + 400 | 400 | 50 | .0000000 +(12 rows) + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 3 following and unbounded following ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.cn order by ow_sale.cn asc); -- mvd 1->4; 1->5; 2,3,7->6; 1->8; + pn | cn | qty | to_char | to_char | to_char | vn | to_char +-----+----+------+-------------------+-------------------+-------------------+----+------------------- + 800 | 4 | 1 | 11.0000000 | 12.0000000 | .0000000 | 40 | 8.0000000 + 700 | 4 | 1 | 10.0000000 | 11.0000000 | .0000000 | 40 | 7.0000000 + 600 | 3 | 12 | 9.0000000 | 10.0000000 | .0000000 | 30 | 6.0000000 + 500 | 1 | 12 | 7.0000000 | 8.0000000 | .0000000 | 30 | 5.0000000 + 500 | 3 | 12 | 7.0000000 | 8.0000000 | .0000000 | 30 | 5.0000000 + 400 | 2 | 1 | 5.0000000 | 6.0000000 | .0000000 | 50 | 4.0000000 + 400 | 1 | 1 | 5.0000000 | 6.0000000 | .0000000 | 50 | 4.0000000 + 300 | 1 | 1 | 4.0000000 | 5.0000000 | .0000000 | 30 | 3.0000000 + 200 | 3 | 1 | 2.0000000 | 3.0000000 | .0000000 | 40 | 2.0000000 + 200 | 1 | 1 | 2.0000000 | 3.0000000 | .0000000 | 10 | 2.0000000 + 100 | 1 | 1 | .0000000 | 1.0000000 | .0000000 | 20 | 1.0000000 + 100 | 2 | 1100 | .0000000 | 1.0000000 | .0000000 | 40 | 1.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows unbounded preceding ); -- mvd 1->3; + pn | cn | to_char +-----+----+------------------- + 100 | 2 | 1.0000000 + 200 | 1 | 2.0000000 + 200 | 3 | 3.0000000 + 100 | 1 | 4.0000000 + 300 | 1 | 5.0000000 + 400 | 1 | 6.0000000 + 400 | 2 | 7.0000000 + 500 | 1 | 8.0000000 + 500 | 3 | 9.0000000 + 600 | 3 | 10.0000000 + 700 | 4 | 11.0000000 + 800 | 4 | 12.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc rows unbounded preceding ), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.vn order by ow_sale.cn asc); -- mvd 3->5; 7,8,3,2,4->6; + qty | vn | cn | pn | to_char | to_char | prc | dt +------+----+----+-----+-------------------+-------------------+------+------------ + 1100 | 40 | 2 | 100 | 1.0000000 | 1.0000000 | 2400 | 1401-01-01 + 1 | 10 | 1 | 200 | 2.0000000 | 1.0000000 | 0 | 1401-03-01 + 1 | 40 | 3 | 200 | 3.0000000 | 1.0000000 | 0 | 1401-04-01 + 1 | 20 | 1 | 100 | 4.0000000 | 1.0000000 | 0 | 1401-05-01 + 1 | 30 | 1 | 300 | 5.0000000 | 1.0000000 | 0 | 1401-05-02 + 1 | 50 | 1 | 400 | 6.0000000 | 1.0000000 | 0 | 1401-06-01 + 1 | 50 | 2 | 400 | 7.0000000 | 1.0000000 | 0 | 1401-06-01 + 12 | 30 | 1 | 500 | 8.0000000 | 1.0000000 | 5 | 1401-06-01 + 12 | 30 | 3 | 500 | 9.0000000 | 1.0000000 | 5 | 1401-06-01 + 12 | 30 | 3 | 600 | 10.0000000 | 1.0000000 | 5 | 1401-06-01 + 1 | 40 | 4 | 700 | 11.0000000 | 1.0000000 | 1 | 1401-06-01 + 1 | 40 | 4 | 800 | 12.0000000 | 1.0000000 | 1 | 1401-06-01 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows floor(ow_sale.pn) preceding ); -- mvd 4->3; + vn | cn | to_char | pn +----+----+-------------------+----- + 40 | 2 | 1.0000000 | 100 + 10 | 1 | 2.0000000 | 200 + 40 | 3 | 3.0000000 | 200 + 20 | 1 | 4.0000000 | 100 + 30 | 1 | 5.0000000 | 300 + 50 | 1 | 6.0000000 | 400 + 50 | 2 | 7.0000000 | 400 + 30 | 1 | 8.0000000 | 500 + 30 | 3 | 9.0000000 | 500 + 30 | 3 | 10.0000000 | 600 + 40 | 4 | 11.0000000 | 700 + 40 | 4 | 12.0000000 | 800 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty-ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn+ow_sale.qty) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows 1 preceding ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.cn asc), +win4 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc), +win5 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc); -- mvd 3->6; 2,8,1,3->7; 1->9; 1,11,12,3->10; 1,3->13; + cn | prc | pn | pn | cn | to_char | to_char | dt | to_char | to_char | vn | qty | to_char +----+------+-----+-----+----+-------------------+-------------------+------------+-------------------+-------------------+----+------+------------------- + 1 | 0 | 400 | 400 | 1 | 2.0000000 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 | 50 | 1 | .0000000 + 1 | 0 | 200 | 200 | 1 | 2.0000000 | .0000000 | 1401-03-01 | 1.0000000 | .0000000 | 10 | 1 | .0000000 + 1 | 5 | 500 | 500 | 1 | 2.0000000 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 | 30 | 12 | .0000000 + 1 | 0 | 100 | 100 | 1 | 2.0000000 | .0000000 | 1401-05-01 | 1.0000000 | .0000000 | 20 | 1 | .0000000 + 1 | 0 | 300 | 300 | 1 | 2.0000000 | .0000000 | 1401-05-02 | 1.0000000 | .0000000 | 30 | 1 | .0000000 + 2 | 2400 | 100 | 100 | 2 | 1.0000000 | .0000000 | 1401-01-01 | 2.0000000 | .0000000 | 40 | 1100 | .0000000 + 2 | 0 | 400 | 400 | 2 | 2.0000000 | .0000000 | 1401-06-01 | 2.0000000 | .0000000 | 50 | 1 | .0000000 + 3 | 0 | 200 | 200 | 3 | 2.0000000 | .0000000 | 1401-04-01 | 3.0000000 | .0000000 | 40 | 1 | .0000000 + 3 | 5 | 500 | 500 | 3 | 2.0000000 | .0000000 | 1401-06-01 | 3.0000000 | .0000000 | 30 | 12 | .0000000 + 3 | 5 | 600 | 600 | 3 | 2.0000000 | .0000000 | 1401-06-01 | 3.0000000 | .0000000 | 30 | 12 | .0000000 + 4 | 1 | 700 | 700 | 4 | 2.0000000 | .0000000 | 1401-06-01 | 4.0000000 | .0000000 | 40 | 1 | .0000000 + 4 | 1 | 800 | 800 | 4 | 2.0000000 | .0000000 | 1401-06-01 | 4.0000000 | .0000000 | 40 | 1 | .0000000 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows current row ); -- mvd 1->4; + pn | pn | prc | to_char +-----+-----+------+------------------- + 100 | 100 | 2400 | 1.0000000 + 200 | 200 | 0 | 1.0000000 + 200 | 200 | 0 | 1.0000000 + 100 | 100 | 0 | 1.0000000 + 300 | 300 | 0 | 1.0000000 + 400 | 400 | 0 | 1.0000000 + 400 | 400 | 0 | 1.0000000 + 500 | 500 | 5 | 1.0000000 + 500 | 500 | 5 | 1.0000000 + 600 | 600 | 5 | 1.0000000 + 700 | 700 | 1 | 1.0000000 + 800 | 800 | 1 | 1.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.prc) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.pn) as int),cast (floor(ow_sale.cn*ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows current row ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.dt order by ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 7->6; 9,3->8; 4,7,9->10; 7->11; 9,3->12; 7->13; + prc | qty | pn | dt | qty | to_char | cn | to_char | vn | to_char | to_char | to_char | to_char +------+------+-----+------------+------+-------------------+----+-------------------+----+-------------------+-------------------+-------------------+------------------- + 2400 | 1100 | 100 | 1401-01-01 | 1100 | 1.0000000 | 2 | .0000000 | 40 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 0 | 1 | 200 | 1401-03-01 | 1 | 1.0000000 | 1 | 10.0000000 | 10 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 0 | 1 | 200 | 1401-04-01 | 1 | 1.0000000 | 3 | 40.0000000 | 40 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 0 | 1 | 100 | 1401-05-01 | 1 | 1.0000000 | 1 | 20.0000000 | 20 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 0 | 1 | 300 | 1401-05-02 | 1 | 1.0000000 | 1 | 30.0000000 | 30 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 0 | 1 | 400 | 1401-06-01 | 1 | 1.0000000 | 1 | 50.0000000 | 50 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 0 | 1 | 400 | 1401-06-01 | 1 | 1.0000000 | 2 | 50.0000000 | 50 | 1.0000000 | 1.0000000 | 2.0000000 | .0000000 + 5 | 12 | 500 | 1401-06-01 | 12 | 1.0000000 | 1 | .0000000 | 30 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 5 | 12 | 500 | 1401-06-01 | 12 | 1.0000000 | 3 | .0000000 | 30 | 1.0000000 | 1.0000000 | 2.0000000 | .0000000 + 5 | 12 | 600 | 1401-06-01 | 12 | 1.0000000 | 3 | .0000000 | 30 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 1 | 1 | 700 | 1401-06-01 | 1 | 1.0000000 | 4 | .0000000 | 40 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 1 | 1 | 800 | 1401-06-01 | 1 | 1.0000000 | 4 | .0000000 | 40 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and floor(ow_sale.pn+ow_sale.qty) preceding ); -- mvd 2->4; + qty | pn | vn | to_char +------+-----+----+------------------- + 1100 | 100 | 40 | .0000000 + 1 | 200 | 10 | .0000000 + 1 | 200 | 40 | .0000000 + 1 | 100 | 20 | .0000000 + 1 | 300 | 30 | .0000000 + 1 | 400 | 50 | .0000000 + 1 | 400 | 50 | .0000000 + 12 | 500 | 30 | .0000000 + 12 | 500 | 30 | .0000000 + 12 | 600 | 30 | .0000000 + 1 | 700 | 40 | .0000000 + 1 | 800 | 40 | .0000000 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between unbounded preceding and floor(ow_sale.prc+ow_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between unbounded preceding and floor(ow_sale.prc+ow_sale.pn) preceding ); -- mvd 3,5->4; 3,5->6; 3,5->7; + qty | prc | cn | to_char | vn | to_char | to_char +------+------+----+-------------------+----+-------------------+------------------- + 1100 | 2400 | 2 | .0000000 | 40 | .0000000 | .0000000 + 1 | 0 | 1 | .0000000 | 10 | .0000000 | .0000000 + 1 | 0 | 3 | .0000000 | 40 | .0000000 | .0000000 + 1 | 0 | 1 | .0000000 | 20 | .0000000 | .0000000 + 1 | 0 | 1 | .0000000 | 30 | .0000000 | .0000000 + 1 | 0 | 1 | .0000000 | 50 | .0000000 | .0000000 + 1 | 0 | 2 | .0000000 | 50 | .0000000 | .0000000 + 12 | 5 | 1 | .0000000 | 30 | .0000000 | .0000000 + 12 | 5 | 3 | .0000000 | 30 | .0000000 | .0000000 + 12 | 5 | 3 | .0000000 | 30 | .0000000 | .0000000 + 1 | 1 | 4 | .0000000 | 40 | .0000000 | .0000000 + 1 | 1 | 4 | .0000000 | 40 | .0000000 | .0000000 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and current row ); -- mvd 4->5; + vn | pn | vn | cn | to_char +----+-----+----+----+------------------- + 40 | 100 | 40 | 2 | 1.0000000 + 10 | 200 | 10 | 1 | 2.0000000 + 40 | 200 | 40 | 3 | 3.0000000 + 20 | 100 | 20 | 1 | 4.0000000 + 30 | 300 | 30 | 1 | 5.0000000 + 50 | 400 | 50 | 1 | 6.0000000 + 50 | 400 | 50 | 2 | 7.0000000 + 30 | 500 | 30 | 1 | 8.0000000 + 30 | 500 | 30 | 3 | 9.0000000 + 30 | 600 | 30 | 3 | 10.0000000 + 40 | 700 | 40 | 4 | 11.0000000 + 40 | 800 | 40 | 4 | 12.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.pn desc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.pn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.pn desc); -- mvd 6,4,3->5; 6,4,3->7; 2,3->8; + prc | qty | pn | vn | to_char | cn | to_char | to_char +------+------+-----+----+-------------------+----+-------------------+------------------- + 2400 | 1100 | 100 | 40 | 1.0000000 | 2 | 1.0000000 | .0000000 + 0 | 1 | 200 | 10 | 2.0000000 | 1 | 2.0000000 | .0000000 + 0 | 1 | 200 | 40 | 3.0000000 | 3 | 3.0000000 | .0000000 + 0 | 1 | 100 | 20 | 4.0000000 | 1 | 4.0000000 | .0000000 + 0 | 1 | 300 | 30 | 5.0000000 | 1 | 5.0000000 | .0000000 + 0 | 1 | 400 | 50 | 6.0000000 | 1 | 6.0000000 | .0000000 + 0 | 1 | 400 | 50 | 7.0000000 | 2 | 7.0000000 | .0000000 + 5 | 12 | 500 | 30 | 8.0000000 | 1 | 8.0000000 | .0000000 + 5 | 12 | 500 | 30 | 9.0000000 | 3 | 9.0000000 | .0000000 + 5 | 12 | 600 | 30 | 10.0000000 | 3 | 10.0000000 | .0000000 + 1 | 1 | 700 | 40 | 11.0000000 | 4 | 11.0000000 | .0000000 + 1 | 1 | 800 | 40 | 12.0000000 | 4 | 12.0000000 | .0000000 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.cn desc rows between unbounded preceding and 3 following ); -- mvd 1->6; + cn | qty | vn | qty | prc | to_char +----+------+----+------+------+------------------- + 2 | 1100 | 40 | 1100 | 2400 | 4.0000000 + 1 | 1 | 10 | 1 | 0 | 5.0000000 + 3 | 1 | 40 | 1 | 0 | 6.0000000 + 1 | 1 | 20 | 1 | 0 | 7.0000000 + 1 | 1 | 30 | 1 | 0 | 8.0000000 + 1 | 1 | 50 | 1 | 0 | 9.0000000 + 2 | 1 | 50 | 1 | 0 | 10.0000000 + 1 | 12 | 30 | 12 | 5 | 11.0000000 + 3 | 12 | 30 | 12 | 5 | 12.0000000 + 3 | 12 | 30 | 12 | 5 | 12.0000000 + 4 | 1 | 40 | 1 | 1 | 12.0000000 + 4 | 1 | 40 | 1 | 1 | 12.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 1 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 1 following ); -- mvd 1->2; 1->3; + vn | to_char | to_char +----+-------------------+------------------- + 40 | 2.0000000 | 2.0000000 + 10 | 3.0000000 | 3.0000000 + 40 | 4.0000000 | 4.0000000 + 20 | 5.0000000 | 5.0000000 + 30 | 6.0000000 | 6.0000000 + 50 | 7.0000000 | 7.0000000 + 50 | 8.0000000 | 8.0000000 + 30 | 9.0000000 | 9.0000000 + 30 | 10.0000000 | 10.0000000 + 30 | 11.0000000 | 11.0000000 + 40 | 12.0000000 | 12.0000000 + 40 | 12.0000000 | 12.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc,ow_sale.pn asc rows between unbounded preceding and unbounded following ); -- mvd 3,5->4; + cn | cn | vn | to_char | pn +----+----+----+-------------------+----- + 2 | 2 | 40 | 12.0000000 | 100 + 1 | 1 | 10 | 12.0000000 | 200 + 3 | 3 | 40 | 12.0000000 | 200 + 1 | 1 | 20 | 12.0000000 | 100 + 1 | 1 | 30 | 12.0000000 | 300 + 1 | 1 | 50 | 12.0000000 | 400 + 2 | 2 | 50 | 12.0000000 | 400 + 1 | 1 | 30 | 12.0000000 | 500 + 3 | 3 | 30 | 12.0000000 | 500 + 3 | 3 | 30 | 12.0000000 | 600 + 4 | 4 | 40 | 12.0000000 | 700 + 4 | 4 | 40 | 12.0000000 | 800 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc,ow_sale.cn desc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.pn order by ow_sale.pn asc); -- mvd 3,4->2; 3->5; 3->6; 8,1->7; + pn | to_char | cn | vn | to_char | to_char | to_char | prc +-----+-------------------+----+----+-------------------+-------------------+-------------------+------ + 800 | 12.0000000 | 4 | 40 | 1.0000000 | 1.0000000 | .0000000 | 1 + 700 | 12.0000000 | 4 | 40 | 1.0000000 | 1.0000000 | .0000000 | 1 + 500 | 12.0000000 | 3 | 30 | 2.0000000 | 3.0000000 | .0000000 | 5 + 200 | 12.0000000 | 3 | 40 | 2.0000000 | 3.0000000 | .0000000 | 0 + 600 | 12.0000000 | 3 | 30 | 2.0000000 | 3.0000000 | .0000000 | 5 + 400 | 12.0000000 | 2 | 50 | 3.0000000 | 6.0000000 | .0000000 | 0 + 100 | 12.0000000 | 2 | 40 | 3.0000000 | 6.0000000 | .0000000 | 2400 + 500 | 12.0000000 | 1 | 30 | 4.0000000 | 8.0000000 | .0000000 | 5 + 400 | 12.0000000 | 1 | 50 | 4.0000000 | 8.0000000 | .0000000 | 0 + 300 | 12.0000000 | 1 | 30 | 4.0000000 | 8.0000000 | .0000000 | 0 + 100 | 12.0000000 | 1 | 20 | 4.0000000 | 8.0000000 | .0000000 | 0 + 200 | 12.0000000 | 1 | 10 | 4.0000000 | 8.0000000 | .0000000 | 0 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows between 0 preceding and 2 preceding ); -- mvd 6,4->5; + vn | vn | vn | pn | to_char | cn +----+----+----+-----+-------------------+---- + 40 | 40 | 40 | 100 | .0000000 | 2 + 10 | 10 | 10 | 200 | .0000000 | 1 + 40 | 40 | 40 | 200 | .0000000 | 3 + 20 | 20 | 20 | 100 | .0000000 | 1 + 30 | 30 | 30 | 300 | .0000000 | 1 + 50 | 50 | 50 | 400 | .0000000 | 1 + 50 | 50 | 50 | 400 | .0000000 | 2 + 30 | 30 | 30 | 500 | .0000000 | 1 + 30 | 30 | 30 | 500 | .0000000 | 3 + 30 | 30 | 30 | 600 | .0000000 | 3 + 40 | 40 | 40 | 700 | .0000000 | 4 + 40 | 40 | 40 | 800 | .0000000 | 4 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.pn) as int),cast (floor(ow_sale.cn/ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between 1 preceding and 1 preceding ), +win2 as (partition by ow_sale.pn order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc), +win4 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->5; 2->6; 4->7; 4,3->8; + qty | pn | vn | cn | to_char | to_char | to_char | to_char +------+-----+----+----+-------------------+-------------------+-------------------+------------------- + 1100 | 100 | 40 | 2 | .0000000 | 2.0000000 | .0000000 | 2300.0000000 + 1 | 200 | 10 | 1 | 1.0000000 | 1.0000000 | 1.0000000 | -200.0000000 + 1 | 200 | 40 | 3 | 1.0000000 | 2.0000000 | 1.0000000 | -200.0000000 + 1 | 100 | 20 | 1 | 1.0000000 | 1.0000000 | 1.0000000 | -100.0000000 + 1 | 300 | 30 | 1 | 1.0000000 | 1.0000000 | 1.0000000 | -300.0000000 + 1 | 400 | 50 | 1 | 1.0000000 | 1.0000000 | 1.0000000 | -400.0000000 + 1 | 400 | 50 | 2 | 1.0000000 | 2.0000000 | 1.0000000 | -400.0000000 + 12 | 500 | 30 | 1 | 1.0000000 | 1.0000000 | 1.0000000 | -495.0000000 + 12 | 500 | 30 | 3 | 1.0000000 | 2.0000000 | 1.0000000 | -495.0000000 + 12 | 600 | 30 | 3 | 1.0000000 | 1.0000000 | 1.0000000 | -595.0000000 + 1 | 700 | 40 | 4 | 1.0000000 | 1.0000000 | 12.0000000 | -699.0000000 + 1 | 800 | 40 | 4 | 1.0000000 | 1.0000000 | 1.0000000 | -799.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between 3 preceding and current row ); -- mvd 4->3; + prc | cn | to_char | vn +------+----+-------------------+---- + 2400 | 2 | 1.0000000 | 40 + 0 | 1 | 2.0000000 | 10 + 0 | 3 | 3.0000000 | 40 + 0 | 1 | 4.0000000 | 20 + 0 | 1 | 4.0000000 | 30 + 0 | 1 | 4.0000000 | 50 + 0 | 2 | 4.0000000 | 50 + 5 | 1 | 4.0000000 | 30 + 5 | 3 | 4.0000000 | 30 + 5 | 3 | 4.0000000 | 30 + 1 | 4 | 4.0000000 | 40 + 1 | 4 | 4.0000000 | 40 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.pn desc rows between 2 preceding and current row ), +win2 as (order by ow_sale.pn desc); -- mvd 3,6->5; 6->7; 3,6->8; 6->9; + qty | qty | cn | vn | to_char | pn | to_char | to_char | to_char +------+------+----+----+-------------------+-----+-------------------+-------------------+------------------- + 1 | 1 | 4 | 40 | 3.0000000 | 800 | 1.0000000 | 3.0000000 | 1.0000000 + 1 | 1 | 4 | 40 | 3.0000000 | 700 | 2.0000000 | 3.0000000 | 2.0000000 + 12 | 12 | 3 | 30 | 3.0000000 | 600 | 3.0000000 | 3.0000000 | 3.0000000 + 12 | 12 | 1 | 30 | 3.0000000 | 500 | 4.0000000 | 3.0000000 | 4.0000000 + 12 | 12 | 3 | 30 | 3.0000000 | 500 | 4.0000000 | 3.0000000 | 4.0000000 + 1 | 1 | 2 | 50 | 3.0000000 | 400 | 5.0000000 | 3.0000000 | 5.0000000 + 1 | 1 | 1 | 50 | 3.0000000 | 400 | 5.0000000 | 3.0000000 | 5.0000000 + 1 | 1 | 1 | 30 | 3.0000000 | 300 | 6.0000000 | 3.0000000 | 6.0000000 + 1 | 1 | 3 | 40 | 3.0000000 | 200 | 7.0000000 | 3.0000000 | 7.0000000 + 1 | 1 | 1 | 10 | 2.0000000 | 200 | 7.0000000 | 2.0000000 | 7.0000000 + 1100 | 1100 | 2 | 40 | 1.0000000 | 100 | 8.0000000 | 1.0000000 | 8.0000000 + 1 | 1 | 1 | 20 | 3.0000000 | 100 | 8.0000000 | 3.0000000 | 8.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between 8 preceding and floor(ow_sale.prc+ow_sale.vn) following ); -- mvd 2->5; + vn | cn | cn | vn | to_char +----+----+----+----+------------------- + 40 | 2 | 2 | 40 | 12.0000000 + 10 | 1 | 1 | 10 | 12.0000000 + 40 | 3 | 3 | 40 | 12.0000000 + 20 | 1 | 1 | 20 | 12.0000000 + 30 | 1 | 1 | 30 | 12.0000000 + 50 | 1 | 1 | 50 | 12.0000000 + 50 | 2 | 2 | 50 | 12.0000000 + 30 | 1 | 1 | 30 | 12.0000000 + 30 | 3 | 3 | 30 | 12.0000000 + 30 | 3 | 3 | 30 | 11.0000000 + 40 | 4 | 4 | 40 | 10.0000000 + 40 | 4 | 4 | 40 | 9.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between 7 preceding and unbounded following ); -- mvd 1->2; + cn | to_char +----+------------------- + 2 | 12.0000000 + 1 | 12.0000000 + 3 | 12.0000000 + 1 | 12.0000000 + 1 | 12.0000000 + 1 | 12.0000000 + 2 | 12.0000000 + 1 | 12.0000000 + 3 | 11.0000000 + 3 | 10.0000000 + 4 | 9.0000000 + 4 | 8.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 3 preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 5->4; 5->6; + qty | prc | pn | to_char | cn | to_char +------+------+-----+-------------------+----+------------------- + 1100 | 2400 | 100 | 12.0000000 | 2 | .0000000 + 1 | 0 | 200 | 12.0000000 | 1 | .0000000 + 1 | 0 | 200 | 12.0000000 | 3 | 2.0000000 + 1 | 0 | 100 | 12.0000000 | 1 | 1.0000000 + 1 | 0 | 300 | 11.0000000 | 1 | 3.0000000 + 1 | 0 | 400 | 10.0000000 | 1 | 1.0000000 + 1 | 0 | 400 | 9.0000000 | 2 | 1.0000000 + 12 | 5 | 500 | 8.0000000 | 1 | .0000000 + 12 | 5 | 500 | 7.0000000 | 3 | .0000000 + 12 | 5 | 600 | 6.0000000 | 3 | .0000000 + 1 | 1 | 700 | 5.0000000 | 4 | 3.0000000 + 1 | 1 | 800 | 4.0000000 | 4 | 3.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc/ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between current row and current row ); -- mvd 3,2->5; + dt | vn | cn | dt | to_char +------------+----+----+------------+------------------- + 1401-01-01 | 40 | 2 | 1401-01-01 | 1.0000000 + 1401-03-01 | 10 | 1 | 1401-03-01 | 1.0000000 + 1401-04-01 | 40 | 3 | 1401-04-01 | 1.0000000 + 1401-05-01 | 20 | 1 | 1401-05-01 | 1.0000000 + 1401-05-02 | 30 | 1 | 1401-05-02 | 1.0000000 + 1401-06-01 | 50 | 1 | 1401-06-01 | 1.0000000 + 1401-06-01 | 50 | 2 | 1401-06-01 | 1.0000000 + 1401-06-01 | 30 | 1 | 1401-06-01 | 1.0000000 + 1401-06-01 | 30 | 3 | 1401-06-01 | 1.0000000 + 1401-06-01 | 30 | 3 | 1401-06-01 | 1.0000000 + 1401-06-01 | 40 | 4 | 1401-06-01 | 1.0000000 + 1401-06-01 | 40 | 4 | 1401-06-01 | 1.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between current row and current row ); -- mvd 5->4; 5->6; + qty | qty | prc | to_char | vn | to_char +------+------+------+-------------------+----+------------------- + 1100 | 1100 | 2400 | 1.0000000 | 40 | 1.0000000 + 1 | 1 | 0 | 1.0000000 | 10 | 1.0000000 + 1 | 1 | 0 | 1.0000000 | 40 | 1.0000000 + 1 | 1 | 0 | 1.0000000 | 20 | 1.0000000 + 1 | 1 | 0 | 1.0000000 | 30 | 1.0000000 + 1 | 1 | 0 | 1.0000000 | 50 | 1.0000000 + 1 | 1 | 0 | 1.0000000 | 50 | 1.0000000 + 12 | 12 | 5 | 1.0000000 | 30 | 1.0000000 + 12 | 12 | 5 | 1.0000000 | 30 | 1.0000000 + 12 | 12 | 5 | 1.0000000 | 30 | 1.0000000 + 1 | 1 | 1 | 1.0000000 | 40 | 1.0000000 + 1 | 1 | 1 | 1.0000000 | 40 | 1.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between current row and 8 following ); -- mvd 4,1->3; + pn | pn | to_char | cn +-----+-----+-------------------+---- + 100 | 100 | 9.0000000 | 2 + 200 | 200 | 9.0000000 | 1 + 200 | 200 | 9.0000000 | 3 + 100 | 100 | 9.0000000 | 1 + 300 | 300 | 8.0000000 | 1 + 400 | 400 | 7.0000000 | 1 + 400 | 400 | 6.0000000 | 2 + 500 | 500 | 5.0000000 | 1 + 500 | 500 | 4.0000000 | 3 + 600 | 600 | 3.0000000 | 3 + 700 | 700 | 2.0000000 | 4 + 800 | 800 | 1.0000000 | 4 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ); -- mvd 3->5; + cn | cn | pn | dt | to_char +----+----+-----+------------+------------------- + 2 | 2 | 100 | 1401-01-01 | 12.0000000 + 1 | 1 | 200 | 1401-03-01 | 11.0000000 + 3 | 3 | 200 | 1401-04-01 | 10.0000000 + 1 | 1 | 100 | 1401-05-01 | 9.0000000 + 1 | 1 | 300 | 1401-05-02 | 8.0000000 + 1 | 1 | 400 | 1401-06-01 | 7.0000000 + 2 | 2 | 400 | 1401-06-01 | 6.0000000 + 1 | 1 | 500 | 1401-06-01 | 5.0000000 + 3 | 3 | 500 | 1401-06-01 | 4.0000000 + 3 | 3 | 600 | 1401-06-01 | 3.0000000 + 4 | 4 | 700 | 1401-06-01 | 2.0000000 + 4 | 4 | 800 | 1401-06-01 | 1.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.vn asc); -- mvd 1->4; 3->5; 3->6; + pn | cn | vn | to_char | to_char | to_char +-----+----+----+-------------------+-------------------+------------------- + 200 | 1 | 10 | 11.0000000 | 1.0000000 | 1.0000000 + 100 | 1 | 20 | 9.0000000 | 2.0000000 | 2.0000000 + 500 | 3 | 30 | 4.0000000 | 3.0000000 | 3.0000000 + 500 | 1 | 30 | 5.0000000 | 4.0000000 | 4.0000000 + 300 | 1 | 30 | 8.0000000 | 5.0000000 | 5.0000000 + 600 | 3 | 30 | 3.0000000 | 6.0000000 | 6.0000000 + 100 | 2 | 40 | 12.0000000 | 7.0000000 | 7.0000000 + 200 | 3 | 40 | 10.0000000 | 8.0000000 | 8.0000000 + 700 | 4 | 40 | 2.0000000 | 9.0000000 | 9.0000000 + 800 | 4 | 40 | 1.0000000 | 10.0000000 | 10.0000000 + 400 | 2 | 50 | 6.0000000 | 11.0000000 | 11.0000000 + 400 | 1 | 50 | 7.0000000 | 12.0000000 | 12.0000000 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 1 following and 2 following ); -- mvd 5->4; + pn | dt | qty | to_char | cn +-----+------------+------+-------------------+---- + 100 | 1401-01-01 | 1100 | 2.0000000 | 2 + 200 | 1401-03-01 | 1 | 2.0000000 | 1 + 200 | 1401-04-01 | 1 | 2.0000000 | 3 + 100 | 1401-05-01 | 1 | 2.0000000 | 1 + 300 | 1401-05-02 | 1 | 2.0000000 | 1 + 400 | 1401-06-01 | 1 | 2.0000000 | 1 + 400 | 1401-06-01 | 1 | 2.0000000 | 2 + 500 | 1401-06-01 | 12 | 2.0000000 | 1 + 500 | 1401-06-01 | 12 | 2.0000000 | 3 + 600 | 1401-06-01 | 12 | 2.0000000 | 3 + 700 | 1401-06-01 | 1 | 1.0000000 | 4 + 800 | 1401-06-01 | 1 | .0000000 | 4 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows between 3 following and 1 following ), +win2 as (order by ow_sale.cn asc); -- mvd 4->3; 6->5; + qty | dt | to_char | pn | to_char | cn +------+------------+-------------------+-----+-------------------+---- + 1 | 1401-06-01 | .0000000 | 400 | 1.0000000 | 1 + 1 | 1401-03-01 | .0000000 | 200 | 1.0000000 | 1 + 12 | 1401-06-01 | .0000000 | 500 | 1.0000000 | 1 + 1 | 1401-05-01 | .0000000 | 100 | 1.0000000 | 1 + 1 | 1401-05-02 | .0000000 | 300 | 1.0000000 | 1 + 1100 | 1401-01-01 | .0000000 | 100 | 6.0000000 | 2 + 1 | 1401-06-01 | .0000000 | 400 | 6.0000000 | 2 + 1 | 1401-04-01 | .0000000 | 200 | 8.0000000 | 3 + 12 | 1401-06-01 | .0000000 | 500 | 8.0000000 | 3 + 12 | 1401-06-01 | .0000000 | 600 | 8.0000000 | 3 + 1 | 1401-06-01 | .0000000 | 700 | 11.0000000 | 4 + 1 | 1401-06-01 | .0000000 | 800 | 11.0000000 | 4 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.cn) following and unbounded following ); -- mvd 4->3; + pn | prc | to_char | vn +-----+------+-------------------+---- + 100 | 2400 | 10.0000000 | 40 + 200 | 0 | 10.0000000 | 10 + 200 | 0 | 7.0000000 | 40 + 100 | 0 | 8.0000000 | 20 + 300 | 0 | 7.0000000 | 30 + 400 | 0 | 6.0000000 | 50 + 400 | 0 | 4.0000000 | 50 + 500 | 5 | 4.0000000 | 30 + 500 | 5 | 1.0000000 | 30 + 600 | 5 | .0000000 | 30 + 700 | 1 | .0000000 | 40 + 800 | 1 | .0000000 | 40 +(12 rows) + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc rows between floor(ow_sale.qty) following and unbounded following ), +win2 as (partition by ow_sale.qty order by ow_sale.cn asc); -- mvd 4,5->3; 2,7->6; + dt | cn | to_char | vn | pn | to_char | qty +------------+----+-------------------+----+-----+-------------------+------ + 1401-01-01 | 2 | .0000000 | 40 | 100 | 1.0000000 | 1100 + 1401-03-01 | 1 | 10.0000000 | 10 | 200 | .5000000 | 1 + 1401-04-01 | 3 | 9.0000000 | 40 | 200 | .7500000 | 1 + 1401-05-01 | 1 | 8.0000000 | 20 | 100 | .5000000 | 1 + 1401-05-02 | 1 | 7.0000000 | 30 | 300 | .5000000 | 1 + 1401-06-01 | 1 | 6.0000000 | 50 | 400 | .5000000 | 1 + 1401-06-01 | 2 | 5.0000000 | 50 | 400 | .6250000 | 1 + 1401-06-01 | 1 | .0000000 | 30 | 500 | .3333333 | 12 + 1401-06-01 | 3 | .0000000 | 30 | 500 | 1.0000000 | 12 + 1401-06-01 | 3 | .0000000 | 30 | 600 | 1.0000000 | 12 + 1401-06-01 | 4 | 1.0000000 | 40 | 700 | 1.0000000 | 1 + 1401-06-01 | 4 | .0000000 | 40 | 800 | 1.0000000 | 1 +(12 rows) + +-- COUNT() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.vn asc,ow_sale.cn desc); -- mvd 3,4,1,5->2; + vn | to_char | cn | dt | pn +----+-------------------+----+------------+----- + 10 | 1.0000000 | 1 | 1401-03-01 | 200 + 30 | 1.0000000 | 3 | 1401-06-01 | 600 + 40 | 1.0000000 | 4 | 1401-06-01 | 700 + 40 | 1.0000000 | 2 | 1401-01-01 | 100 + 40 | 1.0000000 | 3 | 1401-04-01 | 200 + 20 | 1.0000000 | 1 | 1401-05-01 | 100 + 30 | 1.0000000 | 1 | 1401-05-02 | 300 + 50 | 1.0000000 | 2 | 1401-06-01 | 400 + 50 | 2.0000000 | 1 | 1401-06-01 | 400 + 30 | 1.0000000 | 3 | 1401-06-01 | 500 + 30 | 2.0000000 | 1 | 1401-06-01 | 500 + 40 | 1.0000000 | 4 | 1401-06-01 | 800 +(12 rows) + +-- COUNT() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty order by ow_sale.cn asc); -- mvd 2,4,5->3; 2,4,5->6; 2,4,5->7; + vn | cn | to_char | dt | qty | to_char | to_char +----+----+-------------------+------------+------+-------------------+------------------- + 40 | 3 | 1.0000000 | 1401-04-01 | 1 | 1.0000000 | 1.0000000 + 20 | 1 | 1.0000000 | 1401-05-01 | 1 | 1.0000000 | 1.0000000 + 30 | 1 | 1.0000000 | 1401-06-01 | 12 | 1.0000000 | .3333333 + 30 | 3 | 3.0000000 | 1401-06-01 | 12 | 2.0000000 | 1.0000000 + 30 | 3 | 3.0000000 | 1401-06-01 | 12 | 2.0000000 | 1.0000000 + 40 | 2 | 1.0000000 | 1401-01-01 | 1100 | 1.0000000 | 1.0000000 + 10 | 1 | 1.0000000 | 1401-03-01 | 1 | 1.0000000 | 1.0000000 + 30 | 1 | 1.0000000 | 1401-05-02 | 1 | 1.0000000 | 1.0000000 + 50 | 1 | 1.0000000 | 1401-06-01 | 1 | 1.0000000 | .2500000 + 50 | 2 | 2.0000000 | 1401-06-01 | 1 | 2.0000000 | .5000000 + 40 | 4 | 4.0000000 | 1401-06-01 | 1 | 3.0000000 | 1.0000000 + 40 | 4 | 4.0000000 | 1401-06-01 | 1 | 3.0000000 | 1.0000000 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.pn asc range unbounded preceding ); -- mvd 2,5->4; + dt | vn | dt | to_char | pn +------------+----+------------+-------------------+----- + 1401-05-02 | 30 | 1401-05-02 | 1.0000000 | 300 + 1401-06-01 | 50 | 1401-06-01 | 2.0000000 | 400 + 1401-06-01 | 50 | 1401-06-01 | 2.0000000 | 400 + 1401-06-01 | 30 | 1401-06-01 | 2.0000000 | 500 + 1401-06-01 | 30 | 1401-06-01 | 2.0000000 | 500 + 1401-06-01 | 40 | 1401-06-01 | 1.0000000 | 800 + 1401-05-01 | 20 | 1401-05-01 | 1.0000000 | 100 + 1401-01-01 | 40 | 1401-01-01 | 1.0000000 | 100 + 1401-03-01 | 10 | 1401-03-01 | 1.0000000 | 200 + 1401-04-01 | 40 | 1401-04-01 | 1.0000000 | 200 + 1401-06-01 | 30 | 1401-06-01 | 1.0000000 | 600 + 1401-06-01 | 40 | 1401-06-01 | 1.0000000 | 700 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.cn order by ow_sale.vn desc range unbounded preceding ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.prc order by ow_sale.cn desc); -- mvd 1,4,5,6->3; 8,1,4->7; + cn | qty | to_char | dt | vn | pn | to_char | prc +----+------+-------------------+------------+----+-----+-------------------+------ + 1 | 1 | 1.0000000 | 1401-05-01 | 20 | 100 | 1.0000000 | 0 + 3 | 1 | 1.0000000 | 1401-04-01 | 40 | 200 | 1.0000000 | 0 + 1 | 1 | 1.0000000 | 1401-05-02 | 30 | 300 | 1.0000000 | 0 + 1 | 1 | 1.0000000 | 1401-06-01 | 50 | 400 | 2.0000000 | 0 + 1 | 12 | 1.0000000 | 1401-06-01 | 30 | 500 | 3.0000000 | 5 + 3 | 12 | 1.0000000 | 1401-06-01 | 30 | 500 | 1.0000000 | 5 + 4 | 1 | 1.0000000 | 1401-06-01 | 40 | 700 | 1.0000000 | 1 + 2 | 1100 | 1.0000000 | 1401-01-01 | 40 | 100 | 1.0000000 | 2400 + 1 | 1 | 1.0000000 | 1401-03-01 | 10 | 200 | 1.0000000 | 0 + 2 | 1 | 1.0000000 | 1401-06-01 | 50 | 400 | 1.0000000 | 0 + 3 | 12 | 1.0000000 | 1401-06-01 | 30 | 600 | 1.0000000 | 5 + 4 | 1 | 1.0000000 | 1401-06-01 | 40 | 800 | 1.0000000 | 1 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.qty order by ow_sale.cn asc range floor(ow_sale.prc/ow_sale.cn) preceding ); -- mvd 1,4,5,6->3; + cn | prc | to_char | dt | qty | vn +----+------+-------------------+------------+------+---- + 1 | 0 | 1.0000000 | 1401-03-01 | 1 | 10 + 1 | 0 | 1.0000000 | 1401-05-02 | 1 | 30 + 1 | 0 | 1.0000000 | 1401-06-01 | 1 | 50 + 2 | 2400 | 1.0000000 | 1401-01-01 | 1100 | 40 + 3 | 0 | 1.0000000 | 1401-04-01 | 1 | 40 + 1 | 0 | 1.0000000 | 1401-05-01 | 1 | 20 + 1 | 5 | 1.0000000 | 1401-06-01 | 12 | 30 + 3 | 5 | 2.0000000 | 1401-06-01 | 12 | 30 + 3 | 5 | 2.0000000 | 1401-06-01 | 12 | 30 + 4 | 1 | 2.0000000 | 1401-06-01 | 1 | 40 + 4 | 1 | 2.0000000 | 1401-06-01 | 1 | 40 + 2 | 0 | 1.0000000 | 1401-06-01 | 1 | 50 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.qty,ow_sale.prc,ow_sale.pn order by ow_sale.cn asc range 1 preceding ), +win2 as (order by ow_sale.pn desc); -- mvd 2,4,5,6,7->3; 7->8; + vn | prc | to_char | cn | dt | qty | pn | to_char +----+------+-------------------+----+------------+------+-----+------------------- + 40 | 1 | 1.0000000 | 4 | 1401-06-01 | 1 | 800 | 1.0000000 + 40 | 1 | 1.0000000 | 4 | 1401-06-01 | 1 | 700 | 2.0000000 + 30 | 5 | 1.0000000 | 3 | 1401-06-01 | 12 | 600 | 3.0000000 + 30 | 5 | 1.0000000 | 1 | 1401-06-01 | 12 | 500 | 4.0000000 + 30 | 5 | 1.0000000 | 3 | 1401-06-01 | 12 | 500 | 4.0000000 + 50 | 0 | 1.0000000 | 1 | 1401-06-01 | 1 | 400 | 5.0000000 + 50 | 0 | 2.0000000 | 2 | 1401-06-01 | 1 | 400 | 5.0000000 + 30 | 0 | 1.0000000 | 1 | 1401-05-02 | 1 | 300 | 6.0000000 + 40 | 0 | 1.0000000 | 3 | 1401-04-01 | 1 | 200 | 7.0000000 + 10 | 0 | 1.0000000 | 1 | 1401-03-01 | 1 | 200 | 7.0000000 + 40 | 2400 | 1.0000000 | 2 | 1401-01-01 | 1100 | 100 | 8.0000000 + 20 | 0 | 1.0000000 | 1 | 1401-05-01 | 1 | 100 | 8.0000000 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.pn asc range current row ); -- mvd 1,2,7->6; + cn | vn | cn | qty | cn | to_char | pn +----+----+----+------+----+-------------------+----- + 1 | 10 | 1 | 1 | 1 | 1.0000000 | 200 + 1 | 20 | 1 | 1 | 1 | 1.0000000 | 100 + 2 | 50 | 2 | 1 | 2 | 1.0000000 | 400 + 3 | 30 | 3 | 12 | 3 | 1.0000000 | 600 + 3 | 40 | 3 | 1 | 3 | 1.0000000 | 200 + 4 | 40 | 4 | 1 | 4 | 1.0000000 | 800 + 1 | 30 | 1 | 1 | 1 | 1.0000000 | 300 + 1 | 30 | 1 | 12 | 1 | 1.0000000 | 500 + 1 | 50 | 1 | 1 | 1 | 1.0000000 | 400 + 2 | 40 | 2 | 1100 | 2 | 1.0000000 | 100 + 3 | 30 | 3 | 12 | 3 | 1.0000000 | 500 + 4 | 40 | 4 | 1 | 4 | 1.0000000 | 700 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.vn asc range current row ), +win2 as (order by ow_sale.pn desc); -- mvd 4,5->3; 7->6; + qty | qty | to_char | cn | vn | to_char | pn +------+------+-------------------+----+----+-------------------+----- + 1 | 1 | 2.0000000 | 4 | 40 | 1.0000000 | 800 + 1 | 1 | 2.0000000 | 4 | 40 | 2.0000000 | 700 + 12 | 12 | 2.0000000 | 3 | 30 | 3.0000000 | 600 + 12 | 12 | 2.0000000 | 3 | 30 | 4.0000000 | 500 + 12 | 12 | 2.0000000 | 1 | 30 | 4.0000000 | 500 + 1 | 1 | 1.0000000 | 1 | 50 | 5.0000000 | 400 + 1 | 1 | 1.0000000 | 2 | 50 | 5.0000000 | 400 + 1 | 1 | 2.0000000 | 1 | 30 | 6.0000000 | 300 + 1 | 1 | 1.0000000 | 3 | 40 | 7.0000000 | 200 + 1 | 1 | 1.0000000 | 1 | 10 | 7.0000000 | 200 + 1 | 1 | 1.0000000 | 1 | 20 | 8.0000000 | 100 + 1100 | 1100 | 1.0000000 | 2 | 40 | 8.0000000 | 100 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.qty order by ow_sale.pn asc range between unbounded preceding and 0 preceding ); -- mvd 2,1,7,5->6; + qty | cn | cn | dt | pn | to_char | vn +------+----+----+------------+-----+-------------------+---- + 1 | 1 | 1 | 1401-05-02 | 300 | 1.0000000 | 30 + 12 | 1 | 1 | 1401-06-01 | 500 | 1.0000000 | 30 + 12 | 3 | 3 | 1401-06-01 | 500 | 1.0000000 | 30 + 1100 | 2 | 2 | 1401-01-01 | 100 | 1.0000000 | 40 + 1 | 4 | 4 | 1401-06-01 | 700 | 1.0000000 | 40 + 1 | 1 | 1 | 1401-06-01 | 400 | 1.0000000 | 50 + 1 | 1 | 1 | 1401-03-01 | 200 | 1.0000000 | 10 + 1 | 1 | 1 | 1401-05-01 | 100 | 1.0000000 | 20 + 12 | 3 | 3 | 1401-06-01 | 600 | 1.0000000 | 30 + 1 | 3 | 3 | 1401-04-01 | 200 | 1.0000000 | 40 + 1 | 4 | 4 | 1401-06-01 | 800 | 1.0000000 | 40 + 1 | 2 | 2 | 1401-06-01 | 400 | 1.0000000 | 50 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.vn desc range between unbounded preceding and 4 preceding ), +win2 as (order by ow_sale.cn asc); -- mvd 3,4->2; 6->5; + qty | to_char | vn | pn | to_char | cn +------+-------------------+----+-----+-------------------+---- + 1 | .0000000 | 30 | 300 | .4166667 | 1 + 1 | .0000000 | 50 | 400 | .4166667 | 1 + 12 | .0000000 | 30 | 500 | .4166667 | 1 + 1 | 1.0000000 | 20 | 100 | .4166667 | 1 + 1 | 1.0000000 | 10 | 200 | .4166667 | 1 + 1100 | .0000000 | 40 | 100 | .5833333 | 2 + 1 | .0000000 | 50 | 400 | .5833333 | 2 + 12 | .0000000 | 30 | 500 | .8333333 | 3 + 1 | .0000000 | 40 | 200 | .8333333 | 3 + 12 | .0000000 | 30 | 600 | .8333333 | 3 + 1 | .0000000 | 40 | 700 | 1.0000000 | 4 + 1 | .0000000 | 40 | 800 | 1.0000000 | 4 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.pn desc range between unbounded preceding and current row ); -- mvd 2,5,1,6->4; + qty | dt | qty | to_char | cn | pn +------+------------+------+-------------------+----+----- + 1 | 1401-03-01 | 1 | 1.0000000 | 1 | 200 + 1 | 1401-06-01 | 1 | 1.0000000 | 2 | 400 + 1 | 1401-06-01 | 1 | 1.0000000 | 4 | 800 + 12 | 1401-06-01 | 12 | 1.0000000 | 1 | 500 + 12 | 1401-06-01 | 12 | 1.0000000 | 3 | 500 + 1 | 1401-05-01 | 1 | 1.0000000 | 1 | 100 + 1 | 1401-05-02 | 1 | 1.0000000 | 1 | 300 + 1 | 1401-06-01 | 1 | 1.0000000 | 1 | 400 + 1 | 1401-04-01 | 1 | 1.0000000 | 3 | 200 + 1 | 1401-06-01 | 1 | 1.0000000 | 4 | 700 + 12 | 1401-06-01 | 12 | 1.0000000 | 3 | 600 + 1100 | 1401-01-01 | 1100 | 1.0000000 | 2 | 100 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.pn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.vn asc); -- mvd 3,4,1->2; 4->5; + pn | to_char | dt | vn | to_char +-----+-------------------+------------+----+------------------- + 200 | 1.0000000 | 1401-03-01 | 10 | 1.0000000 + 100 | 1.0000000 | 1401-05-01 | 20 | 2.0000000 + 300 | 1.0000000 | 1401-05-02 | 30 | 3.0000000 + 500 | 2.0000000 | 1401-06-01 | 30 | 3.0000000 + 500 | 2.0000000 | 1401-06-01 | 30 | 3.0000000 + 600 | 3.0000000 | 1401-06-01 | 30 | 3.0000000 + 700 | 1.0000000 | 1401-06-01 | 40 | 4.0000000 + 800 | 2.0000000 | 1401-06-01 | 40 | 4.0000000 + 100 | 1.0000000 | 1401-01-01 | 40 | 4.0000000 + 200 | 1.0000000 | 1401-04-01 | 40 | 4.0000000 + 400 | 2.0000000 | 1401-06-01 | 50 | 5.0000000 + 400 | 2.0000000 | 1401-06-01 | 50 | 5.0000000 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.vn order by ow_sale.cn desc range between unbounded preceding and 3 following ); -- mvd 6,1,3,2,7->5; + cn | qty | vn | vn | to_char | prc | pn +----+------+----+----+-------------------+------+----- + 1 | 1 | 20 | 20 | 1.0000000 | 0 | 100 + 1 | 1 | 10 | 10 | 1.0000000 | 0 | 200 + 3 | 1 | 40 | 40 | 1.0000000 | 0 | 200 + 4 | 1 | 40 | 40 | 1.0000000 | 1 | 800 + 3 | 12 | 30 | 30 | 2.0000000 | 5 | 500 + 1 | 12 | 30 | 30 | 2.0000000 | 5 | 500 + 1 | 1 | 30 | 30 | 1.0000000 | 0 | 300 + 2 | 1 | 50 | 50 | 2.0000000 | 0 | 400 + 1 | 1 | 50 | 50 | 2.0000000 | 0 | 400 + 4 | 1 | 40 | 40 | 1.0000000 | 1 | 700 + 3 | 12 | 30 | 30 | 1.0000000 | 5 | 600 + 2 | 1100 | 40 | 40 | 1.0000000 | 2400 | 100 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.vn order by ow_sale.pn desc range between unbounded preceding and unbounded following ); -- mvd 1,4,5,2,6->3; + prc | vn | to_char | cn | dt | pn +------+----+-------------------+----+------------+----- + 0 | 40 | 1.0000000 | 3 | 1401-04-01 | 200 + 0 | 20 | 1.0000000 | 1 | 1401-05-01 | 100 + 0 | 50 | 1.0000000 | 2 | 1401-06-01 | 400 + 2400 | 40 | 1.0000000 | 2 | 1401-01-01 | 100 + 0 | 10 | 1.0000000 | 1 | 1401-03-01 | 200 + 0 | 30 | 1.0000000 | 1 | 1401-05-02 | 300 + 0 | 50 | 1.0000000 | 1 | 1401-06-01 | 400 + 5 | 30 | 1.0000000 | 1 | 1401-06-01 | 500 + 5 | 30 | 2.0000000 | 3 | 1401-06-01 | 600 + 5 | 30 | 2.0000000 | 3 | 1401-06-01 | 500 + 1 | 40 | 2.0000000 | 4 | 1401-06-01 | 800 + 1 | 40 | 2.0000000 | 4 | 1401-06-01 | 700 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.vn asc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.pn desc), +win4 as (order by ow_sale.cn desc); -- mvd 4,1,3->7; 1->8; 5->9; 1->10; 1->11; 1->12; + cn | qty | vn | dt | pn | dt | to_char | to_char | to_char | to_char | to_char | to_char +----+------+----+------------+-----+------------+-------------------+-------------------+-------------------+-------------------+-------------------+------------------- + 2 | 1100 | 40 | 1401-01-01 | 100 | 1401-01-01 | 1.0000000 | .5833333 | .0000000 | 6.0000000 | 6.0000000 | 6.0000000 + 1 | 1 | 10 | 1401-03-01 | 200 | 1401-03-01 | 1.0000000 | 1.0000000 | 11.0000000 | 10.0000000 | 10.0000000 | 10.0000000 + 3 | 1 | 40 | 1401-04-01 | 200 | 1401-04-01 | 1.0000000 | .4166667 | 43.0000000 | 3.0000000 | 3.0000000 | 3.0000000 + 1 | 1 | 20 | 1401-05-01 | 100 | 1401-05-01 | 1.0000000 | 1.0000000 | 21.0000000 | 8.0000000 | 8.0000000 | 8.0000000 + 1 | 1 | 30 | 1401-05-02 | 300 | 1401-05-02 | 1.0000000 | 1.0000000 | 31.0000000 | 12.0000000 | 12.0000000 | 12.0000000 + 1 | 1 | 50 | 1401-06-01 | 400 | 1401-06-01 | 1.0000000 | 1.0000000 | 51.0000000 | 11.0000000 | 11.0000000 | 11.0000000 + 2 | 1 | 50 | 1401-06-01 | 400 | 1401-06-01 | 1.0000000 | .5833333 | 52.0000000 | 7.0000000 | 7.0000000 | 7.0000000 + 1 | 12 | 30 | 1401-06-01 | 500 | 1401-06-01 | 1.0000000 | 1.0000000 | .0000000 | 9.0000000 | 9.0000000 | 9.0000000 + 3 | 12 | 30 | 1401-06-01 | 500 | 1401-06-01 | 2.0000000 | .4166667 | .0000000 | 4.0000000 | 4.0000000 | 4.0000000 + 3 | 12 | 30 | 1401-06-01 | 600 | 1401-06-01 | 2.0000000 | .4166667 | .0000000 | 5.0000000 | 5.0000000 | 5.0000000 + 4 | 1 | 40 | 1401-06-01 | 700 | 1401-06-01 | 2.0000000 | .1666667 | 44.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 4 | 1 | 40 | 1401-06-01 | 800 | 1401-06-01 | 2.0000000 | .1666667 | .0000000 | 2.0000000 | 2.0000000 | 2.0000000 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.prc,ow_sale.pn order by ow_sale.vn asc range between floor(ow_sale.cn) preceding and 4 preceding ); -- mvd 7,1,8,2->6; + vn | pn | vn | vn | cn | to_char | prc | qty +----+-----+----+----+----+-------------------+------+------ + 20 | 100 | 20 | 20 | 1 | .0000000 | 0 | 1 + 10 | 200 | 10 | 10 | 1 | .0000000 | 0 | 1 + 40 | 200 | 40 | 40 | 3 | .0000000 | 0 | 1 + 40 | 800 | 40 | 40 | 4 | .0000000 | 1 | 1 + 30 | 500 | 30 | 30 | 1 | .0000000 | 5 | 12 + 30 | 500 | 30 | 30 | 3 | .0000000 | 5 | 12 + 30 | 300 | 30 | 30 | 1 | .0000000 | 0 | 1 + 50 | 400 | 50 | 50 | 2 | .0000000 | 0 | 1 + 50 | 400 | 50 | 50 | 1 | .0000000 | 0 | 1 + 40 | 700 | 40 | 40 | 4 | .0000000 | 1 | 1 + 30 | 600 | 30 | 30 | 3 | .0000000 | 5 | 12 + 40 | 100 | 40 | 40 | 2 | .0000000 | 2400 | 1100 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc order by ow_sale.cn asc range between 0 preceding and 0 preceding ), +win2 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 6,3->5; 1,8->7; 1,8->9; 3->10; + vn | dt | cn | cn | to_char | prc | to_char | pn | to_char | to_char +----+------------+----+----+-------------------+------+-------------------+-----+-------------------+------------------- + 40 | 1401-01-01 | 2 | 2 | 1.0000000 | 2400 | 4.0000000 | 100 | 4.0000000 | .0000000 + 10 | 1401-03-01 | 1 | 1 | 4.0000000 | 0 | 1.0000000 | 200 | 1.0000000 | .0000000 + 40 | 1401-04-01 | 3 | 3 | 1.0000000 | 0 | 3.0000000 | 200 | 3.0000000 | .0000000 + 20 | 1401-05-01 | 1 | 1 | 4.0000000 | 0 | 1.0000000 | 100 | 1.0000000 | .0000000 + 30 | 1401-05-02 | 1 | 1 | 4.0000000 | 0 | 4.0000000 | 300 | 4.0000000 | .0000000 + 50 | 1401-06-01 | 1 | 1 | 4.0000000 | 0 | 1.0000000 | 400 | 1.0000000 | .0000000 + 50 | 1401-06-01 | 2 | 2 | 1.0000000 | 0 | 2.0000000 | 400 | 2.0000000 | .0000000 + 30 | 1401-06-01 | 1 | 1 | 1.0000000 | 5 | 3.0000000 | 500 | 3.0000000 | .0000000 + 30 | 1401-06-01 | 3 | 3 | 2.0000000 | 5 | 2.0000000 | 500 | 2.0000000 | .0000000 + 30 | 1401-06-01 | 3 | 3 | 2.0000000 | 5 | 1.0000000 | 600 | 1.0000000 | .0000000 + 40 | 1401-06-01 | 4 | 4 | 2.0000000 | 1 | 2.0000000 | 700 | 2.0000000 | 5.0000000 + 40 | 1401-06-01 | 4 | 4 | 2.0000000 | 1 | 1.0000000 | 800 | 1.0000000 | 1.0000000 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.cn desc range between 4 preceding and current row ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc); -- mvd 2,1->3; 2->4; 6,2,7,1->5; 2->8; + pn | cn | to_char | to_char | to_char | prc | vn | to_char +-----+----+-------------------+-------------------+-------------------+------+----+------------------- + 100 | 1 | 1.0000000 | 1.0000000 | .0000000 | 0 | 20 | 5.0000000 + 200 | 1 | 1.0000000 | 2.0000000 | .0000000 | 0 | 10 | 5.0000000 + 300 | 1 | 1.0000000 | 3.0000000 | .0000000 | 0 | 30 | 5.0000000 + 400 | 1 | 1.0000000 | 4.0000000 | 1.0000000 | 0 | 50 | 5.0000000 + 500 | 1 | 1.0000000 | 5.0000000 | 1.0000000 | 5 | 30 | 5.0000000 + 100 | 2 | 1.0000000 | 6.0000000 | .0000000 | 2400 | 40 | 7.0000000 + 400 | 2 | 1.0000000 | 7.0000000 | .0000000 | 0 | 50 | 7.0000000 + 200 | 3 | 1.0000000 | 8.0000000 | .0000000 | 0 | 40 | 10.0000000 + 600 | 3 | 1.0000000 | 9.0000000 | .0000000 | 5 | 30 | 10.0000000 + 500 | 3 | 1.0000000 | 10.0000000 | .0000000 | 5 | 30 | 10.0000000 + 700 | 4 | 1.0000000 | 11.0000000 | .0000000 | 1 | 40 | 12.0000000 + 800 | 4 | 1.0000000 | 12.0000000 | .0000000 | 1 | 40 | 12.0000000 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc range between floor(ow_sale.pn+ow_sale.pn) preceding and floor(ow_sale.qty) following ); -- mvd 6,7,1->5; + vn | qty | pn | vn | to_char | dt | cn +----+------+-----+----+-------------------+------------+---- + 20 | 1 | 100 | 20 | 1.0000000 | 1401-05-01 | 1 + 50 | 1 | 400 | 50 | 1.0000000 | 1401-06-01 | 2 + 40 | 1 | 200 | 40 | 1.0000000 | 1401-04-01 | 3 + 40 | 1 | 800 | 40 | 2.0000000 | 1401-06-01 | 4 + 40 | 1 | 700 | 40 | 2.0000000 | 1401-06-01 | 4 + 10 | 1 | 200 | 10 | 1.0000000 | 1401-03-01 | 1 + 30 | 1 | 300 | 30 | 1.0000000 | 1401-05-02 | 1 + 30 | 12 | 500 | 30 | 1.0000000 | 1401-06-01 | 1 + 50 | 1 | 400 | 50 | 1.0000000 | 1401-06-01 | 1 + 40 | 1100 | 100 | 40 | 1.0000000 | 1401-01-01 | 2 + 30 | 12 | 600 | 30 | 2.0000000 | 1401-06-01 | 3 + 30 | 12 | 500 | 30 | 2.0000000 | 1401-06-01 | 3 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.qty order by ow_sale.vn asc range between 3 preceding and 0 following ), +win2 as (partition by ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc); -- mvd 1,3,7->6; 9,3->8; + qty | cn | vn | dt | vn | to_char | pn | to_char | prc +------+----+----+------------+----+-------------------+-----+-------------------+------ + 1 | 1 | 30 | 1401-05-02 | 30 | 1.0000000 | 300 | .0000000 | 0 + 12 | 3 | 30 | 1401-06-01 | 30 | 1.0000000 | 600 | .0000000 | 5 + 1 | 4 | 40 | 1401-06-01 | 40 | 1.0000000 | 800 | .0000000 | 1 + 1100 | 2 | 40 | 1401-01-01 | 40 | 1.0000000 | 100 | .0000000 | 2400 + 1 | 1 | 50 | 1401-06-01 | 50 | 2.0000000 | 400 | .0000000 | 0 + 1 | 2 | 50 | 1401-06-01 | 50 | 2.0000000 | 400 | .0000000 | 0 + 1 | 1 | 10 | 1401-03-01 | 10 | 1.0000000 | 200 | .0000000 | 0 + 1 | 1 | 20 | 1401-05-01 | 20 | 1.0000000 | 100 | .0000000 | 0 + 12 | 1 | 30 | 1401-06-01 | 30 | 2.0000000 | 500 | .0000000 | 5 + 12 | 3 | 30 | 1401-06-01 | 30 | 2.0000000 | 500 | .0000000 | 5 + 1 | 3 | 40 | 1401-04-01 | 40 | 1.0000000 | 200 | .0000000 | 0 + 1 | 4 | 40 | 1401-06-01 | 40 | 1.0000000 | 700 | .0000000 | 1 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.qty,ow_sale.pn order by ow_sale.vn asc range between 3 preceding and unbounded following ); -- mvd 7,8,2,1->6; + pn | qty | prc | cn | cn | to_char | dt | vn +-----+------+------+----+----+-------------------+------------+---- + 100 | 1 | 0 | 1 | 1 | 1.0000000 | 1401-05-01 | 20 + 200 | 1 | 0 | 3 | 3 | 1.0000000 | 1401-04-01 | 40 + 300 | 1 | 0 | 1 | 1 | 1.0000000 | 1401-05-02 | 30 + 400 | 1 | 0 | 1 | 1 | 2.0000000 | 1401-06-01 | 50 + 400 | 1 | 0 | 2 | 2 | 2.0000000 | 1401-06-01 | 50 + 600 | 12 | 5 | 3 | 3 | 1.0000000 | 1401-06-01 | 30 + 800 | 1 | 1 | 4 | 4 | 1.0000000 | 1401-06-01 | 40 + 100 | 1100 | 2400 | 2 | 2 | 1.0000000 | 1401-01-01 | 40 + 200 | 1 | 0 | 1 | 1 | 1.0000000 | 1401-03-01 | 10 + 500 | 12 | 5 | 1 | 1 | 2.0000000 | 1401-06-01 | 30 + 500 | 12 | 5 | 3 | 3 | 2.0000000 | 1401-06-01 | 30 + 700 | 1 | 1 | 4 | 4 | 1.0000000 | 1401-06-01 | 40 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn*ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.vn order by ow_sale.cn asc range between 0 preceding and unbounded following ), +win2 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.vn desc); -- mvd 3,4,1->2; 3,6,1,7->5; 4->8; + qty | to_char | cn | vn | to_char | dt | pn | to_char +------+-------------------+----+----+-------------------+------------+-----+------------------- + 1 | 1.0000000 | 2 | 50 | .0000000 | 1401-06-01 | 400 | 1.0000000 + 1 | 1.0000000 | 1 | 50 | .0000000 | 1401-06-01 | 400 | 2.0000000 + 1 | 1.0000000 | 3 | 40 | .0000000 | 1401-04-01 | 200 | 3.0000000 + 1100 | 1.0000000 | 2 | 40 | .0000000 | 1401-01-01 | 100 | 4.0000000 + 1 | 2.0000000 | 4 | 40 | .0000000 | 1401-06-01 | 800 | 5.0000000 + 1 | 2.0000000 | 4 | 40 | .0000000 | 1401-06-01 | 700 | 6.0000000 + 12 | 1.0000000 | 1 | 30 | .0000000 | 1401-06-01 | 500 | 7.0000000 + 12 | 2.0000000 | 3 | 30 | .0000000 | 1401-06-01 | 600 | 8.0000000 + 12 | 2.0000000 | 3 | 30 | .0000000 | 1401-06-01 | 500 | 9.0000000 + 1 | 1.0000000 | 1 | 30 | .0000000 | 1401-05-02 | 300 | 10.0000000 + 1 | 1.0000000 | 1 | 20 | .0000000 | 1401-05-01 | 100 | 11.0000000 + 1 | 1.0000000 | 1 | 10 | .0000000 | 1401-03-01 | 200 | 12.0000000 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.vn asc range between current row and current row ); -- mvd 3,4,1->2; + pn | to_char | cn | vn +-----+-------------------+----+---- + 200 | 1.0000000 | 1 | 10 + 100 | 1.0000000 | 1 | 20 + 600 | 1.0000000 | 3 | 30 + 200 | 1.0000000 | 3 | 40 + 800 | 1.0000000 | 4 | 40 + 400 | 1.0000000 | 2 | 50 + 300 | 1.0000000 | 1 | 30 + 500 | 1.0000000 | 1 | 30 + 500 | 1.0000000 | 3 | 30 + 100 | 1.0000000 | 2 | 40 + 700 | 1.0000000 | 4 | 40 + 400 | 1.0000000 | 1 | 50 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc/ow_sale.qty) as int),cast (floor(ow_sale.qty*ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn-ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc range between current row and current row ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.pn asc), +win4 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc); -- mvd 3,5,1->6; 2->7; 2->8; 2->9; 3,5,4,2->10; + vn | pn | cn | qty | dt | to_char | to_char | to_char | to_char | to_char +----+-----+----+------+------------+-------------------+-------------------+-------------------+-------------------+------------------- + 40 | 100 | 2 | 1100 | 1401-01-01 | 1.0000000 | 12.0000000 | 12.0000000 | .0000000 | .0000000 + 10 | 200 | 1 | 1 | 1401-03-01 | 1.0000000 | 9.0000000 | 9.0000000 | .0000000 | .0000000 + 40 | 200 | 3 | 1 | 1401-04-01 | 1.0000000 | 10.0000000 | 10.0000000 | .0000000 | .0000000 + 20 | 100 | 1 | 1 | 1401-05-01 | 1.0000000 | 11.0000000 | 11.0000000 | .0000000 | .0000000 + 30 | 300 | 1 | 1 | 1401-05-02 | 1.0000000 | 8.0000000 | 8.0000000 | .0000000 | .0000000 + 50 | 400 | 1 | 1 | 1401-06-01 | 1.0000000 | 6.0000000 | 6.0000000 | .0000000 | .0000000 + 50 | 400 | 2 | 1 | 1401-06-01 | 1.0000000 | 7.0000000 | 7.0000000 | .0000000 | .0000000 + 30 | 500 | 1 | 12 | 1401-06-01 | 1.0000000 | 4.0000000 | 4.0000000 | .0000000 | .0000000 + 30 | 500 | 3 | 12 | 1401-06-01 | 2.0000000 | 5.0000000 | 5.0000000 | .0000000 | .0000000 + 30 | 600 | 3 | 12 | 1401-06-01 | 2.0000000 | 3.0000000 | 3.0000000 | .0000000 | .0000000 + 40 | 700 | 4 | 1 | 1401-06-01 | 2.0000000 | 2.0000000 | 2.0000000 | .0000000 | .0000000 + 40 | 800 | 4 | 1 | 1401-06-01 | 2.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.pn desc range between current row and floor(ow_sale.vn) following ); -- mvd 3,5,2,1->4; + pn | vn | cn | to_char | dt +-----+----+----+-------------------+------------ + 100 | 20 | 1 | 1.0000000 | 1401-05-01 + 200 | 10 | 1 | 1.0000000 | 1401-03-01 + 200 | 40 | 3 | 1.0000000 | 1401-04-01 + 400 | 50 | 2 | 1.0000000 | 1401-06-01 + 600 | 30 | 3 | 1.0000000 | 1401-06-01 + 800 | 40 | 4 | 1.0000000 | 1401-06-01 + 100 | 40 | 2 | 1.0000000 | 1401-01-01 + 300 | 30 | 1 | 1.0000000 | 1401-05-02 + 400 | 50 | 1 | 1.0000000 | 1401-06-01 + 500 | 30 | 1 | 1.0000000 | 1401-06-01 + 500 | 30 | 3 | 1.0000000 | 1401-06-01 + 700 | 40 | 4 | 1.0000000 | 1401-06-01 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc/ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc range between current row and 0 following ), +win2 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.vn asc), +win3 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc); -- mvd 4,2,5->3; 2,5->6; 4,5,8->7; 2,5->9; + qty | cn | to_char | dt | vn | to_char | to_char | pn | to_char +------+----+-------------------+------------+----+-------------------+-------------------+-----+------------------- + 1 | 1 | 1.0000000 | 1401-05-01 | 20 | 1.0000000 | .0000000 | 100 | 1.0000000 + 1 | 2 | 1.0000000 | 1401-06-01 | 50 | 1.0000000 | .0000000 | 400 | 1.0000000 + 1 | 3 | 1.0000000 | 1401-04-01 | 40 | 1.0000000 | .0000000 | 200 | 1.0000000 + 1 | 4 | 2.0000000 | 1401-06-01 | 40 | 1.0000000 | .0000000 | 700 | 1.0000000 + 1 | 4 | 2.0000000 | 1401-06-01 | 40 | 1.0000000 | .0000000 | 800 | 2.0000000 + 1 | 1 | 1.0000000 | 1401-03-01 | 10 | 1.0000000 | .0000000 | 200 | 1.0000000 + 1 | 1 | 1.0000000 | 1401-05-02 | 30 | 1.0000000 | .0000000 | 300 | 2.0000000 + 12 | 1 | 1.0000000 | 1401-06-01 | 30 | 1.0000000 | .0000000 | 500 | 1.0000000 + 1 | 1 | 1.0000000 | 1401-06-01 | 50 | 1.0000000 | .0000000 | 400 | 1.0000000 + 1100 | 2 | 1.0000000 | 1401-01-01 | 40 | 1.0000000 | .0000000 | 100 | 1.0000000 + 12 | 3 | 2.0000000 | 1401-06-01 | 30 | 1.0000000 | .0000000 | 500 | 1.0000000 + 12 | 3 | 2.0000000 | 1401-06-01 | 30 | 1.0000000 | .0000000 | 600 | 2.0000000 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc order by ow_sale.vn asc range between current row and unbounded following ); -- mvd 5,6->4; + dt | dt | pn | to_char | prc | vn +------------+------------+-----+-------------------+------+---- + 1401-06-01 | 1401-06-01 | 800 | 2.0000000 | 1 | 40 + 1401-06-01 | 1401-06-01 | 700 | 2.0000000 | 1 | 40 + 1401-03-01 | 1401-03-01 | 200 | 6.0000000 | 0 | 10 + 1401-05-01 | 1401-05-01 | 100 | 5.0000000 | 0 | 20 + 1401-05-02 | 1401-05-02 | 300 | 4.0000000 | 0 | 30 + 1401-04-01 | 1401-04-01 | 200 | 3.0000000 | 0 | 40 + 1401-06-01 | 1401-06-01 | 400 | 2.0000000 | 0 | 50 + 1401-06-01 | 1401-06-01 | 400 | 2.0000000 | 0 | 50 + 1401-06-01 | 1401-06-01 | 600 | 3.0000000 | 5 | 30 + 1401-06-01 | 1401-06-01 | 500 | 3.0000000 | 5 | 30 + 1401-06-01 | 1401-06-01 | 500 | 3.0000000 | 5 | 30 + 1401-01-01 | 1401-01-01 | 100 | 1.0000000 | 2400 | 40 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.prc,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn desc range between current row and unbounded following ), +win2 as (order by ow_sale.pn asc); -- mvd 1,7->6; 9->8; 9->10; 9->11; + cn | cn | prc | qty | dt | to_char | vn | to_char | pn | to_char | to_char +----+----+------+------+------------+-------------------+----+-------------------+-----+-------------------+------------------- + 1 | 1 | 0 | 1 | 1401-05-01 | 1.0000000 | 20 | 1.0000000 | 100 | .1666667 | 1.0000000 + 2 | 2 | 2400 | 1100 | 1401-01-01 | 1.0000000 | 40 | 2.0000000 | 100 | .1666667 | 1.0000000 + 3 | 3 | 0 | 1 | 1401-04-01 | 2.0000000 | 40 | 3.0000000 | 200 | .3333333 | 3.0000000 + 1 | 1 | 0 | 1 | 1401-03-01 | 1.0000000 | 10 | 4.0000000 | 200 | .3333333 | 3.0000000 + 1 | 1 | 0 | 1 | 1401-05-02 | 2.0000000 | 30 | 5.0000000 | 300 | .4166667 | 5.0000000 + 1 | 1 | 0 | 1 | 1401-06-01 | 1.0000000 | 50 | 6.0000000 | 400 | .5833333 | 6.0000000 + 2 | 2 | 0 | 1 | 1401-06-01 | 2.0000000 | 50 | 7.0000000 | 400 | .5833333 | 6.0000000 + 1 | 1 | 5 | 12 | 1401-06-01 | 2.0000000 | 30 | 8.0000000 | 500 | .7500000 | 8.0000000 + 3 | 3 | 5 | 12 | 1401-06-01 | 4.0000000 | 30 | 9.0000000 | 500 | .7500000 | 8.0000000 + 3 | 3 | 5 | 12 | 1401-06-01 | 4.0000000 | 30 | 10.0000000 | 600 | .8333333 | 10.0000000 + 4 | 4 | 1 | 1 | 1401-06-01 | 4.0000000 | 40 | 11.0000000 | 700 | .9166667 | 11.0000000 + 4 | 4 | 1 | 1 | 1401-06-01 | 4.0000000 | 40 | 12.0000000 | 800 | 1.0000000 | 12.0000000 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn asc range between 3 following and floor(ow_sale.cn+ow_sale.vn) following ); -- mvd 2,1->7; + vn | cn | qty | pn | vn | vn | to_char +----+----+------+-----+----+----+------------------- + 10 | 1 | 1 | 200 | 10 | 10 | .0000000 + 20 | 1 | 1 | 100 | 20 | 20 | .0000000 + 30 | 1 | 12 | 500 | 30 | 30 | .0000000 + 30 | 1 | 1 | 300 | 30 | 30 | .0000000 + 30 | 3 | 12 | 500 | 30 | 30 | .0000000 + 30 | 3 | 12 | 600 | 30 | 30 | .0000000 + 40 | 2 | 1100 | 100 | 40 | 40 | .0000000 + 40 | 3 | 1 | 200 | 40 | 40 | .0000000 + 40 | 4 | 1 | 700 | 40 | 40 | .0000000 + 40 | 4 | 1 | 800 | 40 | 40 | .0000000 + 50 | 1 | 1 | 400 | 50 | 50 | .0000000 + 50 | 2 | 1 | 400 | 50 | 50 | .0000000 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.prc+ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn/ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.cn,ow_sale.dt order by ow_sale.pn desc range between floor(ow_sale.qty+ow_sale.prc) following and 4 following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 1,6,7,2,8->5; 7->9; 7->10; 8->11; + prc | qty | vn | prc | to_char | dt | cn | pn | to_char | to_char | to_char +------+------+----+------+-------------------+------------+----+-----+-------------------+-------------------+------------------- + 2400 | 1100 | 40 | 2400 | .0000000 | 1401-01-01 | 2 | 100 | .0000000 | .0000000 | .0000000 + 0 | 1 | 10 | 0 | .0000000 | 1401-03-01 | 1 | 200 | .0000000 | .0909091 | 1.0000000 + 0 | 1 | 40 | 0 | .0000000 | 1401-04-01 | 3 | 200 | .0000000 | .1818182 | .0000000 + 0 | 1 | 20 | 0 | .0000000 | 1401-05-01 | 1 | 100 | .0000000 | .2727273 | 1.0000000 + 0 | 1 | 30 | 0 | .0000000 | 1401-05-02 | 1 | 300 | .0000000 | .3636364 | 1.0000000 + 0 | 1 | 50 | 0 | .0000000 | 1401-06-01 | 1 | 400 | .0000000 | .4545455 | 1.0000000 + 0 | 1 | 50 | 0 | .0000000 | 1401-06-01 | 2 | 400 | .0000000 | .5454545 | 1.0000000 + 5 | 12 | 30 | 5 | .0000000 | 1401-06-01 | 1 | 500 | .0000000 | .6363636 | 1.0000000 + 5 | 12 | 30 | 5 | .0000000 | 1401-06-01 | 3 | 500 | .0000000 | .7272727 | 1.0000000 + 5 | 12 | 30 | 5 | .0000000 | 1401-06-01 | 3 | 600 | .0000000 | .8181818 | 1.0000000 + 1 | 1 | 40 | 1 | .0000000 | 1401-06-01 | 4 | 700 | 5.0000000 | .9090909 | 1.0000000 + 1 | 1 | 40 | 1 | .0000000 | 1401-06-01 | 4 | 800 | 5.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.dt order by ow_sale.cn desc range between 3 following and unbounded following ); -- mvd 6,2,7,8->5; + pn | dt | pn | pn | to_char | cn | vn | qty +-----+------------+-----+-----+-------------------+----+----+------ + 100 | 1401-05-01 | 100 | 100 | .0000000 | 1 | 20 | 1 + 200 | 1401-04-01 | 200 | 200 | .0000000 | 3 | 40 | 1 + 600 | 1401-06-01 | 600 | 600 | .0000000 | 3 | 30 | 12 + 500 | 1401-06-01 | 500 | 500 | .0000000 | 3 | 30 | 12 + 500 | 1401-06-01 | 500 | 500 | .0000000 | 1 | 30 | 12 + 200 | 1401-03-01 | 200 | 200 | .0000000 | 1 | 10 | 1 + 300 | 1401-05-02 | 300 | 300 | .0000000 | 1 | 30 | 1 + 800 | 1401-06-01 | 800 | 800 | .0000000 | 4 | 40 | 1 + 700 | 1401-06-01 | 700 | 700 | .0000000 | 4 | 40 | 1 + 400 | 1401-06-01 | 400 | 400 | .0000000 | 2 | 50 | 1 + 400 | 1401-06-01 | 400 | 400 | .0000000 | 1 | 50 | 1 + 100 | 1401-01-01 | 100 | 100 | .0000000 | 2 | 40 | 1100 +(12 rows) + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.pn asc range between 1 following and unbounded following ), +win2 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc), +win4 as (partition by ow_sale.pn order by ow_sale.cn asc); -- mvd 3,4,5->2; 7,4,1,5->6; 7,4,1,5->8; 4->9; 4->10; 7,5->11; + qty | to_char | dt | vn | pn | to_char | cn | to_char | to_char | to_char | to_char +------+-------------------+------------+----+-----+-------------------+----+-------------------+-------------------+-------------------+------------------- + 1100 | .0000000 | 1401-01-01 | 40 | 100 | 1.0000000 | 2 | 1.0000000 | .0000000 | 1.0000000 | 2.0000000 + 1 | .0000000 | 1401-03-01 | 10 | 200 | 1.0000000 | 1 | 1.0000000 | .0000000 | 2.0000000 | 1.0000000 + 1 | .0000000 | 1401-04-01 | 40 | 200 | 1.0000000 | 3 | 1.0000000 | .0000000 | 3.0000000 | 2.0000000 + 1 | .0000000 | 1401-05-01 | 20 | 100 | 1.0000000 | 1 | 1.0000000 | .0000000 | 4.0000000 | 1.0000000 + 1 | .0000000 | 1401-05-02 | 30 | 300 | 1.0000000 | 1 | 1.0000000 | .0000000 | 5.0000000 | 1.0000000 + 1 | .0000000 | 1401-06-01 | 50 | 400 | 1.0000000 | 1 | 1.0000000 | .0000000 | 6.0000000 | 1.0000000 + 1 | .0000000 | 1401-06-01 | 50 | 400 | 1.0000000 | 2 | 1.0000000 | .0000000 | 7.0000000 | 2.0000000 + 12 | .0000000 | 1401-06-01 | 30 | 500 | 1.0000000 | 1 | 1.0000000 | .0000000 | 8.0000000 | 1.0000000 + 12 | .0000000 | 1401-06-01 | 30 | 500 | 1.0000000 | 3 | 1.0000000 | .0000000 | 9.0000000 | 2.0000000 + 12 | .0000000 | 1401-06-01 | 30 | 600 | 1.0000000 | 3 | 1.0000000 | .0000000 | 10.0000000 | 1.0000000 + 1 | .0000000 | 1401-06-01 | 40 | 700 | 1.0000000 | 4 | 1.0000000 | .0000000 | 11.0000000 | 1.0000000 + 1 | .0000000 | 1401-06-01 | 40 | 800 | 1.0000000 | 4 | 1.0000000 | .0000000 | 12.0000000 | 1.0000000 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows unbounded preceding ); -- mvd 8,2,9,1,10->7; + qty | cn | qty | qty | cn | cn | to_char | dt | vn | pn +------+----+------+------+----+----+-------------------+------------+----+----- + 1 | 1 | 1 | 1 | 1 | 1 | 1.0000000 | 1401-03-01 | 10 | 200 + 12 | 1 | 12 | 12 | 1 | 1 | 1.0000000 | 1401-06-01 | 30 | 500 + 1 | 2 | 1 | 1 | 2 | 2 | 1.0000000 | 1401-06-01 | 50 | 400 + 12 | 3 | 12 | 12 | 3 | 3 | 1.0000000 | 1401-06-01 | 30 | 500 + 1 | 4 | 1 | 1 | 4 | 4 | 1.0000000 | 1401-06-01 | 40 | 800 + 1 | 1 | 1 | 1 | 1 | 1 | 1.0000000 | 1401-05-01 | 20 | 100 + 1 | 1 | 1 | 1 | 1 | 1 | 1.0000000 | 1401-05-02 | 30 | 300 + 1 | 1 | 1 | 1 | 1 | 1 | 1.0000000 | 1401-06-01 | 50 | 400 + 1100 | 2 | 1100 | 1100 | 2 | 2 | 1.0000000 | 1401-01-01 | 40 | 100 + 1 | 3 | 1 | 1 | 3 | 3 | 1.0000000 | 1401-04-01 | 40 | 200 + 12 | 3 | 12 | 12 | 3 | 3 | 1.0000000 | 1401-06-01 | 30 | 600 + 1 | 4 | 1 | 1 | 4 | 4 | 1.0000000 | 1401-06-01 | 40 | 700 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows unbounded preceding ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.pn order by ow_sale.pn desc); -- mvd 4,5,1->3; 4,5,7->6; + vn | qty | to_char | cn | dt | to_char | pn +----+------+-------------------+----+------------+-------------------+----- + 40 | 1 | 1.0000000 | 3 | 1401-04-01 | 1.0000000 | 200 + 20 | 1 | 1.0000000 | 1 | 1401-05-01 | 1.0000000 | 100 + 40 | 1 | 1.0000000 | 4 | 1401-06-01 | 1.0000000 | 700 + 40 | 1 | 2.0000000 | 4 | 1401-06-01 | 1.0000000 | 800 + 50 | 1 | 1.0000000 | 2 | 1401-06-01 | 1.0000000 | 400 + 40 | 1100 | 1.0000000 | 2 | 1401-01-01 | 1.0000000 | 100 + 10 | 1 | 1.0000000 | 1 | 1401-03-01 | 1.0000000 | 200 + 30 | 1 | 1.0000000 | 1 | 1401-05-02 | 1.0000000 | 300 + 30 | 12 | 1.0000000 | 1 | 1401-06-01 | 1.0000000 | 500 + 30 | 12 | 1.0000000 | 3 | 1401-06-01 | 1.0000000 | 500 + 30 | 12 | 2.0000000 | 3 | 1401-06-01 | 1.0000000 | 600 + 50 | 1 | 1.0000000 | 1 | 1401-06-01 | 1.0000000 | 400 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.cn desc rows 9 preceding ); -- mvd 4,5,2->3; + vn | pn | to_char | cn | qty +----+-----+-------------------+----+------ + 30 | 500 | 1.0000000 | 1 | 12 + 50 | 400 | 1.0000000 | 2 | 1 + 30 | 500 | 1.0000000 | 3 | 12 + 30 | 600 | 2.0000000 | 3 | 12 + 40 | 700 | 1.0000000 | 4 | 1 + 40 | 800 | 2.0000000 | 4 | 1 + 10 | 200 | 1.0000000 | 1 | 1 + 20 | 100 | 2.0000000 | 1 | 1 + 30 | 300 | 3.0000000 | 1 | 1 + 50 | 400 | 4.0000000 | 1 | 1 + 40 | 100 | 1.0000000 | 2 | 1100 + 40 | 200 | 1.0000000 | 3 | 1 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.pn asc rows floor(ow_sale.prc) preceding ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.cn order by ow_sale.pn asc), +win4 as (order by ow_sale.vn desc); -- mvd 6,7,8,1->5; 8->9; 7,1->10; 8->11; + pn | pn | dt | pn | to_char | prc | cn | vn | to_char | to_char | to_char +-----+-----+------------+-----+-------------------+------+----+----+-------------------+-------------------+------------------- + 400 | 400 | 1401-06-01 | 400 | 1.0000000 | 0 | 2 | 50 | 1.0000000 | 2.0000000 | 1.0000000 + 400 | 400 | 1401-06-01 | 400 | 1.0000000 | 0 | 1 | 50 | 1.0000000 | 4.0000000 | 2.0000000 + 100 | 100 | 1401-01-01 | 100 | 1.0000000 | 2400 | 2 | 40 | .8333333 | 1.0000000 | 3.0000000 + 200 | 200 | 1401-04-01 | 200 | 1.0000000 | 0 | 3 | 40 | .8333333 | 1.0000000 | 4.0000000 + 700 | 700 | 1401-06-01 | 700 | 1.0000000 | 1 | 4 | 40 | .8333333 | 1.0000000 | 5.0000000 + 800 | 800 | 1401-06-01 | 800 | 2.0000000 | 1 | 4 | 40 | .8333333 | 2.0000000 | 6.0000000 + 500 | 500 | 1401-06-01 | 500 | 1.0000000 | 5 | 1 | 30 | .5000000 | 5.0000000 | 7.0000000 + 500 | 500 | 1401-06-01 | 500 | 2.0000000 | 5 | 3 | 30 | .5000000 | 2.0000000 | 8.0000000 + 300 | 300 | 1401-05-02 | 300 | 1.0000000 | 0 | 1 | 30 | .5000000 | 3.0000000 | 9.0000000 + 600 | 600 | 1401-06-01 | 600 | 3.0000000 | 5 | 3 | 30 | .5000000 | 3.0000000 | 10.0000000 + 100 | 100 | 1401-05-01 | 100 | 1.0000000 | 0 | 1 | 20 | .1666667 | 1.0000000 | 11.0000000 + 200 | 200 | 1401-03-01 | 200 | 1.0000000 | 0 | 1 | 10 | .0833333 | 2.0000000 | 12.0000000 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn desc rows current row ); -- mvd 2,4->6; + prc | cn | qty | pn | qty | to_char +------+----+------+-----+------+------------------- + 0 | 1 | 1 | 200 | 1 | 1.0000000 + 0 | 1 | 1 | 100 | 1 | 1.0000000 + 0 | 1 | 1 | 300 | 1 | 1.0000000 + 0 | 1 | 1 | 400 | 1 | 1.0000000 + 5 | 1 | 12 | 500 | 12 | 1.0000000 + 0 | 3 | 1 | 200 | 1 | 1.0000000 + 5 | 3 | 12 | 500 | 12 | 1.0000000 + 5 | 3 | 12 | 600 | 12 | 1.0000000 + 2400 | 2 | 1100 | 100 | 1100 | 1.0000000 + 0 | 2 | 1 | 400 | 1 | 1.0000000 + 1 | 4 | 1 | 700 | 1 | 1.0000000 + 1 | 4 | 1 | 800 | 1 | 1.0000000 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn-ow_sale.pn) as int),cast (floor(ow_sale.qty/ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc,ow_sale.pn asc rows current row ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 6,1,4,7,3->5; 3->8; 3->9; 3->10; 7->11; + cn | cn | pn | dt | to_char | prc | vn | to_char | to_char | to_char | to_char +----+----+-----+------------+-------------------+------+----+-------------------+-------------------+-------------------+------------------- + 2 | 2 | 100 | 1401-01-01 | 1.0000000 | 2400 | 40 | 12.0000000 | 8.0000000 | 8.0000000 | .0000000 + 1 | 1 | 200 | 1401-03-01 | 1.0000000 | 0 | 10 | 9.0000000 | 7.0000000 | 7.0000000 | -190.0000000 + 3 | 3 | 200 | 1401-04-01 | 1.0000000 | 0 | 40 | 10.0000000 | 7.0000000 | 7.0000000 | -160.0000000 + 1 | 1 | 100 | 1401-05-01 | 1.0000000 | 0 | 20 | 11.0000000 | 8.0000000 | 8.0000000 | -80.0000000 + 1 | 1 | 300 | 1401-05-02 | 1.0000000 | 0 | 30 | 8.0000000 | 6.0000000 | 6.0000000 | -270.0000000 + 1 | 1 | 400 | 1401-06-01 | 1.0000000 | 0 | 50 | 6.0000000 | 5.0000000 | 5.0000000 | -350.0000000 + 2 | 2 | 400 | 1401-06-01 | 1.0000000 | 0 | 50 | 7.0000000 | 5.0000000 | 5.0000000 | -350.0000000 + 1 | 1 | 500 | 1401-06-01 | 1.0000000 | 5 | 30 | 4.0000000 | 4.0000000 | 4.0000000 | -470.0000000 + 3 | 3 | 500 | 1401-06-01 | 1.0000000 | 5 | 30 | 5.0000000 | 4.0000000 | 4.0000000 | -470.0000000 + 3 | 3 | 600 | 1401-06-01 | 1.0000000 | 5 | 30 | 3.0000000 | 3.0000000 | 3.0000000 | -570.0000000 + 4 | 4 | 700 | 1401-06-01 | 1.0000000 | 1 | 40 | 2.0000000 | 2.0000000 | 2.0000000 | -660.0000000 + 4 | 4 | 800 | 1401-06-01 | 1.0000000 | 1 | 40 | 1.0000000 | 1.0000000 | 1.0000000 | -760.0000000 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between unbounded preceding and 1 preceding ); -- mvd 2,6,7,8->5; + qty | prc | qty | pn | to_char | cn | dt | vn +------+------+------+-----+-------------------+----+------------+---- + 1 | 0 | 1 | 200 | .0000000 | 1 | 1401-03-01 | 10 + 1 | 0 | 1 | 300 | .0000000 | 1 | 1401-05-02 | 30 + 1 | 0 | 1 | 400 | .0000000 | 1 | 1401-06-01 | 50 + 1 | 0 | 1 | 400 | 1.0000000 | 2 | 1401-06-01 | 50 + 12 | 5 | 12 | 500 | .0000000 | 1 | 1401-06-01 | 30 + 12 | 5 | 12 | 500 | 1.0000000 | 3 | 1401-06-01 | 30 + 12 | 5 | 12 | 600 | 2.0000000 | 3 | 1401-06-01 | 30 + 1 | 0 | 1 | 200 | .0000000 | 3 | 1401-04-01 | 40 + 1 | 0 | 1 | 100 | .0000000 | 1 | 1401-05-01 | 20 + 1 | 1 | 1 | 700 | .0000000 | 4 | 1401-06-01 | 40 + 1 | 1 | 1 | 800 | 1.0000000 | 4 | 1401-06-01 | 40 + 1100 | 2400 | 1100 | 100 | .0000000 | 2 | 1401-01-01 | 40 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and 1 preceding ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.vn order by ow_sale.vn desc); -- mvd 1,5,2,3->4; 1->6; 2->7; 2->8; 1->9; + cn | vn | pn | to_char | dt | to_char | to_char | to_char | to_char +----+----+-----+-------------------+------------+-------------------+-------------------+-------------------+------------------- + 1 | 50 | 400 | .0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 20 | 100 | .0000000 | 1401-05-01 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 30 | 300 | .0000000 | 1401-05-02 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 10 | 200 | .0000000 | 1401-03-01 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 30 | 500 | .0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 2 | 50 | 400 | 1.0000000 | 1401-06-01 | 6.0000000 | 1.0000000 | 1.0000000 | 2.0000000 + 2 | 40 | 100 | .0000000 | 1401-01-01 | 6.0000000 | 1.0000000 | 1.0000000 | 2.0000000 + 3 | 40 | 200 | .0000000 | 1401-04-01 | 8.0000000 | 1.0000000 | 1.0000000 | 3.0000000 + 3 | 30 | 600 | .0000000 | 1401-06-01 | 8.0000000 | 1.0000000 | 1.0000000 | 3.0000000 + 3 | 30 | 500 | 1.0000000 | 1401-06-01 | 8.0000000 | 1.0000000 | 1.0000000 | 3.0000000 + 4 | 40 | 800 | .0000000 | 1401-06-01 | 11.0000000 | 1.0000000 | 1.0000000 | 4.0000000 + 4 | 40 | 700 | .0000000 | 1401-06-01 | 11.0000000 | 1.0000000 | 1.0000000 | 4.0000000 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.pn asc rows between unbounded preceding and current row ); -- mvd 1,3,4->2; + cn | to_char | vn | pn +----+-------------------+----+----- + 1 | 1.0000000 | 30 | 300 + 1 | 1.0000000 | 50 | 400 + 2 | 2.0000000 | 50 | 400 + 1 | 1.0000000 | 30 | 500 + 3 | 2.0000000 | 30 | 500 + 4 | 1.0000000 | 40 | 800 + 2 | 1.0000000 | 40 | 100 + 1 | 2.0000000 | 20 | 100 + 1 | 1.0000000 | 10 | 200 + 3 | 2.0000000 | 40 | 200 + 3 | 1.0000000 | 30 | 600 + 4 | 1.0000000 | 40 | 700 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.cn asc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.cn asc); -- mvd 4,1,5->3; 4->6; + dt | qty | to_char | cn | vn | to_char +------------+------+-------------------+----+----+------------------- + 1401-06-01 | 1 | 1.0000000 | 1 | 50 | .4166667 + 1401-05-02 | 1 | 1.0000000 | 1 | 30 | .4166667 + 1401-06-01 | 12 | 1.0000000 | 1 | 30 | .4166667 + 1401-03-01 | 1 | 1.0000000 | 1 | 10 | .4166667 + 1401-05-01 | 1 | 1.0000000 | 1 | 20 | .4166667 + 1401-01-01 | 1100 | 1.0000000 | 2 | 40 | .5833333 + 1401-06-01 | 1 | 2.0000000 | 2 | 50 | .5833333 + 1401-06-01 | 12 | 3.0000000 | 3 | 30 | .8333333 + 1401-06-01 | 12 | 2.0000000 | 3 | 30 | .8333333 + 1401-04-01 | 1 | 1.0000000 | 3 | 40 | .8333333 + 1401-06-01 | 1 | 1.0000000 | 4 | 40 | 1.0000000 + 1401-06-01 | 1 | 2.0000000 | 4 | 40 | 1.0000000 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.cn) following ); -- mvd 6,1->5; + vn | pn | prc | dt | to_char | cn +----+-----+------+------------+-------------------+---- + 10 | 200 | 0 | 1401-03-01 | 2.0000000 | 1 + 20 | 100 | 0 | 1401-05-01 | 3.0000000 | 1 + 30 | 300 | 0 | 1401-05-02 | 4.0000000 | 1 + 50 | 400 | 0 | 1401-06-01 | 5.0000000 | 1 + 30 | 500 | 5 | 1401-06-01 | 5.0000000 | 1 + 40 | 200 | 0 | 1401-04-01 | 3.0000000 | 3 + 30 | 500 | 5 | 1401-06-01 | 3.0000000 | 3 + 30 | 600 | 5 | 1401-06-01 | 3.0000000 | 3 + 40 | 100 | 2400 | 1401-01-01 | 2.0000000 | 2 + 50 | 400 | 0 | 1401-06-01 | 2.0000000 | 2 + 40 | 700 | 1 | 1401-06-01 | 2.0000000 | 4 + 40 | 800 | 1 | 1401-06-01 | 2.0000000 | 4 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.pn/ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and 0 following ), +win2 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.vn asc); -- mvd 1,2->4; 1,3->5; 3->6; + cn | pn | vn | to_char | to_char | to_char +----+-----+----+-------------------+-------------------+------------------- + 1 | 200 | 10 | 1.0000000 | .0000000 | 1.0000000 + 1 | 100 | 20 | 2.0000000 | .0000000 | 2.0000000 + 3 | 600 | 30 | 1.0000000 | .0000000 | 3.0000000 + 1 | 300 | 30 | 1.0000000 | .0000000 | 4.0000000 + 1 | 500 | 30 | 1.0000000 | .0000000 | 5.0000000 + 3 | 500 | 30 | 2.0000000 | .0000000 | 6.0000000 + 4 | 800 | 40 | 1.0000000 | .0000000 | 7.0000000 + 2 | 100 | 40 | 1.0000000 | .0000000 | 8.0000000 + 3 | 200 | 40 | 2.0000000 | .0000000 | 9.0000000 + 4 | 700 | 40 | 1.0000000 | .0000000 | 10.0000000 + 1 | 400 | 50 | 1.0000000 | .0000000 | 11.0000000 + 2 | 400 | 50 | 2.0000000 | .0000000 | 12.0000000 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc rows between unbounded preceding and unbounded following ); -- mvd 3,1->2; + vn | to_char | dt +----+-------------------+------------ + 10 | 1.0000000 | 1401-03-01 + 30 | 1.0000000 | 1401-05-02 + 30 | 3.0000000 | 1401-06-01 + 30 | 3.0000000 | 1401-06-01 + 30 | 3.0000000 | 1401-06-01 + 40 | 2.0000000 | 1401-06-01 + 40 | 2.0000000 | 1401-06-01 + 50 | 2.0000000 | 1401-06-01 + 50 | 2.0000000 | 1401-06-01 + 40 | 1.0000000 | 1401-01-01 + 40 | 1.0000000 | 1401-04-01 + 20 | 1.0000000 | 1401-05-01 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc); -- mvd 2,6,1->5; 8,9,2,6->7; 8,9,2,6->10; 8,9,2,6->11; + pn | cn | cn | cn | to_char | vn | to_char | prc | dt | to_char | to_char +-----+----+----+----+-------------------+----+-------------------+------+------------+-------------------+------------------- + 200 | 1 | 1 | 1 | 1.0000000 | 10 | 1.0000000 | 0 | 1401-03-01 | 1.0000000 | 1.0000000 + 100 | 1 | 1 | 1 | 1.0000000 | 20 | 1.0000000 | 0 | 1401-05-01 | 1.0000000 | 1.0000000 + 300 | 1 | 1 | 1 | 2.0000000 | 30 | 1.0000000 | 0 | 1401-05-02 | 1.0000000 | 1.0000000 + 500 | 1 | 1 | 1 | 2.0000000 | 30 | 1.0000000 | 5 | 1401-06-01 | 1.0000000 | 1.0000000 + 500 | 3 | 3 | 3 | 2.0000000 | 30 | 1.0000000 | 5 | 1401-06-01 | 1.0000000 | 2.0000000 + 600 | 3 | 3 | 3 | 2.0000000 | 30 | 1.0000000 | 5 | 1401-06-01 | 1.0000000 | 1.0000000 + 200 | 3 | 3 | 3 | 1.0000000 | 40 | 1.0000000 | 0 | 1401-04-01 | 1.0000000 | 1.0000000 + 400 | 1 | 1 | 1 | 1.0000000 | 50 | 1.0000000 | 0 | 1401-06-01 | 1.0000000 | 1.0000000 + 100 | 2 | 2 | 2 | 1.0000000 | 40 | 1.0000000 | 2400 | 1401-01-01 | 1.0000000 | 1.0000000 + 700 | 4 | 4 | 4 | 2.0000000 | 40 | 1.0000000 | 1 | 1401-06-01 | 1.0000000 | 2.0000000 + 800 | 4 | 4 | 4 | 2.0000000 | 40 | 1.0000000 | 1 | 1401-06-01 | 1.0000000 | 1.0000000 + 400 | 2 | 2 | 2 | 1.0000000 | 50 | 1.0000000 | 0 | 1401-06-01 | 1.0000000 | 1.0000000 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows between 4 preceding and floor(ow_sale.prc) preceding ); -- mvd 5,3,1->4; + vn | qty | cn | to_char | dt +----+------+----+-------------------+------------ + 20 | 1 | 1 | 1.0000000 | 1401-05-01 + 40 | 1 | 3 | 1.0000000 | 1401-04-01 + 40 | 1 | 4 | .0000000 | 1401-06-01 + 40 | 1 | 4 | 1.0000000 | 1401-06-01 + 50 | 1 | 2 | 1.0000000 | 1401-06-01 + 10 | 1 | 1 | 1.0000000 | 1401-03-01 + 30 | 1 | 1 | 1.0000000 | 1401-05-02 + 30 | 12 | 1 | .0000000 | 1401-06-01 + 30 | 12 | 3 | .0000000 | 1401-06-01 + 30 | 12 | 3 | .0000000 | 1401-06-01 + 40 | 1100 | 2 | .0000000 | 1401-01-01 + 50 | 1 | 1 | 1.0000000 | 1401-06-01 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc rows between 2 preceding and 0 preceding ), +win2 as (order by ow_sale.pn asc); -- mvd 5,7,2,4,3->6; 3->8; + qty | cn | pn | vn | prc | to_char | dt | to_char +------+----+-----+----+------+-------------------+------------+------------------- + 1 | 1 | 100 | 20 | 0 | 1.0000000 | 1401-05-01 | .1666667 + 1100 | 2 | 100 | 40 | 2400 | 1.0000000 | 1401-01-01 | .1666667 + 1 | 1 | 200 | 10 | 0 | 1.0000000 | 1401-03-01 | .3333333 + 1 | 3 | 200 | 40 | 0 | 1.0000000 | 1401-04-01 | .3333333 + 1 | 1 | 300 | 30 | 0 | 1.0000000 | 1401-05-02 | .4166667 + 1 | 1 | 400 | 50 | 0 | 1.0000000 | 1401-06-01 | .5833333 + 1 | 2 | 400 | 50 | 0 | 1.0000000 | 1401-06-01 | .5833333 + 12 | 3 | 500 | 30 | 5 | 1.0000000 | 1401-06-01 | .7500000 + 12 | 1 | 500 | 30 | 5 | 1.0000000 | 1401-06-01 | .7500000 + 12 | 3 | 600 | 30 | 5 | 2.0000000 | 1401-06-01 | .8333333 + 1 | 4 | 700 | 40 | 1 | 1.0000000 | 1401-06-01 | .9166667 + 1 | 4 | 800 | 40 | 1 | 2.0000000 | 1401-06-01 | 1.0000000 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc,ow_sale.cn asc rows between 8 preceding and current row ); -- mvd 4,5,6,2->3; + prc | pn | to_char | cn | dt | vn +------+-----+-------------------+----+------------+---- + 0 | 100 | 1.0000000 | 1 | 1401-05-01 | 20 + 0 | 200 | 1.0000000 | 3 | 1401-04-01 | 40 + 0 | 300 | 1.0000000 | 1 | 1401-05-02 | 30 + 0 | 400 | 1.0000000 | 1 | 1401-06-01 | 50 + 5 | 500 | 1.0000000 | 1 | 1401-06-01 | 30 + 5 | 500 | 1.0000000 | 3 | 1401-06-01 | 30 + 1 | 700 | 1.0000000 | 4 | 1401-06-01 | 40 + 2400 | 100 | 1.0000000 | 2 | 1401-01-01 | 40 + 0 | 200 | 1.0000000 | 1 | 1401-03-01 | 10 + 0 | 400 | 1.0000000 | 2 | 1401-06-01 | 50 + 5 | 600 | 1.0000000 | 3 | 1401-06-01 | 30 + 1 | 800 | 1.0000000 | 4 | 1401-06-01 | 40 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty/ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty*ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.vn desc rows between 2 preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.cn asc), +win4 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc); -- mvd 4,5,1,6,7->3; 5->8; 5,1->9; 5,1->10; 1,7->11; + vn | vn | to_char | prc | cn | qty | pn | to_char | to_char | to_char | to_char +----+----+-------------------+------+----+------+-----+-------------------+-------------------+-------------------+------------------- + 40 | 40 | 1.0000000 | 2400 | 2 | 1100 | 100 | .0000000 | .0000000 | 1.0000000 | .0000000 + 10 | 10 | 1.0000000 | 0 | 1 | 1 | 200 | .0000000 | .0000000 | 1.0000000 | .0000000 + 40 | 40 | 1.0000000 | 0 | 3 | 1 | 200 | 1.0000000 | .0000000 | 1.0000000 | .0000000 + 20 | 20 | 1.0000000 | 0 | 1 | 1 | 100 | 1.0000000 | .0000000 | 1.0000000 | .0000000 + 30 | 30 | 1.0000000 | 0 | 1 | 1 | 300 | 1.0000000 | .0000000 | 2.0000000 | .0000000 + 50 | 50 | 1.0000000 | 0 | 1 | 1 | 400 | .0000000 | .0000000 | 1.0000000 | .0000000 + 50 | 50 | 1.0000000 | 0 | 2 | 1 | 400 | 12.0000000 | .0000000 | 1.0000000 | .0000000 + 30 | 30 | 1.0000000 | 5 | 1 | 12 | 500 | .0000000 | .0000000 | 1.0000000 | .0000000 + 30 | 30 | 1.0000000 | 5 | 3 | 12 | 500 | .0000000 | .0000000 | 1.0000000 | .0000000 + 30 | 30 | 2.0000000 | 5 | 3 | 12 | 600 | .0000000 | .0000000 | 2.0000000 | .0000000 + 40 | 40 | 1.0000000 | 1 | 4 | 1 | 700 | .0000000 | .0000000 | 1.0000000 | .0000000 + 40 | 40 | 2.0000000 | 1 | 4 | 1 | 800 | .0000000 | .0000000 | 2.0000000 | .0000000 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.cn desc rows between 2 preceding and floor(ow_sale.qty+ow_sale.qty) following ); -- mvd 2,3,5,6,1->4; + pn | cn | dt | to_char | vn | qty +-----+----+------------+-------------------+----+------ + 100 | 1 | 1401-05-01 | 1.0000000 | 20 | 1 + 300 | 1 | 1401-05-02 | 1.0000000 | 30 | 1 + 200 | 3 | 1401-04-01 | 1.0000000 | 40 | 1 + 800 | 4 | 1401-06-01 | 1.0000000 | 40 | 1 + 400 | 1 | 1401-06-01 | 2.0000000 | 50 | 1 + 400 | 2 | 1401-06-01 | 2.0000000 | 50 | 1 + 600 | 3 | 1401-06-01 | 1.0000000 | 30 | 12 + 200 | 1 | 1401-03-01 | 1.0000000 | 10 | 1 + 700 | 4 | 1401-06-01 | 1.0000000 | 40 | 1 + 500 | 1 | 1401-06-01 | 2.0000000 | 30 | 12 + 500 | 3 | 1401-06-01 | 2.0000000 | 30 | 12 + 100 | 2 | 1401-01-01 | 1.0000000 | 40 | 1100 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc rows between 0 preceding and unbounded following ); -- mvd 2,3,5->4; + prc | qty | vn | to_char | pn +------+------+----+-------------------+----- + 0 | 1 | 10 | 1.0000000 | 200 + 0 | 1 | 20 | 1.0000000 | 100 + 0 | 1 | 30 | 1.0000000 | 300 + 0 | 1 | 40 | 3.0000000 | 200 + 1 | 1 | 40 | 2.0000000 | 700 + 1 | 1 | 40 | 1.0000000 | 800 + 0 | 1 | 50 | 2.0000000 | 400 + 0 | 1 | 50 | 1.0000000 | 400 + 5 | 12 | 30 | 3.0000000 | 500 + 5 | 12 | 30 | 2.0000000 | 500 + 5 | 12 | 30 | 1.0000000 | 600 + 2400 | 1100 | 40 | 1.0000000 | 100 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.pn asc rows between 1 preceding and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.vn order by ow_sale.pn desc); -- mvd 5,6,7->4; 5,3,1,7->8; + qty | qty | vn | to_char | cn | dt | pn | to_char +------+------+----+-------------------+----+------------+-----+------------------- + 1 | 1 | 40 | 1.0000000 | 3 | 1401-04-01 | 200 | .0000000 + 1 | 1 | 20 | 1.0000000 | 1 | 1401-05-01 | 100 | .0000000 + 1 | 1 | 30 | 1.0000000 | 1 | 1401-05-02 | 300 | .0000000 + 1 | 1 | 50 | 1.0000000 | 1 | 1401-06-01 | 400 | .0000000 + 12 | 12 | 30 | 1.0000000 | 1 | 1401-06-01 | 500 | .0000000 + 12 | 12 | 30 | 1.0000000 | 3 | 1401-06-01 | 500 | .0000000 + 1 | 1 | 40 | 1.0000000 | 4 | 1401-06-01 | 700 | .0000000 + 1100 | 1100 | 40 | 1.0000000 | 2 | 1401-01-01 | 100 | .0000000 + 1 | 1 | 10 | 1.0000000 | 1 | 1401-03-01 | 200 | .0000000 + 1 | 1 | 50 | 1.0000000 | 2 | 1401-06-01 | 400 | .0000000 + 12 | 12 | 30 | 1.0000000 | 3 | 1401-06-01 | 600 | .0000000 + 1 | 1 | 40 | 1.0000000 | 4 | 1401-06-01 | 800 | .0000000 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.pn asc rows between current row and current row ); -- mvd 8,2->7; + vn | pn | pn | qty | cn | pn | to_char | dt +----+-----+-----+------+----+-----+-------------------+------------ + 10 | 200 | 200 | 1 | 1 | 200 | 1.0000000 | 1401-03-01 + 30 | 300 | 300 | 1 | 1 | 300 | 1.0000000 | 1401-05-02 + 50 | 400 | 400 | 1 | 1 | 400 | 1.0000000 | 1401-06-01 + 50 | 400 | 400 | 1 | 2 | 400 | 1.0000000 | 1401-06-01 + 30 | 500 | 500 | 12 | 1 | 500 | 1.0000000 | 1401-06-01 + 30 | 500 | 500 | 12 | 3 | 500 | 1.0000000 | 1401-06-01 + 30 | 600 | 600 | 12 | 3 | 600 | 1.0000000 | 1401-06-01 + 40 | 700 | 700 | 1 | 4 | 700 | 1.0000000 | 1401-06-01 + 40 | 800 | 800 | 1 | 4 | 800 | 1.0000000 | 1401-06-01 + 40 | 100 | 100 | 1100 | 2 | 100 | 1.0000000 | 1401-01-01 + 40 | 200 | 200 | 1 | 3 | 200 | 1.0000000 | 1401-04-01 + 20 | 100 | 100 | 1 | 1 | 100 | 1.0000000 | 1401-05-01 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn-ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.vn desc rows between current row and current row ), +win2 as (partition by ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc), +win3 as (order by ow_sale.cn desc); -- mvd 5,7,1->6; 9,5,7->8; 5->10; 9,5,7->11; + pn | qty | dt | dt | cn | to_char | vn | to_char | prc | to_char | to_char +-----+------+------------+------------+----+-------------------+----+-------------------+------+-------------------+------------------- + 800 | 1 | 1401-06-01 | 1401-06-01 | 4 | 1.0000000 | 40 | .0000000 | 1 | 1.0000000 | 1.0000000 + 700 | 1 | 1401-06-01 | 1401-06-01 | 4 | 1.0000000 | 40 | .0000000 | 1 | 2.0000000 | .5000000 + 600 | 12 | 1401-06-01 | 1401-06-01 | 3 | 1.0000000 | 30 | .0000000 | 5 | 3.0000000 | 1.0000000 + 200 | 1 | 1401-04-01 | 1401-04-01 | 3 | 1.0000000 | 40 | .0000000 | 0 | 4.0000000 | 1.0000000 + 500 | 12 | 1401-06-01 | 1401-06-01 | 3 | 1.0000000 | 30 | .0000000 | 5 | 5.0000000 | .5000000 + 400 | 1 | 1401-06-01 | 1401-06-01 | 2 | 1.0000000 | 50 | .0000000 | 0 | 6.0000000 | 1.0000000 + 100 | 1100 | 1401-01-01 | 1401-01-01 | 2 | 1.0000000 | 40 | .0000000 | 2400 | 7.0000000 | 1.0000000 + 500 | 12 | 1401-06-01 | 1401-06-01 | 1 | 1.0000000 | 30 | .0000000 | 5 | 8.0000000 | 1.0000000 + 300 | 1 | 1401-05-02 | 1401-05-02 | 1 | 1.0000000 | 30 | .0000000 | 0 | 9.0000000 | .7500000 + 100 | 1 | 1401-05-01 | 1401-05-01 | 1 | 1.0000000 | 20 | .0000000 | 0 | 10.0000000 | .5000000 + 400 | 1 | 1401-06-01 | 1401-06-01 | 1 | 1.0000000 | 50 | .0000000 | 0 | 11.0000000 | 1.0000000 + 200 | 1 | 1401-03-01 | 1401-03-01 | 1 | 1.0000000 | 10 | .0000000 | 0 | 12.0000000 | .2500000 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.vn asc rows between current row and 7 following ); -- mvd 3,1,4->2; + vn | to_char | cn | pn +----+-------------------+----+----- + 20 | 1.0000000 | 1 | 100 + 10 | 1.0000000 | 1 | 200 + 50 | 1.0000000 | 2 | 400 + 40 | 1.0000000 | 3 | 200 + 30 | 1.0000000 | 3 | 600 + 40 | 1.0000000 | 4 | 800 + 30 | 1.0000000 | 1 | 300 + 50 | 1.0000000 | 1 | 400 + 30 | 1.0000000 | 1 | 500 + 40 | 1.0000000 | 2 | 100 + 30 | 1.0000000 | 3 | 500 + 40 | 1.0000000 | 4 | 700 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty/ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between current row and floor(ow_sale.pn-ow_sale.vn) following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,4,5->2; 3->6; 3->7; 3->8; 3->9; + qty | to_char | cn | dt | vn | to_char | to_char | to_char | to_char +------+-------------------+----+------------+----+-------------------+-------------------+-------------------+------------------- + 1 | 1.0000000 | 4 | 1401-06-01 | 40 | .1666667 | 800.0000000 | 12.0000000 | 12.0000000 + 1 | 2.0000000 | 4 | 1401-06-01 | 40 | .1666667 | 700.0000000 | 11.0000000 | 11.0000000 + 12 | 4.0000000 | 3 | 1401-06-01 | 30 | .4166667 | 500.0000000 | 9.0000000 | 9.0000000 + 1 | 1.0000000 | 3 | 1401-04-01 | 40 | .4166667 | 200.0000000 | 3.0000000 | 3.0000000 + 12 | 3.0000000 | 3 | 1401-06-01 | 30 | .4166667 | 600.0000000 | 10.0000000 | 10.0000000 + 1 | 6.0000000 | 2 | 1401-06-01 | 50 | .5833333 | 400.0000000 | 7.0000000 | 7.0000000 + 1100 | 1.0000000 | 2 | 1401-01-01 | 40 | .5833333 | .0000000 | 1.0000000 | 1.0000000 + 12 | 5.0000000 | 1 | 1401-06-01 | 30 | 1.0000000 | 500.0000000 | 8.0000000 | 8.0000000 + 1 | 7.0000000 | 1 | 1401-06-01 | 50 | 1.0000000 | 400.0000000 | 6.0000000 | 6.0000000 + 1 | 1.0000000 | 1 | 1401-05-02 | 30 | 1.0000000 | 300.0000000 | 5.0000000 | 5.0000000 + 1 | 1.0000000 | 1 | 1401-05-01 | 20 | 1.0000000 | 100.0000000 | 4.0000000 | 4.0000000 + 1 | 1.0000000 | 1 | 1401-03-01 | 10 | 1.0000000 | 200.0000000 | 2.0000000 | 2.0000000 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc rows between current row and unbounded following ); -- mvd 4,5,6,2->3; + qty | vn | to_char | prc | cn | dt +------+----+-------------------+------+----+------------ + 1 | 40 | 1.0000000 | 0 | 3 | 1401-04-01 + 1 | 20 | 1.0000000 | 0 | 1 | 1401-05-01 + 1 | 50 | 1.0000000 | 0 | 2 | 1401-06-01 + 1100 | 40 | 1.0000000 | 2400 | 2 | 1401-01-01 + 1 | 10 | 1.0000000 | 0 | 1 | 1401-03-01 + 1 | 30 | 1.0000000 | 0 | 1 | 1401-05-02 + 12 | 30 | 1.0000000 | 5 | 1 | 1401-06-01 + 12 | 30 | 2.0000000 | 5 | 3 | 1401-06-01 + 12 | 30 | 1.0000000 | 5 | 3 | 1401-06-01 + 1 | 40 | 2.0000000 | 1 | 4 | 1401-06-01 + 1 | 40 | 1.0000000 | 1 | 4 | 1401-06-01 + 1 | 50 | 1.0000000 | 0 | 1 | 1401-06-01 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.qty order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ), +win2 as (partition by ow_sale.qty order by ow_sale.vn asc), +win3 as (partition by ow_sale.prc order by ow_sale.vn desc); -- mvd 5,6,1->4; 6,5->7; 6,5->8; 10,6->9; 10,6->11; 5,6,1->12; + pn | cn | cn | to_char | qty | vn | to_char | to_char | to_char | prc | to_char | to_char +-----+----+----+-------------------+------+----+-------------------+-------------------+-------------------+------+-------------------+------------------- + 200 | 1 | 1 | 1.0000000 | 1 | 10 | 1.0000000 | .0000000 | 5.0000000 | 0 | 1.0000000 | 1.0000000 + 100 | 1 | 1 | 1.0000000 | 1 | 20 | 2.0000000 | .1428571 | 4.0000000 | 0 | .8000000 | 1.0000000 + 300 | 1 | 1 | 1.0000000 | 1 | 30 | 3.0000000 | .2857143 | 3.0000000 | 0 | .6000000 | 1.0000000 + 800 | 4 | 4 | 1.0000000 | 1 | 40 | 4.0000000 | .4285714 | 1.0000000 | 1 | .0000000 | 1.0000000 + 200 | 3 | 3 | 1.0000000 | 1 | 40 | 5.0000000 | .4285714 | 2.0000000 | 0 | .4000000 | 1.0000000 + 700 | 4 | 4 | 1.0000000 | 1 | 40 | 6.0000000 | .4285714 | 1.0000000 | 1 | .0000000 | 1.0000000 + 400 | 2 | 2 | 1.0000000 | 1 | 50 | 7.0000000 | .8571429 | 1.0000000 | 0 | .0000000 | 1.0000000 + 400 | 1 | 1 | 2.0000000 | 1 | 50 | 8.0000000 | .8571429 | 1.0000000 | 0 | .0000000 | 2.0000000 + 600 | 3 | 3 | 1.0000000 | 12 | 30 | 1.0000000 | .0000000 | 1.0000000 | 5 | .0000000 | 1.0000000 + 500 | 1 | 1 | 2.0000000 | 12 | 30 | 2.0000000 | .0000000 | 1.0000000 | 5 | .0000000 | 2.0000000 + 500 | 3 | 3 | 1.0000000 | 12 | 30 | 3.0000000 | .0000000 | 1.0000000 | 5 | .0000000 | 1.0000000 + 100 | 2 | 2 | 1.0000000 | 1100 | 40 | 1.0000000 | .0000000 | 1.0000000 | 2400 | .0000000 | 1.0000000 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.vn+ow_sale.cn) following and 5 following ); -- mvd 6,7->5; + qty | dt | qty | prc | to_char | cn | vn +------+------------+------+------+-------------------+----+---- + 1 | 1401-03-01 | 1 | 0 | .0000000 | 1 | 10 + 1 | 1401-05-01 | 1 | 0 | .0000000 | 1 | 20 + 1 | 1401-05-02 | 1 | 0 | .0000000 | 1 | 30 + 1 | 1401-06-01 | 1 | 0 | .0000000 | 1 | 50 + 12 | 1401-06-01 | 12 | 5 | .0000000 | 1 | 30 + 1 | 1401-04-01 | 1 | 0 | .0000000 | 3 | 40 + 12 | 1401-06-01 | 12 | 5 | .0000000 | 3 | 30 + 12 | 1401-06-01 | 12 | 5 | .0000000 | 3 | 30 + 1100 | 1401-01-01 | 1100 | 2400 | .0000000 | 2 | 40 + 1 | 1401-06-01 | 1 | 0 | .0000000 | 2 | 50 + 1 | 1401-06-01 | 1 | 1 | .0000000 | 4 | 40 + 1 | 1401-06-01 | 1 | 1 | .0000000 | 4 | 40 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc/ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.pn desc rows between 4 following and 4 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.prc) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.pn desc rows between 4 following and 4 following ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc), +win3 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.pn desc), +win4 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.cn desc), +win5 as (order by ow_sale.cn desc); -- mvd 1,3,4,5,6->2; 1,3,4,5,6->7; 3,5,6->8; 6->9; 4,3,5,6->10; 4->11; + prc | to_char | dt | cn | vn | pn | to_char | to_char | to_char | to_char | to_char +------+-------------------+------------+----+----+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | .0000000 | 1401-06-01 | 4 | 40 | 700 | .0000000 | .0000000 | .0000000 | 1.0000000 | 1.0000000 + 1 | .0000000 | 1401-06-01 | 4 | 40 | 800 | .0000000 | .0000000 | .0000000 | 1.0000000 | 1.0000000 + 5 | .0000000 | 1401-06-01 | 3 | 30 | 500 | .0000000 | .0000000 | .0000000 | .5000000 | 3.0000000 + 5 | .0000000 | 1401-06-01 | 3 | 30 | 600 | .0000000 | .0000000 | .0000000 | 1.0000000 | 3.0000000 + 0 | .0000000 | 1401-04-01 | 3 | 40 | 200 | .0000000 | 40.0000000 | .0000000 | 1.0000000 | 3.0000000 + 0 | .0000000 | 1401-06-01 | 2 | 50 | 400 | .0000000 | 50.0000000 | .0000000 | .5000000 | 6.0000000 + 2400 | .0000000 | 1401-01-01 | 2 | 40 | 100 | .0000000 | .0000000 | .0000000 | 1.0000000 | 6.0000000 + 0 | .0000000 | 1401-06-01 | 1 | 50 | 400 | .0000000 | 50.0000000 | 2.0000000 | 1.0000000 | 8.0000000 + 0 | .0000000 | 1401-05-02 | 1 | 30 | 300 | .0000000 | 30.0000000 | .0000000 | 1.0000000 | 8.0000000 + 5 | .0000000 | 1401-06-01 | 1 | 30 | 500 | .0000000 | .0000000 | .0000000 | 1.0000000 | 8.0000000 + 0 | .0000000 | 1401-03-01 | 1 | 10 | 200 | .0000000 | 10.0000000 | 3.0000000 | 1.0000000 | 8.0000000 + 0 | .0000000 | 1401-05-01 | 1 | 20 | 100 | .0000000 | 20.0000000 | .0000000 | 1.0000000 | 8.0000000 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.pn*ow_sale.prc) following and unbounded following ); -- mvd 3,5,6->4; + vn | vn | dt | to_char | qty | pn +----+----+------------+-------------------+------+----- + 20 | 20 | 1401-05-01 | 1.0000000 | 1 | 100 + 40 | 40 | 1401-04-01 | 1.0000000 | 1 | 200 + 30 | 30 | 1401-05-02 | 1.0000000 | 1 | 300 + 50 | 50 | 1401-06-01 | 2.0000000 | 1 | 400 + 50 | 50 | 1401-06-01 | 1.0000000 | 1 | 400 + 30 | 30 | 1401-06-01 | .0000000 | 12 | 600 + 40 | 40 | 1401-06-01 | .0000000 | 1 | 800 + 40 | 40 | 1401-01-01 | .0000000 | 1100 | 100 + 10 | 10 | 1401-03-01 | 1.0000000 | 1 | 200 + 30 | 30 | 1401-06-01 | .0000000 | 12 | 500 + 30 | 30 | 1401-06-01 | .0000000 | 12 | 500 + 40 | 40 | 1401-06-01 | .0000000 | 1 | 700 +(12 rows) + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.cn,ow_sale.dt order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows between 1 following and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.cn asc); -- mvd 2,4,5->3; 7,2,4,5->6; 2,4,5->8; 10,2->9; 10,2->11; + qty | cn | to_char | vn | pn | to_char | prc | to_char | to_char | dt | to_char +------+----+-------------------+----+-----+-------------------+------+-------------------+-------------------+------------+------------------- + 1 | 1 | .0000000 | 30 | 300 | 1.0000000 | 0 | .0000000 | 1.0000000 | 1401-05-02 | 1.0000000 + 1 | 1 | 1.0000000 | 50 | 400 | 1.0000000 | 0 | 1.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 1 | 2 | .0000000 | 50 | 400 | 2.0000000 | 0 | .0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 12 | 1 | 1.0000000 | 30 | 500 | 1.0000000 | 5 | 1.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 12 | 3 | .0000000 | 30 | 500 | 2.0000000 | 5 | .0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 1 | 4 | .0000000 | 40 | 800 | 1.0000000 | 1 | .0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 1 | 1 | .0000000 | 20 | 100 | 1.0000000 | 0 | .0000000 | 1.0000000 | 1401-05-01 | 1.0000000 + 1100 | 2 | .0000000 | 40 | 100 | 1.0000000 | 2400 | .0000000 | 1.0000000 | 1401-01-01 | 1.0000000 + 1 | 1 | .0000000 | 10 | 200 | 1.0000000 | 0 | .0000000 | 1.0000000 | 1401-03-01 | 1.0000000 + 1 | 3 | .0000000 | 40 | 200 | 1.0000000 | 0 | .0000000 | 1.0000000 | 1401-04-01 | 1.0000000 + 12 | 3 | .0000000 | 30 | 600 | 1.0000000 | 5 | .0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 1 | 4 | .0000000 | 40 | 700 | 1.0000000 | 1 | .0000000 | 1.0000000 | 1401-06-01 | 1.0000000 +(12 rows) + +-- MAX() function with NULL OVER() clause -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (); -- mvd 4->4; + prc | qty | dt | to_char +------+------+------------+------------------- + 0 | 1 | 1401-03-01 | 4.0000000 + 0 | 1 | 1401-05-01 | 4.0000000 + 0 | 1 | 1401-04-01 | 4.0000000 + 5 | 12 | 1401-06-01 | 4.0000000 + 0 | 1 | 1401-06-01 | 4.0000000 + 1 | 1 | 1401-06-01 | 4.0000000 + 0 | 1 | 1401-05-02 | 4.0000000 + 0 | 1 | 1401-06-01 | 4.0000000 + 5 | 12 | 1401-06-01 | 4.0000000 + 5 | 12 | 1401-06-01 | 4.0000000 + 2400 | 1100 | 1401-01-01 | 4.0000000 + 1 | 1 | 1401-06-01 | 4.0000000 +(12 rows) + +-- MAX() function with NULL OVER() clause in combination with other window functions -- +SELECT ow_sale.prc,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn*ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (), +win2 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.pn order by ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc); -- mvd 4->4; 1,3,6->5; 3,8,9,6->7; 4->10; + prc | prc | cn | to_char | to_char | pn | to_char | dt | vn | to_char +------+------+----+-------------------+-------------------+-----+-------------------+------------+----+------------------- + 0 | 0 | 1 | 4.0000000 | 1.0000000 | 300 | .0000000 | 1401-05-02 | 30 | 1100.0000000 + 0 | 0 | 1 | 4.0000000 | 1.0000000 | 400 | .0000000 | 1401-06-01 | 50 | 1100.0000000 + 1 | 1 | 4 | 4.0000000 | 1.0000000 | 800 | .0000000 | 1401-06-01 | 40 | 1100.0000000 + 5 | 5 | 1 | 4.0000000 | 1.0000000 | 500 | .0000000 | 1401-06-01 | 30 | 1100.0000000 + 5 | 5 | 3 | 4.0000000 | 1.0000000 | 500 | .0000000 | 1401-06-01 | 30 | 1100.0000000 + 2400 | 2400 | 2 | 4.0000000 | 1.0000000 | 100 | .0000000 | 1401-01-01 | 40 | 1100.0000000 + 0 | 0 | 1 | 4.0000000 | 1.0000000 | 100 | .0000000 | 1401-05-01 | 20 | 1100.0000000 + 0 | 0 | 1 | 4.0000000 | 1.0000000 | 200 | .0000000 | 1401-03-01 | 10 | 1100.0000000 + 0 | 0 | 2 | 4.0000000 | 1.0000000 | 400 | .0000000 | 1401-06-01 | 50 | 1100.0000000 + 0 | 0 | 3 | 4.0000000 | 1.0000000 | 200 | .0000000 | 1401-04-01 | 40 | 1100.0000000 + 1 | 1 | 4 | 4.0000000 | 1.0000000 | 700 | .0000000 | 1401-06-01 | 40 | 1100.0000000 + 5 | 5 | 3 | 4.0000000 | 1.0000000 | 600 | .0000000 | 1401-06-01 | 30 | 1100.0000000 +(12 rows) + +-- MAX() function with OVER() clause having ONLY PARTITION BY -- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn); -- mvd 1,4->3; + cn | vn | to_char | pn +----+----+-------------------+----- + 1 | 20 | 20.0000000 | 100 + 1 | 10 | 10.0000000 | 200 + 2 | 50 | 50.0000000 | 400 + 3 | 40 | 40.0000000 | 200 + 3 | 30 | 25.0000000 | 600 + 4 | 40 | 39.0000000 | 800 + 1 | 30 | 30.0000000 | 300 + 1 | 50 | 50.0000000 | 400 + 1 | 30 | 25.0000000 | 500 + 2 | 40 | -2360.0000000 | 100 + 3 | 30 | 25.0000000 | 500 + 4 | 40 | 39.0000000 | 700 +(12 rows) + +-- MAX() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 1,3->2; 5->4; 5->6; 5->7; 5->8; + vn | to_char | pn | to_char | cn | to_char | to_char | to_char +----+-------------------+-----+-------------------+----+-------------------+-------------------+------------------- + 40 | 40.0000000 | 100 | 6.0000000 | 2 | .5833333 | .0000000 | .4545455 + 10 | 10.0000000 | 200 | 5.0000000 | 1 | .4166667 | .0000000 | .0000000 + 40 | 40.0000000 | 200 | 9.0000000 | 3 | .8333333 | .0000000 | .6363636 + 20 | 20.0000000 | 100 | 4.0000000 | 1 | .4166667 | .0000000 | .0000000 + 30 | 30.0000000 | 300 | 1.0000000 | 1 | .4166667 | .0000000 | .0000000 + 50 | 50.0000000 | 400 | 2.0000000 | 1 | .4166667 | .0000000 | .0000000 + 50 | 50.0000000 | 400 | 7.0000000 | 2 | .5833333 | .0000000 | .4545455 + 30 | 30.0000000 | 500 | 3.0000000 | 1 | .4166667 | .0000000 | .0000000 + 30 | 30.0000000 | 500 | 8.0000000 | 3 | .8333333 | .0000000 | .6363636 + 30 | 30.0000000 | 600 | 10.0000000 | 3 | .8333333 | .0000000 | .6363636 + 40 | 40.0000000 | 700 | 11.0000000 | 4 | 1.0000000 | .0000000 | .9090909 + 40 | 40.0000000 | 800 | 12.0000000 | 4 | 1.0000000 | .0000000 | .9090909 +(12 rows) + +-- MAX() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc,ow_sale.pn desc,ow_sale.cn asc); -- mvd 4,1->6; + pn | vn | pn | cn | cn | to_char +-----+----+-----+----+----+------------------- + 500 | 30 | 500 | 1 | 1 | 12.0000000 + 400 | 50 | 400 | 1 | 1 | 12.0000000 + 300 | 30 | 300 | 1 | 1 | 12.0000000 + 200 | 10 | 200 | 1 | 1 | 12.0000000 + 100 | 20 | 100 | 1 | 1 | 12.0000000 + 400 | 50 | 400 | 2 | 2 | 12.0000000 + 100 | 40 | 100 | 2 | 2 | 1100.0000000 + 600 | 30 | 600 | 3 | 3 | 1100.0000000 + 500 | 30 | 500 | 3 | 3 | 1100.0000000 + 200 | 40 | 200 | 3 | 3 | 1100.0000000 + 800 | 40 | 800 | 4 | 4 | 1100.0000000 + 700 | 40 | 700 | 4 | 4 | 1100.0000000 +(12 rows) + +-- MAX() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc,ow_sale.vn asc); -- mvd 3->6; 3->7; + pn | cn | vn | pn | qty | to_char | to_char +-----+----+----+-----+------+-------------------+------------------- + 400 | 2 | 50 | 400 | 1 | 52.0000000 | .0000000 + 400 | 1 | 50 | 400 | 1 | 52.0000000 | .0000000 + 100 | 2 | 40 | 100 | 1100 | 52.0000000 | .1818182 + 700 | 4 | 40 | 700 | 1 | 52.0000000 | .1818182 + 200 | 3 | 40 | 200 | 1 | 52.0000000 | .1818182 + 800 | 4 | 40 | 800 | 1 | 52.0000000 | .1818182 + 600 | 3 | 30 | 600 | 12 | 52.0000000 | .5454545 + 300 | 1 | 30 | 300 | 1 | 52.0000000 | .5454545 + 500 | 1 | 30 | 500 | 12 | 52.0000000 | .5454545 + 500 | 3 | 30 | 500 | 12 | 52.0000000 | .5454545 + 100 | 1 | 20 | 100 | 1 | 52.0000000 | .9090909 + 200 | 1 | 10 | 200 | 1 | 52.0000000 | 1.0000000 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ); -- mvd 1->3; + cn | cn | to_char +----+----+------------------- + 4 | 4 | 5.0000000 + 4 | 4 | 5.0000000 + 3 | 3 | 15.0000000 + 3 | 3 | 15.0000000 + 3 | 3 | 15.0000000 + 2 | 2 | 1102.0000000 + 2 | 2 | 1102.0000000 + 1 | 1 | 1102.0000000 + 1 | 1 | 1102.0000000 + 1 | 1 | 1102.0000000 + 1 | 1 | 1102.0000000 + 1 | 1 | 1102.0000000 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range unbounded preceding ), +win2 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.cn asc); -- mvd 1->7; 1,9->8; 1,9->10; + cn | qty | qty | prc | vn | cn | to_char | to_char | dt | to_char +----+------+------+------+----+----+-------------------+-------------------+------------+------------------- + 1 | 1 | 1 | 0 | 20 | 1 | 5.0000000 | 1.0000000 | 1401-05-01 | 1.0000000 + 1 | 1 | 1 | 0 | 10 | 1 | 5.0000000 | 1.0000000 | 1401-03-01 | 1.0000000 + 1 | 1 | 1 | 0 | 30 | 1 | 5.0000000 | 1.0000000 | 1401-05-02 | 1.0000000 + 1 | 12 | 12 | 5 | 30 | 1 | 5.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 1 | 1 | 1 | 0 | 50 | 1 | 5.0000000 | 2.0000000 | 1401-06-01 | 1.0000000 + 2 | 1100 | 1100 | 2400 | 40 | 2 | 2400.0000000 | 1.0000000 | 1401-01-01 | 1.0000000 + 2 | 1 | 1 | 0 | 50 | 2 | 2400.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 3 | 1 | 1 | 0 | 40 | 3 | 2400.0000000 | 1.0000000 | 1401-04-01 | 1.0000000 + 3 | 12 | 12 | 5 | 30 | 3 | 2400.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 3 | 12 | 12 | 5 | 30 | 3 | 2400.0000000 | 2.0000000 | 1401-06-01 | 1.0000000 + 4 | 1 | 1 | 1 | 40 | 4 | 2400.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 4 | 1 | 1 | 1 | 40 | 4 | 2400.0000000 | 2.0000000 | 1401-06-01 | 1.0000000 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range floor(ow_sale.vn+ow_sale.qty) preceding ); -- mvd 2->5; + prc | vn | pn | qty | to_char +------+----+-----+------+------------------- + 0 | 10 | 200 | 1 | 200.0000000 + 0 | 20 | 100 | 1 | 200.0000000 + 5 | 30 | 600 | 12 | 605.0000000 + 0 | 30 | 300 | 1 | 605.0000000 + 5 | 30 | 500 | 12 | 605.0000000 + 5 | 30 | 500 | 12 | 605.0000000 + 2400 | 40 | 100 | 1100 | 2500.0000000 + 1 | 40 | 700 | 1 | 2500.0000000 + 0 | 40 | 200 | 1 | 2500.0000000 + 1 | 40 | 800 | 1 | 2500.0000000 + 0 | 50 | 400 | 1 | 2500.0000000 + 0 | 50 | 400 | 1 | 2500.0000000 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range 3 preceding ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.vn desc); -- mvd 7->6; 1,9,3,7->8; 1,9,3,7->10; + dt | dt | qty | cn | cn | to_char | pn | to_char | vn | to_char +------------+------------+------+----+----+-------------------+-----+-------------------+----+------------------- + 1401-05-01 | 1401-05-01 | 1 | 1 | 1 | 1100.0000000 | 100 | 1.0000000 | 20 | 1.0000000 + 1401-01-01 | 1401-01-01 | 1100 | 2 | 2 | 1100.0000000 | 100 | 1.0000000 | 40 | 1.0000000 + 1401-03-01 | 1401-03-01 | 1 | 1 | 1 | 1.0000000 | 200 | 1.0000000 | 10 | 1.0000000 + 1401-04-01 | 1401-04-01 | 1 | 3 | 3 | 1.0000000 | 200 | 1.0000000 | 40 | 1.0000000 + 1401-05-02 | 1401-05-02 | 1 | 1 | 1 | 1.0000000 | 300 | 1.0000000 | 30 | 1.0000000 + 1401-06-01 | 1401-06-01 | 1 | 2 | 2 | 1.0000000 | 400 | 1.0000000 | 50 | 2.0000000 + 1401-06-01 | 1401-06-01 | 1 | 1 | 1 | 1.0000000 | 400 | 1.0000000 | 50 | 2.0000000 + 1401-06-01 | 1401-06-01 | 12 | 1 | 1 | 12.0000000 | 500 | 1.0000000 | 30 | 2.0000000 + 1401-06-01 | 1401-06-01 | 12 | 3 | 3 | 12.0000000 | 500 | 1.0000000 | 30 | 2.0000000 + 1401-06-01 | 1401-06-01 | 12 | 3 | 3 | 12.0000000 | 600 | 1.0000000 | 30 | 1.0000000 + 1401-06-01 | 1401-06-01 | 1 | 4 | 4 | 1.0000000 | 700 | 1.0000000 | 40 | 1.0000000 + 1401-06-01 | 1401-06-01 | 1 | 4 | 4 | 1.0000000 | 800 | 1.0000000 | 40 | 1.0000000 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ); -- mvd 4->3; + pn | dt | to_char | cn +-----+------------+-------------------+---- + 800 | 1401-06-01 | 4.0000000 | 4 + 700 | 1401-06-01 | 4.0000000 | 4 + 500 | 1401-06-01 | 3.0000000 | 3 + 200 | 1401-04-01 | 3.0000000 | 3 + 600 | 1401-06-01 | 3.0000000 | 3 + 400 | 1401-06-01 | 2.0000000 | 2 + 100 | 1401-01-01 | 2.0000000 | 2 + 300 | 1401-05-02 | 1.0000000 | 1 + 400 | 1401-06-01 | 1.0000000 | 1 + 500 | 1401-06-01 | 1.0000000 | 1 + 100 | 1401-05-01 | 1.0000000 | 1 + 200 | 1401-03-01 | 1.0000000 | 1 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc*ow_sale.pn)) OVER(order by ow_sale.pn asc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.vn) as int),cast (floor(ow_sale.cn+ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range current row ), +win2 as (partition by ow_sale.cn order by ow_sale.pn asc), +win3 as (order by ow_sale.pn asc), +win4 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 4->3; 2,4->5; 4->6; 4->7; 4->8; + vn | cn | to_char | pn | to_char | to_char | to_char | to_char +----+----+-------------------+-----+-------------------+-------------------+-------------------+------------------- + 40 | 2 | 40.0000000 | 100 | 1.0000000 | 2.0000000 | 1.0000000 | .0000000 + 10 | 1 | 40.0000000 | 200 | 2.0000000 | 2.0000000 | 2.0000000 | .0000000 + 40 | 3 | 40.0000000 | 200 | 1.0000000 | 2.0000000 | 2.0000000 | .0000000 + 20 | 1 | 40.0000000 | 100 | 1.0000000 | 2.0000000 | 1.0000000 | .0000000 + 30 | 1 | 30.0000000 | 300 | 3.0000000 | 1.0000000 | 3.0000000 | .0000000 + 50 | 1 | 50.0000000 | 400 | 4.0000000 | 2.0000000 | 4.0000000 | .0000000 + 50 | 2 | 50.0000000 | 400 | 2.0000000 | 2.0000000 | 4.0000000 | .0000000 + 30 | 1 | 30.0000000 | 500 | 5.0000000 | 2.0000000 | 5.0000000 | .0000000 + 30 | 3 | 30.0000000 | 500 | 2.0000000 | 2.0000000 | 5.0000000 | .0000000 + 30 | 3 | 30.0000000 | 600 | 3.0000000 | 1.0000000 | 6.0000000 | .0000000 + 40 | 4 | 40.0000000 | 700 | 1.0000000 | 1.0000000 | 7.0000000 | .0000000 + 40 | 4 | 40.0000000 | 800 | 2.0000000 | 1.0000000 | 8.0000000 | .0000000 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and 4 preceding ); -- mvd 4->3; + qty | qty | to_char | vn +------+------+-------------------+---- + 1 | 1 | .0000000 | 10 + 1 | 1 | 1.0000000 | 20 + 12 | 12 | 1.0000000 | 30 + 1 | 1 | 1.0000000 | 30 + 12 | 12 | 1.0000000 | 30 + 12 | 12 | 1.0000000 | 30 + 1100 | 1100 | 36.0000000 | 40 + 1 | 1 | 36.0000000 | 40 + 1 | 1 | 36.0000000 | 40 + 1 | 1 | 36.0000000 | 40 + 1 | 1 | 2200.0000000 | 50 + 1 | 1 | 2200.0000000 | 50 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.qty+ow_sale.cn) preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 1->4; 6->5; + vn | pn | prc | to_char | to_char | cn +----+-----+------+-------------------+-------------------+---- + 40 | 800 | 1 | 1.0000000 | .1666667 | 4 + 40 | 700 | 1 | 1.0000000 | .1666667 | 4 + 30 | 600 | 5 | 1.0000000 | .4166667 | 3 + 30 | 500 | 5 | 1.0000000 | .4166667 | 3 + 40 | 200 | 0 | 1.0000000 | .4166667 | 3 + 50 | 400 | 0 | .0000000 | .5833333 | 2 + 40 | 100 | 2400 | .0000000 | .5833333 | 2 + 30 | 300 | 0 | 1100.0000000 | 1.0000000 | 1 + 30 | 500 | 5 | 1.0000000 | 1.0000000 | 1 + 50 | 400 | 0 | .0000000 | 1.0000000 | 1 + 20 | 100 | 0 | 1100.0000000 | 1.0000000 | 1 + 10 | 200 | 0 | 1100.0000000 | 1.0000000 | 1 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and current row ); -- mvd 3->2; + vn | to_char | cn +----+-------------------+---- + 20 | 1.0000000 | 1 + 10 | 1.0000000 | 1 + 30 | 1.0000000 | 1 + 50 | 1.0000000 | 1 + 30 | 1.0000000 | 1 + 40 | 2.0000000 | 2 + 50 | 2.0000000 | 2 + 40 | 3.0000000 | 3 + 30 | 3.0000000 | 3 + 30 | 3.0000000 | 3 + 40 | 4.0000000 | 4 + 40 | 4.0000000 | 4 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.vn) following ); -- mvd 1->5; + cn | cn | qty | qty | to_char +----+----+------+------+------------------- + 1 | 1 | 1 | 1 | 800.0000000 + 1 | 1 | 1 | 1 | 800.0000000 + 1 | 1 | 1 | 1 | 800.0000000 + 1 | 1 | 1 | 1 | 800.0000000 + 1 | 1 | 12 | 12 | 800.0000000 + 2 | 2 | 1100 | 1100 | 800.0000000 + 2 | 2 | 1 | 1 | 800.0000000 + 3 | 3 | 1 | 1 | 800.0000000 + 3 | 3 | 12 | 12 | 800.0000000 + 3 | 3 | 12 | 12 | 800.0000000 + 4 | 4 | 1 | 1 | 800.0000000 + 4 | 4 | 1 | 1 | 800.0000000 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and 1 following ), +win2 as (order by ow_sale.cn desc); -- mvd 3->2; 3->4; + pn | to_char | cn | to_char +-----+-------------------+----+------------------- + 800 | 4.0000000 | 4 | 1.0000000 + 700 | 4.0000000 | 4 | 1.0000000 + 200 | 4.0000000 | 3 | 3.0000000 + 600 | 4.0000000 | 3 | 3.0000000 + 500 | 4.0000000 | 3 | 3.0000000 + 400 | 4.0000000 | 2 | 6.0000000 + 100 | 4.0000000 | 2 | 6.0000000 + 200 | 4.0000000 | 1 | 8.0000000 + 100 | 4.0000000 | 1 | 8.0000000 + 300 | 4.0000000 | 1 | 8.0000000 + 400 | 4.0000000 | 1 | 8.0000000 + 500 | 4.0000000 | 1 | 8.0000000 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and unbounded following ); -- mvd 1->6; + cn | cn | qty | pn | cn | to_char +----+----+------+-----+----+------------------- + 4 | 4 | 1 | 800 | 4 | 800.0000000 + 4 | 4 | 1 | 700 | 4 | 800.0000000 + 3 | 3 | 12 | 500 | 3 | 800.0000000 + 3 | 3 | 1 | 200 | 3 | 800.0000000 + 3 | 3 | 12 | 600 | 3 | 800.0000000 + 2 | 2 | 1 | 400 | 2 | 800.0000000 + 2 | 2 | 1100 | 100 | 2 | 800.0000000 + 1 | 1 | 1 | 300 | 1 | 800.0000000 + 1 | 1 | 1 | 400 | 1 | 800.0000000 + 1 | 1 | 12 | 500 | 1 | 800.0000000 + 1 | 1 | 1 | 100 | 1 | 800.0000000 + 1 | 1 | 1 | 200 | 1 | 800.0000000 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(order by ow_sale.pn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc); -- mvd 3->2; 5->4; 3->6; 5->7; 3->8; 5->9; + prc | to_char | pn | to_char | cn | to_char | to_char | to_char | to_char +------+-------------------+-----+-------------------+----+-------------------+-------------------+-------------------+------------------- + 0 | 1100.0000000 | 100 | -100.0000000 | 1 | 800.0000000 | .4000000 | 796.0000000 | .4000000 + 2400 | 1100.0000000 | 100 | .0000000 | 2 | 800.0000000 | .5000000 | 796.0000000 | .5000000 + 0 | 1100.0000000 | 200 | -200.0000000 | 3 | 800.0000000 | .3333333 | 796.0000000 | .3333333 + 0 | 1100.0000000 | 200 | -200.0000000 | 1 | 800.0000000 | .2000000 | 796.0000000 | .2000000 + 0 | 1100.0000000 | 300 | -300.0000000 | 1 | 800.0000000 | .6000000 | 796.0000000 | .6000000 + 0 | 1100.0000000 | 400 | -400.0000000 | 1 | 800.0000000 | .8000000 | 796.0000000 | .8000000 + 0 | 1100.0000000 | 400 | -400.0000000 | 2 | 800.0000000 | 1.0000000 | 796.0000000 | 1.0000000 + 5 | 1100.0000000 | 500 | .0000000 | 1 | 800.0000000 | 1.0000000 | 796.0000000 | 1.0000000 + 5 | 1100.0000000 | 500 | .0000000 | 3 | 800.0000000 | .6666667 | 796.0000000 | .6666667 + 5 | 1100.0000000 | 600 | .0000000 | 3 | 800.0000000 | 1.0000000 | 796.0000000 | 1.0000000 + 1 | 1100.0000000 | 700 | -799.0000000 | 4 | 800.0000000 | .5000000 | 796.0000000 | .5000000 + 1 | 1100.0000000 | 800 | .0000000 | 4 | 800.0000000 | 1.0000000 | 796.0000000 | 1.0000000 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 2 preceding and 1 preceding ); -- mvd 6->5; + qty | cn | dt | cn | to_char | vn +------+----+------------+----+-------------------+---- + 1 | 2 | 1401-06-01 | 2 | .0000000 | 50 + 1 | 1 | 1401-06-01 | 1 | .0000000 | 50 + 1100 | 2 | 1401-01-01 | 2 | .0000000 | 40 + 1 | 4 | 1401-06-01 | 4 | .0000000 | 40 + 1 | 3 | 1401-04-01 | 3 | .0000000 | 40 + 1 | 4 | 1401-06-01 | 4 | .0000000 | 40 + 12 | 3 | 1401-06-01 | 3 | .0000000 | 30 + 1 | 1 | 1401-05-02 | 1 | .0000000 | 30 + 12 | 1 | 1401-06-01 | 1 | .0000000 | 30 + 12 | 3 | 1401-06-01 | 3 | .0000000 | 30 + 1 | 1 | 1401-05-01 | 1 | .0000000 | 20 + 1 | 1 | 1401-03-01 | 1 | .0000000 | 10 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.pn) preceding and 4 preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.pn order by ow_sale.pn desc); -- mvd 7->6; 9->8; 11,7,3,1->10; + pn | pn | qty | dt | qty | to_char | cn | to_char | vn | to_char | prc +-----+-----+------+------------+------+-------------------+----+-------------------+----+-------------------+------ + 400 | 400 | 1 | 1401-06-01 | 1 | .0000000 | 2 | .1666667 | 50 | 1.0000000 | 0 + 400 | 400 | 1 | 1401-06-01 | 1 | .0000000 | 1 | .1666667 | 50 | 1.0000000 | 0 + 700 | 700 | 1 | 1401-06-01 | 1 | .0000000 | 4 | .5000000 | 40 | 1.0000000 | 1 + 100 | 100 | 1100 | 1401-01-01 | 1100 | .0000000 | 2 | .5000000 | 40 | 1.0000000 | 2400 + 200 | 200 | 1 | 1401-04-01 | 1 | .0000000 | 3 | .5000000 | 40 | 1.0000000 | 0 + 800 | 800 | 1 | 1401-06-01 | 1 | .0000000 | 4 | .5000000 | 40 | 1.0000000 | 1 + 600 | 600 | 12 | 1401-06-01 | 12 | .0000000 | 3 | .8333333 | 30 | 1.0000000 | 5 + 300 | 300 | 1 | 1401-05-02 | 1 | .0000000 | 1 | .8333333 | 30 | 1.0000000 | 0 + 500 | 500 | 12 | 1401-06-01 | 12 | .0000000 | 3 | .8333333 | 30 | 1.0000000 | 5 + 500 | 500 | 12 | 1401-06-01 | 12 | .0000000 | 1 | .8333333 | 30 | 1.0000000 | 5 + 100 | 100 | 1 | 1401-05-01 | 1 | .0000000 | 1 | .9166667 | 20 | 1.0000000 | 0 + 200 | 200 | 1 | 1401-03-01 | 1 | .0000000 | 1 | 1.0000000 | 10 | 1.0000000 | 0 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.vn/ow_sale.qty) preceding and current row ); -- mvd 7->6; + dt | dt | prc | vn | prc | to_char | cn +------------+------------+------+----+------+-------------------+---- + 1401-06-01 | 1401-06-01 | 1 | 40 | 1 | 5.0000000 | 4 + 1401-06-01 | 1401-06-01 | 1 | 40 | 1 | 5.0000000 | 4 + 1401-06-01 | 1401-06-01 | 5 | 30 | 5 | 15.0000000 | 3 + 1401-06-01 | 1401-06-01 | 5 | 30 | 5 | 15.0000000 | 3 + 1401-04-01 | 1401-04-01 | 0 | 40 | 0 | 15.0000000 | 3 + 1401-06-01 | 1401-06-01 | 0 | 50 | 0 | 1102.0000000 | 2 + 1401-01-01 | 1401-01-01 | 2400 | 40 | 2400 | 1102.0000000 | 2 + 1401-05-02 | 1401-05-02 | 0 | 30 | 0 | 1102.0000000 | 1 + 1401-06-01 | 1401-06-01 | 5 | 30 | 5 | 1102.0000000 | 1 + 1401-06-01 | 1401-06-01 | 0 | 50 | 0 | 1102.0000000 | 1 + 1401-03-01 | 1401-03-01 | 0 | 10 | 0 | 1102.0000000 | 1 + 1401-05-01 | 1401-05-01 | 0 | 20 | 0 | 1102.0000000 | 1 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn/ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.vn/ow_sale.vn) preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc); -- mvd 3->2; 5->4; 5->6; 5->7; 9,1,3,5->8; + cn | to_char | vn | to_char | pn | to_char | to_char | to_char | dt +----+-------------------+----+-------------------+-----+-------------------+-------------------+-------------------+------------ + 2 | 38.0000000 | 40 | .0000000 | 100 | 1.0000000 | 1.0000000 | .0000000 | 1401-01-01 + 1 | 9.0000000 | 10 | .0000000 | 200 | 2.0000000 | 2.0000000 | .0000000 | 1401-03-01 + 3 | 38.0000000 | 40 | .0000000 | 200 | 3.0000000 | 3.0000000 | .0000000 | 1401-04-01 + 1 | 19.0000000 | 20 | .0000000 | 100 | 4.0000000 | 4.0000000 | .0000000 | 1401-05-01 + 1 | 29.0000000 | 30 | .0000000 | 300 | 5.0000000 | 5.0000000 | .0000000 | 1401-05-02 + 1 | 49.0000000 | 50 | .0000000 | 400 | 6.0000000 | 6.0000000 | .0000000 | 1401-06-01 + 2 | 49.0000000 | 50 | .0000000 | 400 | 7.0000000 | 7.0000000 | .0000000 | 1401-06-01 + 1 | 29.0000000 | 30 | .0000000 | 500 | 8.0000000 | 8.0000000 | .0000000 | 1401-06-01 + 3 | 29.0000000 | 30 | .0000000 | 500 | 9.0000000 | 9.0000000 | .0000000 | 1401-06-01 + 3 | 29.0000000 | 30 | .0000000 | 600 | 10.0000000 | 10.0000000 | .0000000 | 1401-06-01 + 4 | 38.0000000 | 40 | .0000000 | 700 | 11.0000000 | 11.0000000 | .0000000 | 1401-06-01 + 4 | 38.0000000 | 40 | .0000000 | 800 | 12.0000000 | 12.0000000 | .0000000 | 1401-06-01 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 4 preceding and floor(ow_sale.vn*ow_sale.prc) following ); -- mvd 1->3; + pn | pn | to_char +-----+-----+------------------- + 100 | 100 | 2.0000000 + 100 | 100 | 4.0000000 + 200 | 200 | 3.0000000 + 200 | 200 | 3.0000000 + 300 | 300 | 1.0000000 + 400 | 400 | 2.0000000 + 400 | 400 | 2.0000000 + 500 | 500 | 3.0000000 + 500 | 500 | 3.0000000 + 600 | 600 | 4.0000000 + 700 | 700 | 4.0000000 + 800 | 800 | 4.0000000 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 4 preceding and floor(ow_sale.prc) following ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.vn asc); -- mvd 5->4; 2->6; 2->7; 9,5->8; + prc | cn | dt | to_char | pn | to_char | to_char | to_char | vn +------+----+------------+-------------------+-----+-------------------+-------------------+-------------------+---- + 1 | 4 | 1401-06-01 | 4.0000000 | 700 | 1.0000000 | .1666667 | 1.0000000 | 40 + 1 | 4 | 1401-06-01 | 4.0000000 | 800 | 1.0000000 | .1666667 | 1.0000000 | 40 + 5 | 3 | 1401-06-01 | 3.0000000 | 600 | 2.0000000 | .4166667 | 1.0000000 | 30 + 0 | 3 | 1401-04-01 | 3.0000000 | 200 | 2.0000000 | .4166667 | 2.0000000 | 40 + 5 | 3 | 1401-06-01 | 3.0000000 | 500 | 2.0000000 | .4166667 | 1.0000000 | 30 + 2400 | 2 | 1401-01-01 | 4.0000000 | 100 | 3.0000000 | .5833333 | 2.0000000 | 40 + 0 | 2 | 1401-06-01 | 2.0000000 | 400 | 3.0000000 | .5833333 | 1.0000000 | 50 + 0 | 1 | 1401-06-01 | 2.0000000 | 400 | 4.0000000 | 1.0000000 | 1.0000000 | 50 + 0 | 1 | 1401-03-01 | 3.0000000 | 200 | 4.0000000 | 1.0000000 | 1.0000000 | 10 + 0 | 1 | 1401-05-02 | 1.0000000 | 300 | 4.0000000 | 1.0000000 | 1.0000000 | 30 + 0 | 1 | 1401-05-01 | 2.0000000 | 100 | 4.0000000 | 1.0000000 | 1.0000000 | 20 + 5 | 1 | 1401-06-01 | 3.0000000 | 500 | 4.0000000 | 1.0000000 | 1.0000000 | 30 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 1 preceding and unbounded following ); -- mvd 4->3; + qty | cn | to_char | vn +------+----+-------------------+---- + 1 | 2 | 1.0000000 | 50 + 1 | 1 | 1.0000000 | 50 + 1100 | 2 | 1.0000000 | 40 + 1 | 4 | 1.0000000 | 40 + 1 | 3 | 1.0000000 | 40 + 1 | 4 | 1.0000000 | 40 + 12 | 3 | 1.0000000 | 30 + 1 | 1 | 1.0000000 | 30 + 12 | 1 | 1.0000000 | 30 + 12 | 3 | 1.0000000 | 30 + 1 | 1 | 1.0000000 | 20 + 1 | 1 | 1.0000000 | 10 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn*ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 1 preceding and unbounded following ), +win2 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc), +win4 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 2->4; 6,3->5; 6,3->7; 2,1,3->8; 2,1,3->9; 11,2,6->10; + qty | cn | pn | to_char | to_char | vn | to_char | to_char | to_char | to_char | dt +------+----+-----+-------------------+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------ + 1 | 1 | 400 | 799.0000000 | .0000000 | 50 | 1.0000000 | .0000000 | 1.0000000 | .0000000 | 1401-06-01 + 1 | 1 | 100 | 799.0000000 | .0000000 | 20 | 1.0000000 | .0000000 | 1.0000000 | .0000000 | 1401-05-01 + 1 | 1 | 300 | 799.0000000 | .0000000 | 30 | 1.0000000 | .0000000 | 1.0000000 | .0000000 | 1401-05-02 + 12 | 1 | 500 | 799.0000000 | .0000000 | 30 | 2.0000000 | 5.0000000 | 1.0000000 | .0000000 | 1401-06-01 + 1 | 1 | 200 | 799.0000000 | .0000000 | 10 | 1.0000000 | .0000000 | 1.0000000 | .0000000 | 1401-03-01 + 1 | 2 | 400 | 799.0000000 | .0000000 | 50 | 2.0000000 | .0000000 | 2.0000000 | .0000000 | 1401-06-01 + 1100 | 2 | 100 | 799.0000000 | .0000000 | 40 | 1.0000000 | .0000000 | 1.0000000 | .0000000 | 1401-01-01 + 1 | 3 | 200 | 799.0000000 | .0000000 | 40 | 2.0000000 | .0000000 | 2.0000000 | .0000000 | 1401-04-01 + 12 | 3 | 600 | 799.0000000 | .0000000 | 30 | 4.0000000 | .0000000 | 1.0000000 | .0000000 | 1401-06-01 + 12 | 3 | 500 | 799.0000000 | .0000000 | 30 | 3.0000000 | .0000000 | 2.0000000 | .0000000 | 1401-06-01 + 1 | 4 | 700 | 799.0000000 | .0000000 | 40 | 3.0000000 | .0000000 | 1.0000000 | .0000000 | 1401-06-01 + 1 | 4 | 800 | 799.0000000 | .0000000 | 40 | 4.0000000 | .0000000 | 1.0000000 | .0000000 | 1401-06-01 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and current row ); -- mvd 6->5; + dt | pn | prc | cn | to_char | vn +------------+-----+------+----+-------------------+---- + 1401-03-01 | 200 | 0 | 1 | 200.0000000 | 10 + 1401-05-01 | 100 | 0 | 1 | 100.0000000 | 20 + 1401-06-01 | 600 | 5 | 3 | 600.0000000 | 30 + 1401-05-02 | 300 | 0 | 1 | 600.0000000 | 30 + 1401-06-01 | 500 | 5 | 1 | 600.0000000 | 30 + 1401-06-01 | 500 | 5 | 3 | 600.0000000 | 30 + 1401-01-01 | 100 | 2400 | 2 | 800.0000000 | 40 + 1401-06-01 | 700 | 1 | 4 | 800.0000000 | 40 + 1401-04-01 | 200 | 0 | 3 | 800.0000000 | 40 + 1401-06-01 | 800 | 1 | 4 | 800.0000000 | 40 + 1401-06-01 | 400 | 0 | 2 | 400.0000000 | 50 + 1401-06-01 | 400 | 0 | 1 | 400.0000000 | 50 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.cn)) OVER(order by ow_sale.cn desc range between current row and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and current row ); -- mvd 3->7; 3->8; 3->9; + pn | vn | cn | pn | pn | cn | to_char | to_char | to_char +-----+----+----+-----+-----+----+-------------------+-------------------+------------------- + 800 | 40 | 4 | 800 | 800 | 4 | 40.0000000 | 1600.0000000 | 5.0000000 + 700 | 40 | 4 | 700 | 700 | 4 | 40.0000000 | 1600.0000000 | 5.0000000 + 500 | 30 | 3 | 500 | 500 | 3 | 40.0000000 | 1600.0000000 | 8.0000000 + 200 | 40 | 3 | 200 | 200 | 3 | 40.0000000 | 1600.0000000 | 8.0000000 + 600 | 30 | 3 | 600 | 600 | 3 | 40.0000000 | 1600.0000000 | 8.0000000 + 400 | 50 | 2 | 400 | 400 | 2 | 50.0000000 | 2500.0000000 | 2402.0000000 + 100 | 40 | 2 | 100 | 100 | 2 | 50.0000000 | 2500.0000000 | 2402.0000000 + 300 | 30 | 1 | 300 | 300 | 1 | 50.0000000 | 2500.0000000 | 6.0000000 + 400 | 50 | 1 | 400 | 400 | 1 | 50.0000000 | 2500.0000000 | 6.0000000 + 500 | 30 | 1 | 500 | 500 | 1 | 50.0000000 | 2500.0000000 | 6.0000000 + 100 | 20 | 1 | 100 | 100 | 1 | 50.0000000 | 2500.0000000 | 6.0000000 + 200 | 10 | 1 | 200 | 200 | 1 | 50.0000000 | 2500.0000000 | 6.0000000 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and 3 following ); -- mvd 4->3; + prc | prc | to_char | vn +------+------+-------------------+---- + 0 | 0 | .0000000 | 50 + 0 | 0 | .0000000 | 50 + 2400 | 2400 | .0000000 | 40 + 1 | 1 | .0000000 | 40 + 0 | 0 | .0000000 | 40 + 1 | 1 | .0000000 | 40 + 5 | 5 | .0000000 | 30 + 0 | 0 | .0000000 | 30 + 5 | 5 | .0000000 | 30 + 5 | 5 | .0000000 | 30 + 0 | 0 | .0000000 | 20 + 0 | 0 | .0000000 | 10 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and 1 following ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.cn,ow_sale.vn order by ow_sale.pn desc); -- mvd 3->6; 3->7; 4,3,9,2,10->8; 4,3,9,2,10->11; + qty | vn | cn | prc | cn | to_char | to_char | to_char | dt | pn | to_char +------+----+----+------+----+-------------------+-------------------+-------------------+------------+-----+------------------- + 1 | 20 | 1 | 0 | 1 | 1100.0000000 | 7.0000000 | 1.0000000 | 1401-05-01 | 100 | .0000000 + 1 | 10 | 1 | 0 | 1 | 1100.0000000 | 7.0000000 | 1.0000000 | 1401-03-01 | 200 | .0000000 + 1 | 30 | 1 | 0 | 1 | 1100.0000000 | 7.0000000 | 1.0000000 | 1401-05-02 | 300 | .0000000 + 1 | 50 | 1 | 0 | 1 | 1100.0000000 | 7.0000000 | 1.0000000 | 1401-06-01 | 400 | .0000000 + 12 | 30 | 1 | 5 | 1 | 1100.0000000 | 7.0000000 | 1.0000000 | 1401-06-01 | 500 | 11.0000000 + 1100 | 40 | 2 | 2400 | 2 | 1100.0000000 | 5.0000000 | 1.0000000 | 1401-01-01 | 100 | 1098.0000000 + 1 | 50 | 2 | 0 | 2 | 1100.0000000 | 5.0000000 | 1.0000000 | 1401-06-01 | 400 | -1.0000000 + 1 | 40 | 3 | 0 | 3 | 12.0000000 | 5.0000000 | 1.0000000 | 1401-04-01 | 200 | -2.0000000 + 12 | 30 | 3 | 5 | 3 | 12.0000000 | 5.0000000 | 1.0000000 | 1401-06-01 | 600 | 9.0000000 + 12 | 30 | 3 | 5 | 3 | 12.0000000 | 5.0000000 | 1.0000000 | 1401-06-01 | 500 | 9.0000000 + 1 | 40 | 4 | 1 | 4 | 1.0000000 | 2.0000000 | 1.0000000 | 1401-06-01 | 700 | -3.0000000 + 1 | 40 | 4 | 1 | 4 | 1.0000000 | 2.0000000 | 1.0000000 | 1401-06-01 | 800 | -3.0000000 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and unbounded following ); -- mvd 5->4; + vn | dt | vn | to_char | pn +----+------------+----+-------------------+----- + 20 | 1401-05-01 | 20 | 49.0000000 | 100 + 40 | 1401-01-01 | 40 | 49.0000000 | 100 + 10 | 1401-03-01 | 10 | 49.0000000 | 200 + 40 | 1401-04-01 | 40 | 49.0000000 | 200 + 30 | 1401-05-02 | 30 | 49.0000000 | 300 + 50 | 1401-06-01 | 50 | 49.0000000 | 400 + 50 | 1401-06-01 | 50 | 49.0000000 | 400 + 30 | 1401-06-01 | 30 | 36.0000000 | 500 + 30 | 1401-06-01 | 30 | 36.0000000 | 500 + 30 | 1401-06-01 | 30 | 36.0000000 | 600 + 40 | 1401-06-01 | 40 | 36.0000000 | 700 + 40 | 1401-06-01 | 40 | 36.0000000 | 800 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and unbounded following ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.dt order by ow_sale.vn desc); -- mvd 2->5; 1->6; 8,4,2->7; 1->9; + pn | vn | vn | dt | to_char | to_char | to_char | prc | to_char +-----+----+----+------------+-------------------+-------------------+-------------------+------+------------------- + 100 | 40 | 40 | 1401-01-01 | 60.0000000 | .1666667 | 1.0000000 | 2400 | .1666667 + 100 | 20 | 20 | 1401-05-01 | .0000000 | .1666667 | 1.0000000 | 0 | .1666667 + 200 | 40 | 40 | 1401-04-01 | 60.0000000 | .3333333 | 1.0000000 | 0 | .3333333 + 200 | 10 | 10 | 1401-03-01 | .0000000 | .3333333 | 1.0000000 | 0 | .3333333 + 300 | 30 | 30 | 1401-05-02 | .0000000 | .4166667 | 1.0000000 | 0 | .4166667 + 400 | 50 | 50 | 1401-06-01 | 60.0000000 | .5833333 | 2.0000000 | 0 | .5833333 + 400 | 50 | 50 | 1401-06-01 | 60.0000000 | .5833333 | 1.0000000 | 0 | .5833333 + 500 | 30 | 30 | 1401-06-01 | .0000000 | .7500000 | 2.0000000 | 5 | .7500000 + 500 | 30 | 30 | 1401-06-01 | .0000000 | .7500000 | 3.0000000 | 5 | .7500000 + 600 | 30 | 30 | 1401-06-01 | .0000000 | .8333333 | 1.0000000 | 5 | .8333333 + 700 | 40 | 40 | 1401-06-01 | 60.0000000 | .9166667 | 2.0000000 | 1 | .9166667 + 800 | 40 | 40 | 1401-06-01 | 60.0000000 | 1.0000000 | 1.0000000 | 1 | 1.0000000 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.qty+ow_sale.qty) following and 0 following ); -- mvd 5->4; + cn | qty | qty | to_char | pn +----+------+------+-------------------+----- + 1 | 1 | 1 | .0000000 | 100 + 2 | 1100 | 1100 | .0000000 | 100 + 1 | 1 | 1 | .0000000 | 200 + 3 | 1 | 1 | .0000000 | 200 + 1 | 1 | 1 | .0000000 | 300 + 1 | 1 | 1 | .0000000 | 400 + 2 | 1 | 1 | .0000000 | 400 + 1 | 12 | 12 | .0000000 | 500 + 3 | 12 | 12 | .0000000 | 500 + 3 | 12 | 12 | .0000000 | 600 + 4 | 1 | 1 | .0000000 | 700 + 4 | 1 | 1 | .0000000 | 800 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 0 following and unbounded following ); -- mvd 4->3; + pn | pn | to_char | vn +-----+-----+-------------------+---- + 400 | 400 | 24.0000000 | 50 + 400 | 400 | 24.0000000 | 50 + 100 | 100 | 24.0000000 | 40 + 700 | 700 | 24.0000000 | 40 + 200 | 200 | 24.0000000 | 40 + 800 | 800 | 24.0000000 | 40 + 600 | 600 | .0000000 | 30 + 300 | 300 | .0000000 | 30 + 500 | 500 | .0000000 | 30 + 500 | 500 | .0000000 | 30 + 100 | 100 | .0000000 | 20 + 200 | 200 | .0000000 | 10 +(12 rows) + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 2 following and unbounded following ), +win2 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc), +win4 as (order by ow_sale.cn desc); -- mvd 3->2; 3->4; 6,7,8,1,9->5; 3->10; + qty | to_char | cn | to_char | to_char | prc | dt | vn | pn | to_char +------+-------------------+----+-------------------+-------------------+------+------------+----+-----+------------------- + 1 | 500.0000000 | 4 | .0000000 | .0000000 | 1 | 1401-06-01 | 40 | 700 | 1.0000000 + 1 | 500.0000000 | 4 | .0000000 | 40.0000000 | 1 | 1401-06-01 | 40 | 800 | 2.0000000 + 1 | 500.0000000 | 3 | .0000000 | 40.0000000 | 0 | 1401-04-01 | 40 | 200 | 3.0000000 + 12 | 500.0000000 | 3 | .0000000 | .0000000 | 5 | 1401-06-01 | 30 | 500 | 4.0000000 + 12 | 500.0000000 | 3 | .0000000 | .0000000 | 5 | 1401-06-01 | 30 | 600 | 5.0000000 + 1100 | .0000000 | 2 | .0000000 | .0000000 | 2400 | 1401-01-01 | 40 | 100 | 6.0000000 + 1 | .0000000 | 2 | .0000000 | 50.0000000 | 0 | 1401-06-01 | 50 | 400 | 7.0000000 + 1 | .0000000 | 1 | .0000000 | 50.0000000 | 0 | 1401-06-01 | 50 | 400 | 8.0000000 + 1 | .0000000 | 1 | .0000000 | 10.0000000 | 0 | 1401-03-01 | 10 | 200 | 9.0000000 + 12 | .0000000 | 1 | .0000000 | .0000000 | 5 | 1401-06-01 | 30 | 500 | 10.0000000 + 1 | .0000000 | 1 | .0000000 | 20.0000000 | 0 | 1401-05-01 | 20 | 100 | 11.0000000 + 1 | .0000000 | 1 | .0000000 | 30.0000000 | 0 | 1401-05-02 | 30 | 300 | 12.0000000 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows unbounded preceding ); -- mvd 6,1->5; + pn | qty | qty | pn | to_char | cn +-----+------+------+-----+-------------------+---- + 100 | 1100 | 1100 | 100 | 2.0000000 | 2 + 200 | 1 | 1 | 200 | 2.0000000 | 1 + 200 | 1 | 1 | 200 | 3.0000000 | 3 + 100 | 1 | 1 | 100 | 3.0000000 | 1 + 300 | 1 | 1 | 300 | 3.0000000 | 1 + 400 | 1 | 1 | 400 | 3.0000000 | 1 + 400 | 1 | 1 | 400 | 3.0000000 | 2 + 500 | 12 | 12 | 500 | 3.0000000 | 1 + 500 | 12 | 12 | 500 | 3.0000000 | 3 + 600 | 12 | 12 | 600 | 3.0000000 | 3 + 700 | 1 | 1 | 700 | 4.0000000 | 4 + 800 | 1 | 1 | 800 | 4.0000000 | 4 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn-ow_sale.cn) as int),cast (floor(ow_sale.pn*ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows unbounded preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.cn desc), +win4 as (order by ow_sale.vn asc); -- mvd 3,4->2; 3->5; 3->6; 1->7; + vn | to_char | cn | pn | to_char | to_char | to_char +----+-------------------+----+-----+-------------------+-------------------+------------------- + 10 | 199.0000000 | 1 | 200 | .0000000 | 12.0000000 | 1.0000000 + 20 | 199.0000000 | 1 | 100 | .0000000 | 11.0000000 | 2.0000000 + 30 | 488.0000000 | 3 | 500 | .0000000 | 3.0000000 | 3.0000000 + 30 | 488.0000000 | 1 | 500 | .0000000 | 8.0000000 | 4.0000000 + 30 | 299.0000000 | 1 | 300 | .0000000 | 10.0000000 | 5.0000000 + 30 | 588.0000000 | 3 | 600 | .0000000 | 5.0000000 | 6.0000000 + 40 | -1000.0000000 | 2 | 100 | .0000000 | 7.0000000 | 7.0000000 + 40 | 699.0000000 | 4 | 700 | .0000000 | 2.0000000 | 8.0000000 + 40 | 199.0000000 | 3 | 200 | .0000000 | 4.0000000 | 9.0000000 + 40 | 799.0000000 | 4 | 800 | .0000000 | 1.0000000 | 10.0000000 + 50 | 399.0000000 | 1 | 400 | .0000000 | 9.0000000 | 11.0000000 + 50 | 399.0000000 | 2 | 400 | .0000000 | 6.0000000 | 12.0000000 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows floor(ow_sale.cn) preceding ); -- mvd 2->3; + cn | pn | to_char +----+-----+------------------- + 2 | 100 | 200.0000000 + 1 | 200 | 400.0000000 + 3 | 200 | 400.0000000 + 1 | 100 | 400.0000000 + 1 | 300 | 600.0000000 + 1 | 400 | 800.0000000 + 2 | 400 | 800.0000000 + 1 | 500 | 1000.0000000 + 3 | 500 | 1000.0000000 + 3 | 600 | 1200.0000000 + 4 | 700 | 1400.0000000 + 4 | 800 | 1600.0000000 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn/ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn+ow_sale.qty) as int),NULL) OVER(win5),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows floor(ow_sale.prc) preceding ), +win2 as (partition by ow_sale.pn order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.pn asc), +win4 as (order by ow_sale.cn asc), +win5 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc); -- mvd 6,2->5; 2,3->7; 3->8; 6->9; 6,11,3->10; 6->12; + dt | vn | pn | pn | to_char | cn | to_char | to_char | to_char | to_char | qty | to_char +------------+----+-----+-----+-------------------+----+-------------------+-------------------+-------------------+-------------------+------+------------------- + 1401-06-01 | 50 | 400 | 400 | 1.0000000 | 1 | 1.0000000 | 25.0000000 | .4166667 | .0000000 | 1 | .4166667 + 1401-03-01 | 10 | 200 | 200 | 1.0000000 | 1 | 2.0000000 | 13.0000000 | .4166667 | .0000000 | 1 | .4166667 + 1401-06-01 | 30 | 500 | 500 | 12.0000000 | 1 | 1.0000000 | .0000000 | .4166667 | .0000000 | 12 | .4166667 + 1401-05-01 | 20 | 100 | 100 | 1.0000000 | 1 | 2.0000000 | 30.0000000 | .4166667 | .0000000 | 1 | .4166667 + 1401-05-02 | 30 | 300 | 300 | 1.0000000 | 1 | 1.0000000 | 50.0000000 | .4166667 | .0000000 | 1 | .4166667 + 1401-01-01 | 40 | 100 | 100 | 1100.0000000 | 2 | 1.0000000 | .0000000 | .5833333 | .0000000 | 1100 | .5833333 + 1401-06-01 | 50 | 400 | 400 | 1.0000000 | 2 | 1.0000000 | 30.0000000 | .5833333 | .0000000 | 1 | .5833333 + 1401-04-01 | 40 | 200 | 200 | 1.0000000 | 3 | 1.0000000 | 20.0000000 | .8333333 | .0000000 | 1 | .8333333 + 1401-06-01 | 30 | 500 | 500 | 12.0000000 | 3 | 1.0000000 | .0000000 | .8333333 | .0000000 | 12 | .8333333 + 1401-06-01 | 30 | 600 | 600 | 12.0000000 | 3 | 1.0000000 | .0000000 | .8333333 | .0000000 | 12 | .8333333 + 1401-06-01 | 40 | 700 | 700 | 12.0000000 | 4 | 1.0000000 | 10.0000000 | 1.0000000 | .0000000 | 1 | 1.0000000 + 1401-06-01 | 40 | 800 | 800 | 1.0000000 | 4 | 1.0000000 | .0000000 | 1.0000000 | .0000000 | 1 | 1.0000000 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.pn desc rows current row ); -- mvd 1->5; + pn | dt | qty | vn | to_char +-----+------------+------+----+------------------- + 100 | 1401-01-01 | 1100 | 40 | 2400.0000000 + 200 | 1401-03-01 | 1 | 10 | .0000000 + 200 | 1401-04-01 | 1 | 40 | .0000000 + 100 | 1401-05-01 | 1 | 20 | .0000000 + 300 | 1401-05-02 | 1 | 30 | .0000000 + 400 | 1401-06-01 | 1 | 50 | .0000000 + 400 | 1401-06-01 | 1 | 50 | .0000000 + 500 | 1401-06-01 | 12 | 30 | 5.0000000 + 500 | 1401-06-01 | 12 | 30 | 5.0000000 + 600 | 1401-06-01 | 12 | 30 | 5.0000000 + 700 | 1401-06-01 | 1 | 40 | 1.0000000 + 800 | 1401-06-01 | 1 | 40 | 1.0000000 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty/ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty*ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows current row ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->2; 3->4; 3->5; 7,8,9,3,1->6; 3->10; 3->11; + pn | to_char | vn | to_char | to_char | to_char | prc | cn | dt | to_char | to_char +-----+-------------------+----+-------------------+-------------------+-------------------+------+----+------------+-------------------+------------------- + 400 | -399.0000000 | 50 | 1.0000000 | 1.0000000 | .0000000 | 0 | 2 | 1401-06-01 | 1.0000000 | 400.0000000 + 400 | -399.0000000 | 50 | 1.0000000 | 1.0000000 | 400.0000000 | 0 | 1 | 1401-06-01 | 1.0000000 | 400.0000000 + 800 | -799.0000000 | 40 | 3.0000000 | 550.0000000 | .0000000 | 1 | 4 | 1401-06-01 | 2.0000000 | 800.0000000 + 200 | -199.0000000 | 40 | 3.0000000 | 550.0000000 | .0000000 | 0 | 3 | 1401-04-01 | 2.0000000 | 800.0000000 + 700 | -699.0000000 | 40 | 3.0000000 | 550.0000000 | .0000000 | 1 | 4 | 1401-06-01 | 2.0000000 | 800.0000000 + 100 | 1000.0000000 | 40 | 3.0000000 | 550.0000000 | .0000000 | 2400 | 2 | 1401-01-01 | 2.0000000 | 800.0000000 + 500 | -488.0000000 | 30 | 7.0000000 | 550.0000000 | 6000.0000000 | 5 | 1 | 1401-06-01 | 3.0000000 | 800.0000000 + 500 | -488.0000000 | 30 | 7.0000000 | 550.0000000 | .0000000 | 5 | 3 | 1401-06-01 | 3.0000000 | 800.0000000 + 600 | -588.0000000 | 30 | 7.0000000 | 550.0000000 | .0000000 | 5 | 3 | 1401-06-01 | 3.0000000 | 800.0000000 + 300 | -299.0000000 | 30 | 7.0000000 | 550.0000000 | .0000000 | 0 | 1 | 1401-05-02 | 3.0000000 | 800.0000000 + 100 | -99.0000000 | 20 | 11.0000000 | 550.0000000 | .0000000 | 0 | 1 | 1401-05-01 | 4.0000000 | 800.0000000 + 200 | -199.0000000 | 10 | 12.0000000 | 550.0000000 | .0000000 | 0 | 1 | 1401-03-01 | 5.0000000 | 800.0000000 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc,ow_sale.pn desc rows between unbounded preceding and 7 preceding ); -- mvd 2,5->4; + qty | vn | qty | to_char | pn +------+----+------+-------------------+----- + 1100 | 40 | 1100 | .0000000 | 100 + 1 | 10 | 1 | .0000000 | 200 + 1 | 40 | 1 | .0000000 | 200 + 1 | 20 | 1 | .0000000 | 100 + 1 | 30 | 1 | .0000000 | 300 + 1 | 50 | 1 | .0000000 | 400 + 1 | 50 | 1 | .0000000 | 400 + 12 | 30 | 12 | 2.0000000 | 500 + 12 | 30 | 12 | 2.0000000 | 500 + 12 | 30 | 12 | 3.0000000 | 600 + 1 | 40 | 1 | 3.0000000 | 700 + 1 | 40 | 1 | 3.0000000 | 800 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 4->5; + pn | pn | pn | cn | to_char +-----+-----+-----+----+------------------- + 100 | 100 | 100 | 2 | 2400.0000000 + 200 | 200 | 200 | 1 | 2400.0000000 + 200 | 200 | 200 | 3 | 2400.0000000 + 100 | 100 | 100 | 1 | 2400.0000000 + 300 | 300 | 300 | 1 | 2400.0000000 + 400 | 400 | 400 | 1 | 2400.0000000 + 400 | 400 | 400 | 2 | 2400.0000000 + 500 | 500 | 500 | 1 | 2400.0000000 + 500 | 500 | 500 | 3 | 2400.0000000 + 600 | 600 | 600 | 3 | 2400.0000000 + 700 | 700 | 700 | 4 | 2400.0000000 + 800 | 800 | 800 | 4 | 2400.0000000 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.vn) as int),cast (floor(ow_sale.cn*ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn asc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn desc); -- mvd 4,1,2->3; 1->5; 1,2->6; 1->7; + vn | pn | to_char | cn | to_char | to_char | to_char +----+-----+-------------------+----+-------------------+-------------------+------------------- + 10 | 200 | 2.0000000 | 1 | 1.0000000 | .0000000 | .0833333 + 20 | 100 | 3.0000000 | 1 | 2.0000000 | .0000000 | .1666667 + 30 | 500 | 3.0000000 | 3 | 3.0000000 | .0000000 | .5000000 + 30 | 500 | 3.0000000 | 1 | 4.0000000 | .0000000 | .5000000 + 30 | 300 | 3.0000000 | 1 | 5.0000000 | -25.0000000 | .5000000 + 30 | 600 | 3.0000000 | 3 | 6.0000000 | .0000000 | .5000000 + 40 | 100 | 2.0000000 | 2 | 7.0000000 | .0000000 | .8333333 + 40 | 200 | 3.0000000 | 3 | 8.0000000 | .0000000 | .8333333 + 40 | 700 | 4.0000000 | 4 | 9.0000000 | .0000000 | .8333333 + 40 | 800 | 4.0000000 | 4 | 10.0000000 | .0000000 | .8333333 + 50 | 400 | 3.0000000 | 2 | 11.0000000 | .0000000 | 1.0000000 + 50 | 400 | 3.0000000 | 1 | 12.0000000 | -50.0000000 | 1.0000000 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between unbounded preceding and 2 following ); -- mvd 3->2; + qty | to_char | vn +------+-------------------+---- + 1100 | -98.0000000 | 40 + 1 | -98.0000000 | 10 + 1 | -98.0000000 | 40 + 1 | -98.0000000 | 20 + 1 | -98.0000000 | 30 + 1 | -98.0000000 | 50 + 1 | -98.0000000 | 50 + 12 | -98.0000000 | 30 + 12 | -98.0000000 | 30 + 12 | -98.0000000 | 30 + 1 | -98.0000000 | 40 + 1 | -98.0000000 | 40 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and 3 following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.pn asc); -- mvd 1,4->3; 1->5; 1->6; 4->7; 1->8; + cn | qty | to_char | pn | to_char | to_char | to_char | to_char +----+------+-------------------+-----+-------------------+-------------------+-------------------+------------------- + 2 | 1100 | 200.0000000 | 100 | .5833333 | 7.0000000 | .1666667 | .4545455 + 1 | 1 | 400.0000000 | 100 | 1.0000000 | 12.0000000 | .1666667 | .6363636 + 1 | 1 | 300.0000000 | 200 | 1.0000000 | 12.0000000 | .3333333 | .6363636 + 3 | 1 | 400.0000000 | 200 | .4166667 | 5.0000000 | .3333333 | .1818182 + 1 | 1 | 500.0000000 | 300 | 1.0000000 | 12.0000000 | .4166667 | .6363636 + 2 | 1 | 600.0000000 | 400 | .5833333 | 7.0000000 | .5833333 | .4545455 + 1 | 1 | 500.0000000 | 400 | 1.0000000 | 12.0000000 | .5833333 | .6363636 + 3 | 12 | 800.0000000 | 500 | .4166667 | 5.0000000 | .7500000 | .1818182 + 1 | 12 | 700.0000000 | 500 | 1.0000000 | 12.0000000 | .7500000 | .6363636 + 3 | 12 | 800.0000000 | 600 | .4166667 | 5.0000000 | .8333333 | .1818182 + 4 | 1 | 800.0000000 | 700 | .1666667 | 2.0000000 | .9166667 | .0000000 + 4 | 1 | 800.0000000 | 800 | .1666667 | 2.0000000 | 1.0000000 | .0000000 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and unbounded following ); -- mvd 3->2; + pn | to_char | cn +-----+-------------------+---- + 100 | 4.0000000 | 2 + 200 | 4.0000000 | 1 + 200 | 4.0000000 | 3 + 100 | 4.0000000 | 1 + 300 | 4.0000000 | 1 + 400 | 4.0000000 | 1 + 400 | 4.0000000 | 2 + 500 | 4.0000000 | 1 + 500 | 4.0000000 | 3 + 600 | 4.0000000 | 3 + 700 | 4.0000000 | 4 + 800 | 4.0000000 | 4 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty*ow_sale.prc) as int),cast (floor(ow_sale.qty*ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc), +win4 as (order by ow_sale.pn desc); -- mvd 4->5; 1->6; 4->7; 9,10,3,1->8; 1->11; 4->12; + vn | qty | cn | pn | to_char | to_char | to_char | to_char | prc | dt | to_char | to_char +----+------+----+-----+-------------------+-------------------+-------------------+-------------------+------+------------+-------------------+------------------- + 10 | 1 | 1 | 200 | 4800.0000000 | 1.0000000 | 800.0000000 | .0000000 | 0 | 1401-03-01 | 200.0000000 | 7.0000000 + 20 | 1 | 1 | 100 | 4800.0000000 | 2.0000000 | 800.0000000 | .0000000 | 0 | 1401-05-01 | 200.0000000 | 8.0000000 + 30 | 1 | 1 | 300 | 4800.0000000 | 3.0000000 | 800.0000000 | .0000000 | 0 | 1401-05-02 | 600.0000000 | 6.0000000 + 30 | 12 | 3 | 600 | 4800.0000000 | 3.0000000 | 800.0000000 | .0000000 | 5 | 1401-06-01 | 600.0000000 | 3.0000000 + 30 | 12 | 1 | 500 | 4800.0000000 | 3.0000000 | 800.0000000 | .0000000 | 5 | 1401-06-01 | 600.0000000 | 4.0000000 + 30 | 12 | 3 | 500 | 4800.0000000 | 3.0000000 | 800.0000000 | .0000000 | 5 | 1401-06-01 | 600.0000000 | 4.0000000 + 40 | 1 | 4 | 800 | 4800.0000000 | 7.0000000 | 800.0000000 | .0000000 | 1 | 1401-06-01 | 800.0000000 | 1.0000000 + 40 | 1 | 4 | 700 | 4800.0000000 | 7.0000000 | 800.0000000 | 1.0000000 | 1 | 1401-06-01 | 800.0000000 | 2.0000000 + 40 | 1 | 3 | 200 | 4800.0000000 | 7.0000000 | 800.0000000 | .0000000 | 0 | 1401-04-01 | 800.0000000 | 7.0000000 + 40 | 1100 | 2 | 100 | 4800.0000000 | 7.0000000 | 800.0000000 | .0000000 | 2400 | 1401-01-01 | 800.0000000 | 8.0000000 + 50 | 1 | 2 | 400 | 4800.0000000 | 11.0000000 | 800.0000000 | .0000000 | 0 | 1401-06-01 | 800.0000000 | 5.0000000 + 50 | 1 | 1 | 400 | 4800.0000000 | 11.0000000 | 800.0000000 | .0000000 | 0 | 1401-06-01 | 800.0000000 | 5.0000000 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.vn) preceding and floor(ow_sale.qty+ow_sale.vn) preceding ); -- mvd 5->4; + qty | dt | cn | to_char | pn +------+------------+----+-------------------+----- + 1100 | 1401-01-01 | 2 | .0000000 | 100 + 1 | 1401-03-01 | 1 | .0000000 | 200 + 1 | 1401-04-01 | 3 | .0000000 | 200 + 1 | 1401-05-01 | 1 | .0000000 | 100 + 1 | 1401-05-02 | 1 | .0000000 | 300 + 1 | 1401-06-01 | 1 | .0000000 | 400 + 1 | 1401-06-01 | 2 | .0000000 | 400 + 12 | 1401-06-01 | 1 | .0000000 | 500 + 12 | 1401-06-01 | 3 | .0000000 | 500 + 12 | 1401-06-01 | 3 | .0000000 | 600 + 1 | 1401-06-01 | 4 | .0000000 | 700 + 1 | 1401-06-01 | 4 | .0000000 | 800 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn+ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc,ow_sale.pn desc rows between 0 preceding and floor(ow_sale.prc/ow_sale.cn) preceding ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.pn asc), +win4 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc); -- mvd 1,6->5; 6->7; 6->8; 6->9; 11,12,1,6->10; + vn | cn | vn | vn | to_char | pn | to_char | to_char | to_char | to_char | prc | dt +----+----+----+----+-------------------+-----+-------------------+-------------------+-------------------+-------------------+------+------------ + 40 | 2 | 40 | 40 | .0000000 | 100 | 1.0000000 | .1666667 | 1.0000000 | .0000000 | 2400 | 1401-01-01 + 20 | 1 | 20 | 20 | .0000000 | 100 | 2.0000000 | .1666667 | 2.0000000 | .0000000 | 0 | 1401-05-01 + 10 | 1 | 10 | 10 | .0000000 | 200 | 3.0000000 | .3333333 | 3.0000000 | .0000000 | 0 | 1401-03-01 + 40 | 3 | 40 | 40 | .0000000 | 200 | 4.0000000 | .3333333 | 4.0000000 | .0000000 | 0 | 1401-04-01 + 30 | 1 | 30 | 30 | .0000000 | 300 | 5.0000000 | .4166667 | 5.0000000 | .0000000 | 0 | 1401-05-02 + 50 | 2 | 50 | 50 | .0000000 | 400 | 6.0000000 | .5833333 | 6.0000000 | .0000000 | 0 | 1401-06-01 + 50 | 1 | 50 | 50 | .0000000 | 400 | 7.0000000 | .5833333 | 7.0000000 | .0000000 | 0 | 1401-06-01 + 30 | 1 | 30 | 30 | .0000000 | 500 | 8.0000000 | .7500000 | 8.0000000 | .0000000 | 5 | 1401-06-01 + 30 | 3 | 30 | 30 | .0000000 | 500 | 9.0000000 | .7500000 | 9.0000000 | .0000000 | 5 | 1401-06-01 + 30 | 3 | 30 | 30 | .0000000 | 600 | 10.0000000 | .8333333 | 10.0000000 | .0000000 | 5 | 1401-06-01 + 40 | 4 | 40 | 40 | .0000000 | 700 | 11.0000000 | .9166667 | 11.0000000 | .0000000 | 1 | 1401-06-01 + 40 | 4 | 40 | 40 | .0000000 | 800 | 12.0000000 | 1.0000000 | 12.0000000 | .0000000 | 1 | 1401-06-01 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between 6 preceding and current row ); -- mvd 1->3; + cn | vn | to_char +----+----+------------------- + 2 | 40 | .0000000 + 1 | 10 | .0000000 + 3 | 40 | .0000000 + 1 | 20 | .0000000 + 1 | 30 | .0000000 + 1 | 50 | .0000000 + 2 | 50 | .0000000 + 1 | 30 | .0000000 + 3 | 30 | .0000000 + 3 | 30 | .0000000 + 4 | 40 | .0000000 + 4 | 40 | .0000000 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.cn asc rows between floor(ow_sale.vn) preceding and 0 following ); -- mvd 6->5; + dt | dt | prc | vn | to_char | cn +------------+------------+------+----+-------------------+---- + 1401-01-01 | 1401-01-01 | 2400 | 40 | 140.0000000 | 2 + 1401-03-01 | 1401-03-01 | 0 | 10 | 210.0000000 | 1 + 1401-04-01 | 1401-04-01 | 0 | 40 | 240.0000000 | 3 + 1401-05-01 | 1401-05-01 | 0 | 20 | 240.0000000 | 1 + 1401-05-02 | 1401-05-02 | 0 | 30 | 330.0000000 | 1 + 1401-06-01 | 1401-06-01 | 0 | 50 | 450.0000000 | 1 + 1401-06-01 | 1401-06-01 | 0 | 50 | 450.0000000 | 2 + 1401-06-01 | 1401-06-01 | 5 | 30 | 530.0000000 | 1 + 1401-06-01 | 1401-06-01 | 5 | 30 | 530.0000000 | 3 + 1401-06-01 | 1401-06-01 | 5 | 30 | 630.0000000 | 3 + 1401-06-01 | 1401-06-01 | 1 | 40 | 740.0000000 | 4 + 1401-06-01 | 1401-06-01 | 1 | 40 | 840.0000000 | 4 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 4 preceding and 1 following ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.vn desc); -- mvd 5->4; 1,7->6; 1,7->8; + vn | prc | dt | to_char | cn | to_char | pn | to_char +----+------+------------+-------------------+----+-------------------+-----+------------------- + 40 | 2400 | 1401-01-01 | -9.0000000 | 2 | 1.0000000 | 100 | 1.0000000 + 10 | 0 | 1401-03-01 | -9.0000000 | 1 | 1.0000000 | 200 | 1.0000000 + 40 | 0 | 1401-04-01 | -9.0000000 | 3 | 1.0000000 | 200 | 1.0000000 + 20 | 0 | 1401-05-01 | -9.0000000 | 1 | 1.0000000 | 100 | 1.0000000 + 30 | 0 | 1401-05-02 | -9.0000000 | 1 | 1.0000000 | 300 | 1.0000000 + 50 | 0 | 1401-06-01 | -9.0000000 | 1 | 1.0000000 | 400 | 2.0000000 + 50 | 0 | 1401-06-01 | -19.0000000 | 2 | 1.0000000 | 400 | 1.0000000 + 30 | 5 | 1401-06-01 | -19.0000000 | 1 | 1.0000000 | 500 | 1.0000000 + 30 | 5 | 1401-06-01 | -27.0000000 | 3 | 1.0000000 | 500 | 2.0000000 + 30 | 5 | 1401-06-01 | -27.0000000 | 3 | 1.0000000 | 600 | 1.0000000 + 40 | 1 | 1401-06-01 | -27.0000000 | 4 | 1.0000000 | 700 | 1.0000000 + 40 | 1 | 1401-06-01 | -27.0000000 | 4 | 1.0000000 | 800 | 1.0000000 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between 0 preceding and unbounded following ); -- mvd 2->3; + dt | pn | to_char +------------+-----+------------------- + 1401-01-01 | 100 | 800.0000000 + 1401-03-01 | 200 | 800.0000000 + 1401-04-01 | 200 | 800.0000000 + 1401-05-01 | 100 | 800.0000000 + 1401-05-02 | 300 | 800.0000000 + 1401-06-01 | 400 | 800.0000000 + 1401-06-01 | 400 | 800.0000000 + 1401-06-01 | 500 | 800.0000000 + 1401-06-01 | 500 | 800.0000000 + 1401-06-01 | 600 | 800.0000000 + 1401-06-01 | 700 | 800.0000000 + 1401-06-01 | 800 | 800.0000000 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty-ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.cn desc rows between floor(ow_sale.prc) preceding and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.cn desc), +win4 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 1,6->5; 1->7; 1->8; 3,1,10,11->9; 1->12; + cn | cn | prc | cn | to_char | vn | to_char | to_char | to_char | qty | pn | to_char +----+----+------+----+-------------------+----+-------------------+-------------------+-------------------+------+-----+------------------- + 4 | 4 | 1 | 4 | 41.0000000 | 40 | 1.0000000 | .1666667 | .0000000 | 1 | 800 | 1.0000000 + 4 | 4 | 1 | 4 | 42.0000000 | 40 | 2.0000000 | .1666667 | .0000000 | 1 | 700 | 1.0000000 + 3 | 3 | 5 | 3 | 51.0000000 | 30 | 3.0000000 | .4166667 | .0000000 | 12 | 500 | 3.0000000 + 3 | 3 | 0 | 3 | 51.0000000 | 40 | 4.0000000 | .4166667 | .0000000 | 1 | 200 | 3.0000000 + 3 | 3 | 5 | 3 | 51.0000000 | 30 | 5.0000000 | .4166667 | .0000000 | 12 | 600 | 3.0000000 + 2 | 2 | 0 | 2 | 51.0000000 | 50 | 6.0000000 | .5833333 | .0000000 | 1 | 400 | 6.0000000 + 2 | 2 | 2400 | 2 | 1140.0000000 | 40 | 7.0000000 | .5833333 | .0000000 | 1100 | 100 | 6.0000000 + 1 | 1 | 5 | 1 | 51.0000000 | 30 | 8.0000000 | 1.0000000 | .0000000 | 12 | 500 | 8.0000000 + 1 | 1 | 0 | 1 | 51.0000000 | 50 | 9.0000000 | 1.0000000 | .0000000 | 1 | 400 | 8.0000000 + 1 | 1 | 0 | 1 | 51.0000000 | 30 | 10.0000000 | 1.0000000 | .0000000 | 1 | 300 | 8.0000000 + 1 | 1 | 0 | 1 | 51.0000000 | 20 | 11.0000000 | 1.0000000 | .0000000 | 1 | 100 | 8.0000000 + 1 | 1 | 0 | 1 | 51.0000000 | 10 | 12.0000000 | 1.0000000 | .0000000 | 1 | 200 | 8.0000000 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc,ow_sale.cn desc rows between current row and current row ); -- mvd 4,7->6; + pn | pn | dt | cn | qty | to_char | vn +-----+-----+------------+----+------+-------------------+---- + 100 | 100 | 1401-01-01 | 2 | 1100 | 44000.0000000 | 40 + 200 | 200 | 1401-03-01 | 1 | 1 | 10.0000000 | 10 + 200 | 200 | 1401-04-01 | 3 | 1 | 40.0000000 | 40 + 100 | 100 | 1401-05-01 | 1 | 1 | 20.0000000 | 20 + 300 | 300 | 1401-05-02 | 1 | 1 | 30.0000000 | 30 + 400 | 400 | 1401-06-01 | 1 | 1 | 50.0000000 | 50 + 400 | 400 | 1401-06-01 | 2 | 1 | 50.0000000 | 50 + 500 | 500 | 1401-06-01 | 1 | 12 | 360.0000000 | 30 + 500 | 500 | 1401-06-01 | 3 | 12 | 360.0000000 | 30 + 600 | 600 | 1401-06-01 | 3 | 12 | 360.0000000 | 30 + 700 | 700 | 1401-06-01 | 4 | 1 | 40.0000000 | 40 + 800 | 800 | 1401-06-01 | 4 | 1 | 40.0000000 | 40 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc,ow_sale.cn asc rows between current row and 0 following ); -- mvd 3,4->2; + vn | to_char | cn | pn +----+-------------------+----+----- + 40 | .0000000 | 2 | 100 + 10 | .0000000 | 1 | 200 + 40 | .0000000 | 3 | 200 + 20 | .0000000 | 1 | 100 + 30 | .0000000 | 1 | 300 + 50 | .0000000 | 1 | 400 + 50 | .0000000 | 2 | 400 + 30 | .0000000 | 1 | 500 + 30 | .0000000 | 3 | 500 + 30 | .0000000 | 3 | 600 + 40 | .0000000 | 4 | 700 + 40 | .0000000 | 4 | 800 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.pn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between current row and 4 following ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 3->6; 1,8,3->7; 1->9; + cn | cn | vn | vn | vn | to_char | to_char | dt | to_char +----+----+----+----+----+-------------------+-------------------+------------+------------------- + 2 | 2 | 40 | 40 | 40 | 3.0000000 | .0000000 | 1401-01-01 | .0000000 + 1 | 1 | 10 | 10 | 10 | 3.0000000 | .0000000 | 1401-03-01 | 2400.0000000 + 3 | 3 | 40 | 40 | 40 | 3.0000000 | .0000000 | 1401-04-01 | .0000000 + 1 | 1 | 20 | 20 | 20 | 2.0000000 | .0000000 | 1401-05-01 | .0000000 + 1 | 1 | 30 | 30 | 30 | 3.0000000 | .0000000 | 1401-05-02 | .0000000 + 1 | 1 | 50 | 50 | 50 | 3.0000000 | .0000000 | 1401-06-01 | .0000000 + 2 | 2 | 50 | 50 | 50 | 4.0000000 | .0000000 | 1401-06-01 | .0000000 + 1 | 1 | 30 | 30 | 30 | 4.0000000 | .0000000 | 1401-06-01 | .0000000 + 3 | 3 | 30 | 30 | 30 | 4.0000000 | .0000000 | 1401-06-01 | .0000000 + 3 | 3 | 30 | 30 | 30 | 4.0000000 | .0000000 | 1401-06-01 | .0000000 + 4 | 4 | 40 | 40 | 40 | 4.0000000 | .0000000 | 1401-06-01 | .0000000 + 4 | 4 | 40 | 40 | 40 | 4.0000000 | .0000000 | 1401-06-01 | 5.0000000 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ); -- mvd 4->3; + cn | qty | to_char | pn +----+------+-------------------+----- + 2 | 1100 | 4.0000000 | 100 + 1 | 1 | 4.0000000 | 200 + 3 | 1 | 4.0000000 | 200 + 1 | 1 | 4.0000000 | 100 + 1 | 1 | 4.0000000 | 300 + 1 | 1 | 4.0000000 | 400 + 2 | 1 | 4.0000000 | 400 + 1 | 12 | 4.0000000 | 500 + 3 | 12 | 4.0000000 | 500 + 3 | 12 | 4.0000000 | 600 + 4 | 1 | 4.0000000 | 700 + 4 | 1 | 4.0000000 | 800 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc rows between 8 following and 2 following ); -- mvd 6->5; + qty | qty | prc | prc | to_char | pn +------+------+------+------+-------------------+----- + 1100 | 1100 | 2400 | 2400 | .0000000 | 100 + 1 | 1 | 0 | 0 | .0000000 | 200 + 1 | 1 | 0 | 0 | .0000000 | 200 + 1 | 1 | 0 | 0 | .0000000 | 100 + 1 | 1 | 0 | 0 | .0000000 | 300 + 1 | 1 | 0 | 0 | .0000000 | 400 + 1 | 1 | 0 | 0 | .0000000 | 400 + 12 | 12 | 5 | 5 | .0000000 | 500 + 12 | 12 | 5 | 5 | .0000000 | 500 + 12 | 12 | 5 | 5 | .0000000 | 600 + 1 | 1 | 1 | 1 | .0000000 | 700 + 1 | 1 | 1 | 1 | .0000000 | 800 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc rows between floor(ow_sale.vn) following and unbounded following ); -- mvd 2,6->5; + dt | vn | vn | prc | to_char | pn +------------+----+----+------+-------------------+----- + 1401-01-01 | 40 | 40 | 2400 | .0000000 | 100 + 1401-03-01 | 10 | 10 | 0 | 4.0000000 | 200 + 1401-04-01 | 40 | 40 | 0 | .0000000 | 200 + 1401-05-01 | 20 | 20 | 0 | .0000000 | 100 + 1401-05-02 | 30 | 30 | 0 | .0000000 | 300 + 1401-06-01 | 50 | 50 | 0 | .0000000 | 400 + 1401-06-01 | 50 | 50 | 0 | .0000000 | 400 + 1401-06-01 | 30 | 30 | 5 | .0000000 | 500 + 1401-06-01 | 30 | 30 | 5 | .0000000 | 500 + 1401-06-01 | 30 | 30 | 5 | .0000000 | 600 + 1401-06-01 | 40 | 40 | 1 | .0000000 | 700 + 1401-06-01 | 40 | 40 | 1 | .0000000 | 800 +(12 rows) + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between 4 following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.cn asc); -- mvd 6->5; 8->7; 6->9; 8->10; 8->11; + qty | vn | qty | vn | to_char | pn | to_char | cn | to_char | to_char | to_char +------+----+------+----+-------------------+-----+-------------------+----+-------------------+-------------------+------------------- + 1 | 50 | 1 | 50 | 42.0000000 | 400 | .0000000 | 1 | 800.0000000 | .0000000 | 6.0000000 + 1 | 10 | 1 | 10 | 51.0000000 | 200 | .0000000 | 1 | 800.0000000 | .0000000 | 2.0000000 + 12 | 30 | 12 | 30 | 41.0000000 | 500 | .0000000 | 1 | 800.0000000 | .0000000 | 8.0000000 + 1 | 20 | 1 | 20 | 42.0000000 | 100 | .0000000 | 1 | 800.0000000 | .0000000 | 4.0000000 + 1 | 30 | 1 | 30 | 42.0000000 | 300 | .0000000 | 1 | 800.0000000 | .0000000 | 5.0000000 + 1100 | 40 | 1100 | 40 | 51.0000000 | 100 | .0000000 | 2 | 800.0000000 | .4545455 | 1.0000000 + 1 | 50 | 1 | 50 | 41.0000000 | 400 | .0000000 | 2 | 800.0000000 | .4545455 | 7.0000000 + 1 | 40 | 1 | 40 | 51.0000000 | 200 | .0000000 | 3 | 800.0000000 | .6363636 | 3.0000000 + 12 | 30 | 12 | 30 | .0000000 | 500 | .0000000 | 3 | .0000000 | .6363636 | 9.0000000 + 12 | 30 | 12 | 30 | .0000000 | 600 | .0000000 | 3 | .0000000 | .6363636 | 10.0000000 + 1 | 40 | 1 | 40 | .0000000 | 700 | .0000000 | 4 | .0000000 | .9090909 | 11.0000000 + 1 | 40 | 1 | 40 | .0000000 | 800 | .0000000 | 4 | .0000000 | .9090909 | 12.0000000 +(12 rows) + +-- MAX() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.vn asc); -- mvd 1,3,2->5; + dt | pn | vn | pn | to_char +------------+-----+----+-----+------------------- + 1401-03-01 | 200 | 10 | 200 | 1.0000000 + 1401-06-01 | 600 | 30 | 600 | 3.0000000 + 1401-06-01 | 700 | 40 | 700 | 4.0000000 + 1401-01-01 | 100 | 40 | 100 | 2.0000000 + 1401-05-01 | 100 | 20 | 100 | 1.0000000 + 1401-04-01 | 200 | 40 | 200 | 3.0000000 + 1401-05-02 | 300 | 30 | 300 | 1.0000000 + 1401-06-01 | 400 | 50 | 400 | 2.0000000 + 1401-06-01 | 400 | 50 | 400 | 2.0000000 + 1401-06-01 | 500 | 30 | 500 | 3.0000000 + 1401-06-01 | 500 | 30 | 500 | 3.0000000 + 1401-06-01 | 800 | 40 | 800 | 4.0000000 +(12 rows) + +-- MAX() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.pn desc); -- mvd 2,3,6->5; 2,3,6->7; + qty | cn | vn | cn | to_char | pn | to_char +------+----+----+----+-------------------+-----+------------------- + 1 | 1 | 10 | 1 | 1.0000000 | 200 | .0000000 + 1 | 1 | 20 | 1 | 1.0000000 | 100 | .0000000 + 12 | 3 | 30 | 3 | 3.0000000 | 600 | .0000000 + 1 | 3 | 40 | 3 | 3.0000000 | 200 | .0000000 + 1 | 4 | 40 | 4 | 4.0000000 | 800 | .0000000 + 1 | 2 | 50 | 2 | 2.0000000 | 400 | .0000000 + 1 | 1 | 30 | 1 | 1.0000000 | 300 | .0000000 + 12 | 1 | 30 | 1 | 1.0000000 | 500 | .0000000 + 12 | 3 | 30 | 3 | 3.0000000 | 500 | .0000000 + 1100 | 2 | 40 | 2 | 2.0000000 | 100 | .0000000 + 1 | 4 | 40 | 4 | 4.0000000 | 700 | .0000000 + 1 | 1 | 50 | 1 | 1.0000000 | 400 | .0000000 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.pn desc range unbounded preceding ); -- mvd 1,5,6,7,8->4; + prc | cn | cn | to_char | dt | vn | qty | pn +------+----+----+-------------------+------------+----+------+----- + 0 | 3 | 3 | 39.0000000 | 1401-04-01 | 40 | 1 | 200 + 0 | 1 | 1 | 19.0000000 | 1401-05-01 | 20 | 1 | 100 + 1 | 4 | 4 | 39.0000000 | 1401-06-01 | 40 | 1 | 800 + 1 | 4 | 4 | 39.0000000 | 1401-06-01 | 40 | 1 | 700 + 5 | 3 | 3 | 18.0000000 | 1401-06-01 | 30 | 12 | 600 + 5 | 1 | 1 | 18.0000000 | 1401-06-01 | 30 | 12 | 500 + 5 | 3 | 3 | 18.0000000 | 1401-06-01 | 30 | 12 | 500 + 0 | 1 | 1 | 9.0000000 | 1401-03-01 | 10 | 1 | 200 + 0 | 1 | 1 | 29.0000000 | 1401-05-02 | 30 | 1 | 300 + 0 | 2 | 2 | 49.0000000 | 1401-06-01 | 50 | 1 | 400 + 0 | 1 | 1 | 49.0000000 | 1401-06-01 | 50 | 1 | 400 + 2400 | 2 | 2 | -1060.0000000 | 1401-01-01 | 40 | 1100 | 100 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.vn asc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.vn asc range unbounded preceding ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc); -- mvd 1,4,2->3; 1,4,6,2->5; 1,4,6,2->7; 1,4,2->8; 1,4,6,2->9; 1,4,6,2->10; + dt | pn | to_char | vn | to_char | qty | to_char | to_char | to_char | to_char +------------+-----+-------------------+----+-------------------+------+-------------------+-------------------+-------------------+------------------- + 1401-03-01 | 200 | 2.0000000 | 10 | 1.0000000 | 1 | -9.0000000 | -9.0000000 | .0000000 | 1.0000000 + 1401-06-01 | 600 | 15.0000000 | 30 | 1.0000000 | 12 | -27.0000000 | -27.0000000 | 5.0000000 | 1.0000000 + 1401-06-01 | 700 | 5.0000000 | 40 | 1.0000000 | 1 | -36.0000000 | -36.0000000 | 1.0000000 | 1.0000000 + 1401-01-01 | 100 | 1102.0000000 | 40 | 1.0000000 | 1100 | -38.0000000 | -38.0000000 | 2400.0000000 | 1.0000000 + 1401-04-01 | 200 | 4.0000000 | 40 | 1.0000000 | 1 | -37.0000000 | -37.0000000 | .0000000 | 1.0000000 + 1401-05-01 | 100 | 2.0000000 | 20 | 1.0000000 | 1 | -19.0000000 | -19.0000000 | .0000000 | 1.0000000 + 1401-05-02 | 300 | 2.0000000 | 30 | 1.0000000 | 1 | -29.0000000 | -29.0000000 | .0000000 | 1.0000000 + 1401-06-01 | 400 | 3.0000000 | 50 | 1.0000000 | 1 | -48.0000000 | -48.0000000 | .0000000 | 1.0000000 + 1401-06-01 | 400 | 3.0000000 | 50 | 1.0000000 | 1 | -48.0000000 | -48.0000000 | .0000000 | 1.0000000 + 1401-06-01 | 500 | 15.0000000 | 30 | 1.0000000 | 12 | -27.0000000 | -27.0000000 | 5.0000000 | 1.0000000 + 1401-06-01 | 500 | 15.0000000 | 30 | 1.0000000 | 12 | -27.0000000 | -27.0000000 | 5.0000000 | 1.0000000 + 1401-06-01 | 800 | 5.0000000 | 40 | 1.0000000 | 1 | -36.0000000 | -36.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn order by ow_sale.vn desc range floor(ow_sale.prc*ow_sale.cn) preceding ); -- mvd 4,2,3->6; + prc | qty | pn | vn | qty | to_char +------+------+-----+----+------+------------------- + 0 | 1 | 100 | 20 | 1 | 1.0000000 + 0 | 1 | 200 | 40 | 1 | 1.0000000 + 0 | 1 | 200 | 10 | 1 | 1.0000000 + 1 | 1 | 700 | 40 | 1 | 1.0000000 + 5 | 12 | 500 | 30 | 12 | 12.0000000 + 5 | 12 | 500 | 30 | 12 | 12.0000000 + 0 | 1 | 300 | 30 | 1 | 1.0000000 + 0 | 1 | 400 | 50 | 1 | 1.0000000 + 0 | 1 | 400 | 50 | 1 | 1.0000000 + 1 | 1 | 800 | 40 | 1 | 1.0000000 + 5 | 12 | 600 | 30 | 12 | 12.0000000 + 2400 | 1100 | 100 | 40 | 1100 | 1100.0000000 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn desc range floor(ow_sale.prc/ow_sale.vn) preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 4->3; 2->5; + cn | pn | to_char | vn | to_char +----+-----+-------------------+----+------------------- + 2 | 100 | 11.0000000 | 40 | .0000000 + 1 | 200 | .0000000 | 10 | .0000000 + 3 | 200 | 11.0000000 | 40 | 2.0000000 + 1 | 100 | .0000000 | 20 | .0000000 + 1 | 300 | .0000000 | 30 | .0000000 + 1 | 400 | .0000000 | 50 | .0000000 + 2 | 400 | .0000000 | 50 | 1.0000000 + 1 | 500 | .0000000 | 30 | .0000000 + 3 | 500 | .0000000 | 30 | .0000000 + 3 | 600 | .0000000 | 30 | .0000000 + 4 | 700 | 11.0000000 | 40 | 3.0000000 + 4 | 800 | 11.0000000 | 40 | .0000000 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.prc,ow_sale.dt,ow_sale.vn order by ow_sale.vn asc range current row ); -- mvd 4,1,5,6,7->3; + dt | pn | to_char | prc | cn | vn | qty +------------+-----+-------------------+------+----+----+------ + 1401-03-01 | 200 | .0000000 | 0 | 1 | 10 | 1 + 1401-05-02 | 300 | .0000000 | 0 | 1 | 30 | 1 + 1401-06-01 | 400 | .0000000 | 0 | 1 | 50 | 1 + 1401-06-01 | 800 | 1.0000000 | 1 | 4 | 40 | 1 + 1401-06-01 | 700 | 1.0000000 | 1 | 4 | 40 | 1 + 1401-05-01 | 100 | .0000000 | 0 | 1 | 20 | 1 + 1401-06-01 | 500 | 5.0000000 | 5 | 1 | 30 | 12 + 1401-06-01 | 400 | .0000000 | 0 | 2 | 50 | 1 + 1401-01-01 | 100 | 2400.0000000 | 2400 | 2 | 40 | 1100 + 1401-04-01 | 200 | .0000000 | 0 | 3 | 40 | 1 + 1401-06-01 | 600 | 5.0000000 | 5 | 3 | 30 | 12 + 1401-06-01 | 500 | 5.0000000 | 5 | 3 | 30 | 12 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.cn asc range current row ), +win2 as (order by ow_sale.vn desc); -- mvd 4->3; 6->5; 6->7; + prc | pn | to_char | cn | to_char | vn | to_char +------+-----+-------------------+----+-------------------+----+------------------- + 0 | 400 | 500.0000000 | 1 | .0000000 | 50 | 2.0000000 + 0 | 400 | 800.0000000 | 2 | .0000000 | 50 | 2.0000000 + 2400 | 100 | 800.0000000 | 2 | .1818182 | 40 | 4.0000000 + 1 | 800 | 3200.0000000 | 4 | .1818182 | 40 | 4.0000000 + 1 | 700 | 3200.0000000 | 4 | .1818182 | 40 | 4.0000000 + 0 | 200 | 1800.0000000 | 3 | .1818182 | 40 | 4.0000000 + 5 | 500 | 1800.0000000 | 3 | .5454545 | 30 | 4.0000000 + 0 | 300 | 500.0000000 | 1 | .5454545 | 30 | 4.0000000 + 5 | 500 | 500.0000000 | 1 | .5454545 | 30 | 4.0000000 + 5 | 600 | 1800.0000000 | 3 | .5454545 | 30 | 4.0000000 + 0 | 100 | 500.0000000 | 1 | .9090909 | 20 | 4.0000000 + 0 | 200 | 500.0000000 | 1 | 1.0000000 | 10 | 4.0000000 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.cn+ow_sale.pn) preceding ); -- mvd 5,6,7->4; + qty | vn | dt | to_char | prc | cn | pn +------+----+------------+-------------------+------+----+----- + 1 | 30 | 1401-05-02 | .0000000 | 0 | 1 | 300 + 1 | 50 | 1401-06-01 | .0000000 | 0 | 2 | 400 + 1 | 50 | 1401-06-01 | .0000000 | 0 | 1 | 400 + 12 | 30 | 1401-06-01 | .0000000 | 5 | 3 | 500 + 12 | 30 | 1401-06-01 | .0000000 | 5 | 1 | 500 + 1 | 40 | 1401-06-01 | .0000000 | 1 | 4 | 700 + 1 | 20 | 1401-05-01 | .0000000 | 0 | 1 | 100 + 1100 | 40 | 1401-01-01 | .0000000 | 2400 | 2 | 100 + 1 | 40 | 1401-04-01 | .0000000 | 0 | 3 | 200 + 1 | 10 | 1401-03-01 | .0000000 | 0 | 1 | 200 + 12 | 30 | 1401-06-01 | .0000000 | 5 | 3 | 600 + 1 | 40 | 1401-06-01 | .0000000 | 1 | 4 | 800 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.pn desc range between unbounded preceding and 0 preceding ), +win2 as (partition by ow_sale.cn order by ow_sale.pn asc); -- mvd 3,6,1->5; 3,1->7; + pn | vn | cn | vn | to_char | qty | to_char +-----+----+----+----+-------------------+------+------------------- + 100 | 20 | 1 | 20 | 1.0000000 | 1 | 1.0000000 + 200 | 10 | 1 | 10 | 1.0000000 | 1 | 2.0000000 + 300 | 30 | 1 | 30 | 1.0000000 | 1 | 3.0000000 + 400 | 50 | 1 | 50 | 1.0000000 | 1 | 4.0000000 + 500 | 30 | 1 | 30 | 144.0000000 | 12 | 5.0000000 + 200 | 40 | 3 | 40 | 1.0000000 | 1 | 1.0000000 + 500 | 30 | 3 | 30 | 144.0000000 | 12 | 2.0000000 + 600 | 30 | 3 | 30 | 144.0000000 | 12 | 3.0000000 + 100 | 40 | 2 | 40 | 1210000.0000000 | 1100 | 1.0000000 + 400 | 50 | 2 | 50 | 1.0000000 | 1 | 2.0000000 + 700 | 40 | 4 | 40 | 1.0000000 | 1 | 1.0000000 + 800 | 40 | 4 | 40 | 1.0000000 | 1 | 2.0000000 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.qty order by ow_sale.cn asc range between unbounded preceding and current row ); -- mvd 4,1,2->3; + cn | qty | to_char | prc +----+------+-------------------+------ + 2 | 1 | 4.0000000 | 0 + 1 | 12 | 1.0000000 | 5 + 3 | 12 | 9.0000000 | 5 + 3 | 12 | 9.0000000 | 5 + 1 | 1 | 1.0000000 | 0 + 1 | 1 | 1.0000000 | 0 + 1 | 1 | 1.0000000 | 0 + 1 | 1 | 1.0000000 | 0 + 3 | 1 | 9.0000000 | 0 + 4 | 1 | 16.0000000 | 1 + 4 | 1 | 16.0000000 | 1 + 2 | 1100 | 4.0000000 | 2400 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.cn desc); -- mvd 3,4->2; 3,4->5; 4->6; 3,4->7; 9,3,1->8; + pn | to_char | cn | vn | to_char | to_char | to_char | to_char | dt +-----+-------------------+----+----+-------------------+-------------------+-------------------+-------------------+------------ + 200 | 10.0000000 | 1 | 10 | 1.0000000 | .0833333 | 1.0000000 | 1.0000000 | 1401-03-01 + 100 | 20.0000000 | 1 | 20 | 1.0000000 | .1666667 | 1.0000000 | 1.0000000 | 1401-05-01 + 500 | 90.0000000 | 3 | 30 | 2.0000000 | .5000000 | 2.0000000 | 1.0000000 | 1401-06-01 + 300 | 30.0000000 | 1 | 30 | 2.0000000 | .5000000 | 2.0000000 | 1.0000000 | 1401-05-02 + 500 | 30.0000000 | 1 | 30 | 2.0000000 | .5000000 | 2.0000000 | 1.0000000 | 1401-06-01 + 600 | 90.0000000 | 3 | 30 | 2.0000000 | .5000000 | 2.0000000 | 1.0000000 | 1401-06-01 + 200 | 120.0000000 | 3 | 40 | 1.0000000 | .8333333 | 1.0000000 | 1.0000000 | 1401-04-01 + 100 | 80.0000000 | 2 | 40 | 1.0000000 | .8333333 | 1.0000000 | 1.0000000 | 1401-01-01 + 700 | 160.0000000 | 4 | 40 | 2.0000000 | .8333333 | 2.0000000 | 1.0000000 | 1401-06-01 + 800 | 160.0000000 | 4 | 40 | 2.0000000 | .8333333 | 2.0000000 | 1.0000000 | 1401-06-01 + 400 | 100.0000000 | 2 | 50 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1401-06-01 + 400 | 50.0000000 | 1 | 50 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1401-06-01 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.pn desc range between unbounded preceding and 1 following ); -- mvd 4,5->3; + vn | vn | to_char | qty | pn +----+----+-------------------+------+----- + 40 | 40 | 1.0000000 | 1 | 800 + 40 | 40 | 1.0000000 | 1 | 700 + 50 | 50 | 1.0000000 | 1 | 400 + 50 | 50 | 1.0000000 | 1 | 400 + 30 | 30 | 1.0000000 | 1 | 300 + 10 | 10 | 1.0000000 | 1 | 200 + 40 | 40 | 1.0000000 | 1 | 200 + 20 | 20 | 1.0000000 | 1 | 100 + 30 | 30 | 5.0000000 | 12 | 600 + 30 | 30 | 5.0000000 | 12 | 500 + 30 | 30 | 5.0000000 | 12 | 500 + 40 | 40 | 2400.0000000 | 1100 | 100 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.vn order by ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 4,6,2,1->5; + pn | vn | vn | prc | to_char | cn +-----+----+----+------+-------------------+---- + 100 | 20 | 20 | 0 | 100.0000000 | 1 + 200 | 10 | 10 | 0 | 200.0000000 | 1 + 400 | 50 | 50 | 0 | 400.0000000 | 2 + 200 | 40 | 40 | 0 | 200.0000000 | 3 + 600 | 30 | 30 | 5 | 600.0000000 | 3 + 800 | 40 | 40 | 1 | 800.0000000 | 4 + 300 | 30 | 30 | 0 | 300.0000000 | 1 + 400 | 50 | 50 | 0 | 400.0000000 | 1 + 500 | 30 | 30 | 5 | 500.0000000 | 1 + 100 | 40 | 40 | 2400 | 100.0000000 | 2 + 500 | 30 | 30 | 5 | 500.0000000 | 3 + 700 | 40 | 40 | 1 | 700.0000000 | 4 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.pn desc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.pn asc), +win4 as (order by ow_sale.vn asc); -- mvd 4,5,6,7->3; 6->8; 7->9; 7->10; 2->11; + qty | vn | to_char | prc | dt | cn | pn | to_char | to_char | to_char | to_char +------+----+-------------------+------+------------+----+-----+-------------------+-------------------+-------------------+------------------- + 1 | 10 | .0000000 | 0 | 1401-03-01 | 1 | 200 | 140.0000000 | 3.0000000 | .3333333 | 1.0000000 + 1 | 20 | .0000000 | 0 | 1401-05-01 | 1 | 100 | 240.0000000 | 1.0000000 | .1666667 | 2.0000000 + 12 | 30 | 15.0000000 | 5 | 1401-06-01 | 3 | 500 | .0000000 | 8.0000000 | .7500000 | 3.0000000 + 12 | 30 | 5.0000000 | 5 | 1401-06-01 | 1 | 500 | .0000000 | 8.0000000 | .7500000 | 3.0000000 + 1 | 30 | .0000000 | 0 | 1401-05-02 | 1 | 300 | 120.0000000 | 5.0000000 | .4166667 | 3.0000000 + 12 | 30 | 15.0000000 | 5 | 1401-06-01 | 3 | 600 | .0000000 | 10.0000000 | .8333333 | 3.0000000 + 1100 | 40 | 4800.0000000 | 2400 | 1401-01-01 | 2 | 100 | .0000000 | 1.0000000 | .1666667 | 7.0000000 + 1 | 40 | .0000000 | 0 | 1401-04-01 | 3 | 200 | 210.0000000 | 3.0000000 | .3333333 | 7.0000000 + 1 | 40 | 4.0000000 | 1 | 1401-06-01 | 4 | 700 | 630.0000000 | 11.0000000 | .9166667 | 7.0000000 + 1 | 40 | 4.0000000 | 1 | 1401-06-01 | 4 | 800 | 740.0000000 | 12.0000000 | 1.0000000 | 7.0000000 + 1 | 50 | .0000000 | 0 | 1401-06-01 | 2 | 400 | 450.0000000 | 6.0000000 | .5833333 | 11.0000000 + 1 | 50 | .0000000 | 0 | 1401-06-01 | 1 | 400 | 330.0000000 | 6.0000000 | .5833333 | 11.0000000 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.dt order by ow_sale.cn desc range between floor(ow_sale.cn) preceding and floor(ow_sale.cn) preceding ); -- mvd 8,6,9,3->7; + qty | qty | vn | pn | pn | cn | to_char | prc | dt +------+------+----+-----+-----+----+-------------------+------+------------ + 1 | 1 | 20 | 100 | 100 | 1 | .0000000 | 0 | 1401-05-01 + 1 | 1 | 40 | 200 | 200 | 3 | .0000000 | 0 | 1401-04-01 + 1 | 1 | 40 | 700 | 700 | 4 | .0000000 | 1 | 1401-06-01 + 1 | 1 | 40 | 800 | 800 | 4 | .0000000 | 1 | 1401-06-01 + 1100 | 1100 | 40 | 100 | 100 | 2 | .0000000 | 2400 | 1401-01-01 + 1 | 1 | 10 | 200 | 200 | 1 | .0000000 | 0 | 1401-03-01 + 1 | 1 | 30 | 300 | 300 | 1 | .0000000 | 0 | 1401-05-02 + 1 | 1 | 50 | 400 | 400 | 2 | .0000000 | 0 | 1401-06-01 + 1 | 1 | 50 | 400 | 400 | 1 | 50.0000000 | 0 | 1401-06-01 + 12 | 12 | 30 | 600 | 600 | 3 | .0000000 | 5 | 1401-06-01 + 12 | 12 | 30 | 500 | 500 | 3 | .0000000 | 5 | 1401-06-01 + 12 | 12 | 30 | 500 | 500 | 1 | .0000000 | 5 | 1401-06-01 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.qty) as int),cast (floor(ow_sale.qty*ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.qty order by ow_sale.vn asc range between 1 preceding and floor(ow_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty order by ow_sale.vn asc range between 1 preceding and floor(ow_sale.pn) preceding ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.pn desc), +win4 as (partition by ow_sale.prc order by ow_sale.pn asc); -- mvd 4,1,5->3; 4,7,5,1->6; 9->8; 4,1,5->10; 9->11; 13,9->12; + vn | vn | to_char | dt | qty | to_char | cn | to_char | pn | to_char | to_char | to_char | prc +----+----+-------------------+------------+------+-------------------+----+-------------------+-----+-------------------+-------------------+-------------------+------ + 40 | 40 | .0000000 | 1401-01-01 | 1100 | .0000000 | 2 | .0000000 | 100 | .0000000 | 1.0000000 | 1.0000000 | 2400 + 10 | 10 | .0000000 | 1401-03-01 | 1 | .0000000 | 1 | 2360.0000000 | 200 | .0000000 | 2.0000000 | 2.0000000 | 0 + 40 | 40 | .0000000 | 1401-04-01 | 1 | .0000000 | 3 | .0000000 | 200 | .0000000 | 3.0000000 | 3.0000000 | 0 + 20 | 20 | .0000000 | 1401-05-01 | 1 | .0000000 | 1 | -40.0000000 | 100 | .0000000 | 4.0000000 | 1.0000000 | 0 + 30 | 30 | .0000000 | 1401-05-02 | 1 | .0000000 | 1 | -20.0000000 | 300 | .0000000 | 5.0000000 | 4.0000000 | 0 + 50 | 50 | .0000000 | 1401-06-01 | 1 | .0000000 | 1 | -30.0000000 | 400 | .0000000 | 6.0000000 | 6.0000000 | 0 + 50 | 50 | .0000000 | 1401-06-01 | 1 | .0000000 | 2 | -30.0000000 | 400 | .0000000 | 7.0000000 | 5.0000000 | 0 + 30 | 30 | .0000000 | 1401-06-01 | 12 | .0000000 | 1 | -50.0000000 | 500 | .0000000 | 8.0000000 | 1.0000000 | 5 + 30 | 30 | .0000000 | 1401-06-01 | 12 | .0000000 | 3 | -50.0000000 | 500 | .0000000 | 9.0000000 | 2.0000000 | 5 + 30 | 30 | .0000000 | 1401-06-01 | 12 | .0000000 | 3 | -50.0000000 | 600 | .0000000 | 10.0000000 | 3.0000000 | 5 + 40 | 40 | .0000000 | 1401-06-01 | 1 | .0000000 | 4 | -50.0000000 | 700 | .0000000 | 11.0000000 | 1.0000000 | 1 + 40 | 40 | .0000000 | 1401-06-01 | 1 | .0000000 | 4 | -25.0000000 | 800 | .0000000 | 12.0000000 | 2.0000000 | 1 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn desc range between 2 preceding and current row ); -- mvd 6,3->5; + cn | cn | vn | prc | to_char | dt +----+----+----+------+-------------------+------------ + 1 | 1 | 10 | 0 | 10.0000000 | 1401-03-01 + 1 | 1 | 30 | 0 | 30.0000000 | 1401-05-02 + 1 | 1 | 50 | 0 | 50.0000000 | 1401-06-01 + 2 | 2 | 50 | 0 | 50.0000000 | 1401-06-01 + 4 | 4 | 40 | 1 | 41.0000000 | 1401-06-01 + 4 | 4 | 40 | 1 | 41.0000000 | 1401-06-01 + 3 | 3 | 30 | 5 | 35.0000000 | 1401-06-01 + 1 | 1 | 30 | 5 | 35.0000000 | 1401-06-01 + 3 | 3 | 30 | 5 | 35.0000000 | 1401-06-01 + 2 | 2 | 40 | 2400 | 2440.0000000 | 1401-01-01 + 3 | 3 | 40 | 0 | 40.0000000 | 1401-04-01 + 1 | 1 | 20 | 0 | 20.0000000 | 1401-05-01 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.pn)) OVER(partition by ow_sale.prc,ow_sale.prc,ow_sale.dt,ow_sale.cn order by ow_sale.cn asc range between 3 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(partition by ow_sale.prc,ow_sale.prc,ow_sale.dt,ow_sale.cn order by ow_sale.cn asc range between 3 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc*ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.dt,ow_sale.cn order by ow_sale.cn asc range between 3 preceding and current row ), +win2 as (partition by ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,4,5->2; 3,4,5->6; 3,4,5->7; 3,4,9->8; + qty | to_char | prc | cn | dt | to_char | to_char | to_char | pn +------+-------------------+------+----+------------+-------------------+-------------------+-------------------+----- + 1 | 1.0000000 | 0 | 1 | 1401-03-01 | 210.0000000 | 1.0000000 | .0000000 | 200 + 1 | 1.0000000 | 0 | 1 | 1401-05-01 | 120.0000000 | 1.0000000 | .0000000 | 100 + 1 | 1.0000000 | 0 | 1 | 1401-05-02 | 330.0000000 | 1.0000000 | .0000000 | 300 + 1 | 1.0000000 | 0 | 1 | 1401-06-01 | 450.0000000 | 1.0000000 | .0000000 | 400 + 1 | 3.0000000 | 0 | 3 | 1401-04-01 | 240.0000000 | 1.0000000 | .0000000 | 200 + 1 | 4.0000000 | 1 | 4 | 1401-06-01 | 840.0000000 | 2.0000000 | .0000000 | 700 + 1 | 4.0000000 | 1 | 4 | 1401-06-01 | 840.0000000 | 2.0000000 | .0000000 | 800 + 12 | 1.0000000 | 5 | 1 | 1401-06-01 | 530.0000000 | 1.0000000 | .0000000 | 500 + 12 | 3.0000000 | 5 | 3 | 1401-06-01 | 630.0000000 | 2.0000000 | .0000000 | 500 + 12 | 3.0000000 | 5 | 3 | 1401-06-01 | 630.0000000 | 2.0000000 | .0000000 | 600 + 1 | 2.0000000 | 0 | 2 | 1401-06-01 | 450.0000000 | 1.0000000 | .0000000 | 400 + 1100 | 2.0000000 | 2400 | 2 | 1401-01-01 | 140.0000000 | 1.0000000 | .0000000 | 100 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.pn desc range between 0 preceding and 0 following ); -- mvd 1,3->7; + cn | cn | pn | pn | prc | vn | to_char +----+----+-----+-----+------+----+------------------- + 1 | 1 | 500 | 500 | 5 | 30 | 11.0000000 + 1 | 1 | 400 | 400 | 0 | 50 | .0000000 + 1 | 1 | 300 | 300 | 0 | 30 | .0000000 + 1 | 1 | 200 | 200 | 0 | 10 | .0000000 + 1 | 1 | 100 | 100 | 0 | 20 | .0000000 + 3 | 3 | 600 | 600 | 5 | 30 | 9.0000000 + 3 | 3 | 500 | 500 | 5 | 30 | 9.0000000 + 3 | 3 | 200 | 200 | 0 | 40 | -2.0000000 + 2 | 2 | 400 | 400 | 0 | 50 | -1.0000000 + 2 | 2 | 100 | 100 | 2400 | 40 | 1098.0000000 + 4 | 4 | 800 | 800 | 1 | 40 | -3.0000000 + 4 | 4 | 700 | 700 | 1 | 40 | -3.0000000 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn desc range between floor(ow_sale.vn+ow_sale.pn) preceding and 3 following ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.qty order by ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.vn desc); -- mvd 2,5->4; 2,7,5,1->6; 2,7,5,1->8; 10,5->9; + pn | cn | prc | to_char | vn | to_char | qty | to_char | to_char | dt +-----+----+------+-------------------+----+-------------------+------+-------------------+-------------------+------------ + 200 | 1 | 0 | 200.0000000 | 10 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1401-03-01 + 100 | 1 | 0 | 100.0000000 | 20 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1401-05-01 + 500 | 3 | 5 | 605.0000000 | 30 | 1.0000000 | 12 | 1.0000000 | 3.0000000 | 1401-06-01 + 600 | 3 | 5 | 605.0000000 | 30 | 2.0000000 | 12 | 2.0000000 | 2.0000000 | 1401-06-01 + 500 | 1 | 5 | 605.0000000 | 30 | 1.0000000 | 12 | 1.0000000 | 1.0000000 | 1401-06-01 + 300 | 1 | 0 | 605.0000000 | 30 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1401-05-02 + 800 | 4 | 1 | 2500.0000000 | 40 | 2.0000000 | 1 | 2.0000000 | 1.0000000 | 1401-06-01 + 700 | 4 | 1 | 2500.0000000 | 40 | 1.0000000 | 1 | 1.0000000 | 2.0000000 | 1401-06-01 + 200 | 3 | 0 | 2500.0000000 | 40 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1401-04-01 + 100 | 2 | 2400 | 2500.0000000 | 40 | 1.0000000 | 1100 | 1.0000000 | 1.0000000 | 1401-01-01 + 400 | 2 | 0 | 400.0000000 | 50 | 1.0000000 | 1 | 1.0000000 | 2.0000000 | 1401-06-01 + 400 | 1 | 0 | 400.0000000 | 50 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1401-06-01 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.vn asc range between floor(ow_sale.vn) preceding and unbounded following ); -- mvd 1,8,4,9->7; + cn | qty | qty | vn | prc | vn | to_char | dt | pn +----+------+------+----+------+----+-------------------+------------+----- + 3 | 1 | 1 | 40 | 0 | 40 | 40.0000000 | 1401-04-01 | 200 + 1 | 1 | 1 | 20 | 0 | 20 | 20.0000000 | 1401-05-01 | 100 + 1 | 1 | 1 | 30 | 0 | 30 | 30.0000000 | 1401-05-02 | 300 + 1 | 1 | 1 | 50 | 0 | 50 | 50.0000000 | 1401-06-01 | 400 + 1 | 12 | 12 | 30 | 5 | 30 | 30.0000000 | 1401-06-01 | 500 + 3 | 12 | 12 | 30 | 5 | 30 | 30.0000000 | 1401-06-01 | 500 + 4 | 1 | 1 | 40 | 1 | 40 | 40.0000000 | 1401-06-01 | 700 + 2 | 1100 | 1100 | 40 | 2400 | 40 | 40.0000000 | 1401-01-01 | 100 + 1 | 1 | 1 | 10 | 0 | 10 | 10.0000000 | 1401-03-01 | 200 + 2 | 1 | 1 | 50 | 0 | 50 | 50.0000000 | 1401-06-01 | 400 + 3 | 12 | 12 | 30 | 5 | 30 | 30.0000000 | 1401-06-01 | 600 + 4 | 1 | 1 | 40 | 1 | 40 | 40.0000000 | 1401-06-01 | 800 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.pn,ow_sale.pn order by ow_sale.vn asc range between 3 preceding and unbounded following ), +win2 as (order by ow_sale.cn desc); -- mvd 6,3,7,1->5; 9->8; + pn | qty | dt | qty | to_char | prc | vn | to_char | cn +-----+------+------------+------+-------------------+------+----+-------------------+---- + 800 | 1 | 1401-06-01 | 1 | 1.0000000 | 1 | 40 | 1.0000000 | 4 + 700 | 1 | 1401-06-01 | 1 | 1.0000000 | 1 | 40 | 2.0000000 | 4 + 200 | 1 | 1401-04-01 | 1 | 1.0000000 | 0 | 40 | 3.0000000 | 3 + 500 | 12 | 1401-06-01 | 12 | 12.0000000 | 5 | 30 | 4.0000000 | 3 + 600 | 12 | 1401-06-01 | 12 | 12.0000000 | 5 | 30 | 5.0000000 | 3 + 100 | 1100 | 1401-01-01 | 1100 | 1100.0000000 | 2400 | 40 | 6.0000000 | 2 + 400 | 1 | 1401-06-01 | 1 | 1.0000000 | 0 | 50 | 7.0000000 | 2 + 400 | 1 | 1401-06-01 | 1 | 1.0000000 | 0 | 50 | 8.0000000 | 1 + 300 | 1 | 1401-05-02 | 1 | 1.0000000 | 0 | 30 | 9.0000000 | 1 + 500 | 12 | 1401-06-01 | 12 | 12.0000000 | 5 | 30 | 10.0000000 | 1 + 100 | 1 | 1401-05-01 | 1 | 1.0000000 | 0 | 20 | 11.0000000 | 1 + 200 | 1 | 1401-03-01 | 1 | 1.0000000 | 0 | 10 | 12.0000000 | 1 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.qty order by ow_sale.pn desc range between current row and current row ); -- mvd 4,2,7->6; + vn | qty | vn | prc | cn | to_char | pn +----+------+----+------+----+-------------------+----- + 20 | 1 | 20 | 0 | 1 | 80.0000000 | 100 + 10 | 1 | 10 | 0 | 1 | 190.0000000 | 200 + 40 | 1 | 40 | 0 | 3 | 190.0000000 | 200 + 30 | 12 | 30 | 5 | 1 | 470.0000000 | 500 + 30 | 12 | 30 | 5 | 3 | 470.0000000 | 500 + 40 | 1 | 40 | 1 | 4 | 760.0000000 | 800 + 40 | 1100 | 40 | 2400 | 2 | 60.0000000 | 100 + 30 | 1 | 30 | 0 | 1 | 270.0000000 | 300 + 50 | 1 | 50 | 0 | 1 | 350.0000000 | 400 + 50 | 1 | 50 | 0 | 2 | 350.0000000 | 400 + 30 | 12 | 30 | 5 | 3 | 570.0000000 | 600 + 40 | 1 | 40 | 1 | 4 | 660.0000000 | 700 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn desc range between current row and current row ), +win2 as (order by ow_sale.pn desc); -- mvd 3,5->4; 2->6; + prc | pn | cn | to_char | dt | to_char +------+-----+----+-------------------+------------+------------------- + 1 | 800 | 4 | 800.0000000 | 1401-06-01 | .0000000 + 1 | 700 | 4 | 800.0000000 | 1401-06-01 | .0909091 + 5 | 600 | 3 | 7200.0000000 | 1401-06-01 | .1818182 + 5 | 500 | 1 | 6000.0000000 | 1401-06-01 | .2727273 + 5 | 500 | 3 | 7200.0000000 | 1401-06-01 | .2727273 + 0 | 400 | 2 | 400.0000000 | 1401-06-01 | .4545455 + 0 | 400 | 1 | 6000.0000000 | 1401-06-01 | .4545455 + 0 | 300 | 1 | 300.0000000 | 1401-05-02 | .6363636 + 0 | 200 | 1 | 200.0000000 | 1401-03-01 | .7272727 + 0 | 200 | 3 | 200.0000000 | 1401-04-01 | .7272727 + 2400 | 100 | 2 | 110000.0000000 | 1401-01-01 | .9090909 + 0 | 100 | 1 | 100.0000000 | 1401-05-01 | .9090909 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.vn asc range between current row and 1 following ); -- mvd 4,2,5->3; + qty | vn | to_char | cn | pn +------+----+-------------------+----+----- + 1 | 30 | 1.0000000 | 1 | 300 + 12 | 30 | 6.0000000 | 1 | 500 + 12 | 30 | 8.0000000 | 3 | 500 + 1100 | 40 | 2402.0000000 | 2 | 100 + 1 | 40 | 5.0000000 | 4 | 700 + 1 | 50 | 1.0000000 | 1 | 400 + 1 | 10 | 1.0000000 | 1 | 200 + 1 | 20 | 1.0000000 | 1 | 100 + 12 | 30 | 8.0000000 | 3 | 600 + 1 | 40 | 3.0000000 | 3 | 200 + 1 | 40 | 5.0000000 | 4 | 800 + 1 | 50 | 2.0000000 | 2 | 400 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.prc) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.pn asc range between current row and floor(ow_sale.prc) following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 6,8,9,5->7; 9->10; 5->11; 9->12; + qty | vn | vn | vn | pn | prc | to_char | dt | cn | to_char | to_char | to_char +------+----+----+----+-----+------+-------------------+------------+----+-------------------+-------------------+------------------- + 1100 | 40 | 40 | 40 | 100 | 2400 | 2400.0000000 | 1401-01-01 | 2 | .0000000 | .0000000 | .0000000 + 1 | 10 | 10 | 10 | 200 | 0 | .0000000 | 1401-03-01 | 1 | .0000000 | 1100.0000000 | .0909091 + 1 | 40 | 40 | 40 | 200 | 0 | .0000000 | 1401-04-01 | 3 | .0000000 | 1.0000000 | .1818182 + 1 | 20 | 20 | 20 | 100 | 0 | .0000000 | 1401-05-01 | 1 | .0000000 | 1.0000000 | .2727273 + 1 | 30 | 30 | 30 | 300 | 0 | .0000000 | 1401-05-02 | 1 | .0000000 | 1.0000000 | .3636364 + 1 | 50 | 50 | 50 | 400 | 0 | .0000000 | 1401-06-01 | 1 | .0000000 | 1.0000000 | .4545455 + 1 | 50 | 50 | 50 | 400 | 0 | .0000000 | 1401-06-01 | 2 | .0000000 | 1.0000000 | .5454545 + 12 | 30 | 30 | 30 | 500 | 5 | 5.0000000 | 1401-06-01 | 1 | .0000000 | .0000000 | .6363636 + 12 | 30 | 30 | 30 | 500 | 5 | 5.0000000 | 1401-06-01 | 3 | .0000000 | .0000000 | .7272727 + 12 | 30 | 30 | 30 | 600 | 5 | 5.0000000 | 1401-06-01 | 3 | .0000000 | .0000000 | .8181818 + 1 | 40 | 40 | 40 | 700 | 1 | 1.0000000 | 1401-06-01 | 4 | 15.0000000 | 12.0000000 | .9090909 + 1 | 40 | 40 | 40 | 800 | 1 | 1.0000000 | 1401-06-01 | 4 | 4.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.pn desc range between current row and unbounded following ); -- mvd 2,5,6,1,7->4; + vn | prc | qty | to_char | dt | cn | pn +----+------+------+-------------------+------------+----+----- + 20 | 0 | 1 | 1.0000000 | 1401-05-01 | 1 | 100 + 50 | 0 | 1 | 2.0000000 | 1401-06-01 | 2 | 400 + 40 | 0 | 1 | 3.0000000 | 1401-04-01 | 3 | 200 + 10 | 0 | 1 | 1.0000000 | 1401-03-01 | 1 | 200 + 30 | 0 | 1 | 1.0000000 | 1401-05-02 | 1 | 300 + 50 | 0 | 1 | 1.0000000 | 1401-06-01 | 1 | 400 + 30 | 5 | 12 | 6.0000000 | 1401-06-01 | 1 | 500 + 40 | 2400 | 1100 | 2402.0000000 | 1401-01-01 | 2 | 100 + 30 | 5 | 12 | 8.0000000 | 1401-06-01 | 3 | 600 + 30 | 5 | 12 | 8.0000000 | 1401-06-01 | 3 | 500 + 40 | 1 | 1 | 5.0000000 | 1401-06-01 | 4 | 800 + 40 | 1 | 1 | 5.0000000 | 1401-06-01 | 4 | 700 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.cn)) OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.vn desc range between current row and unbounded following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.vn desc), +win4 as (order by ow_sale.vn asc); -- mvd 8,9,1,10->7; 1->11; 9,1->12; 1->13; 1->14; + vn | qty | vn | vn | qty | vn | to_char | dt | cn | pn | to_char | to_char | to_char | to_char +----+------+----+----+------+----+-------------------+------------+----+-----+-------------------+-------------------+-------------------+------------------- + 10 | 1 | 10 | 10 | 1 | 10 | 10.0000000 | 1401-03-01 | 1 | 200 | 1.0000000 | 1.0000000 | 11.0000000 | 1.0000000 + 20 | 1 | 20 | 20 | 1 | 20 | 20.0000000 | 1401-05-01 | 1 | 100 | 2.0000000 | .8000000 | 21.0000000 | 2.0000000 + 30 | 12 | 30 | 30 | 12 | 30 | 35.0000000 | 1401-06-01 | 1 | 500 | 3.0000000 | .6000000 | 33.0000000 | 3.0000000 + 30 | 12 | 30 | 30 | 12 | 30 | 35.0000000 | 1401-06-01 | 3 | 600 | 3.0000000 | 1.0000000 | 33.0000000 | 4.0000000 + 30 | 1 | 30 | 30 | 1 | 30 | 30.0000000 | 1401-05-02 | 1 | 300 | 3.0000000 | .6000000 | 33.0000000 | 5.0000000 + 30 | 12 | 30 | 30 | 12 | 30 | 35.0000000 | 1401-06-01 | 3 | 500 | 3.0000000 | 1.0000000 | 33.0000000 | 6.0000000 + 40 | 1 | 40 | 40 | 1 | 40 | 40.0000000 | 1401-04-01 | 3 | 200 | 7.0000000 | .3333333 | 44.0000000 | 7.0000000 + 40 | 1100 | 40 | 40 | 1100 | 40 | 2440.0000000 | 1401-01-01 | 2 | 100 | 7.0000000 | 1.0000000 | 44.0000000 | 8.0000000 + 40 | 1 | 40 | 40 | 1 | 40 | 41.0000000 | 1401-06-01 | 4 | 700 | 7.0000000 | 1.0000000 | 44.0000000 | 9.0000000 + 40 | 1 | 40 | 40 | 1 | 40 | 41.0000000 | 1401-06-01 | 4 | 800 | 7.0000000 | 1.0000000 | 44.0000000 | 10.0000000 + 50 | 1 | 50 | 50 | 1 | 50 | 50.0000000 | 1401-06-01 | 2 | 400 | 11.0000000 | .5000000 | 52.0000000 | 11.0000000 + 50 | 1 | 50 | 50 | 1 | 50 | 50.0000000 | 1401-06-01 | 1 | 400 | 11.0000000 | .2000000 | 52.0000000 | 12.0000000 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn asc range between 2 following and floor(ow_sale.pn+ow_sale.cn) following ); -- mvd 3,4->2; + vn | to_char | cn | pn +----+-------------------+----+----- + 30 | .0000000 | 1 | 300 + 50 | .0000000 | 1 | 400 + 50 | .0000000 | 2 | 400 + 30 | 30.0000000 | 1 | 500 + 30 | .0000000 | 3 | 500 + 40 | .0000000 | 4 | 800 + 20 | .0000000 | 1 | 100 + 40 | .0000000 | 2 | 100 + 10 | 40.0000000 | 1 | 200 + 40 | .0000000 | 3 | 200 + 30 | .0000000 | 3 | 600 + 40 | .0000000 | 4 | 700 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.pn order by ow_sale.pn desc range between floor(ow_sale.cn/ow_sale.vn) following and 2 following ), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.vn asc), +win3 as (order by ow_sale.cn asc); -- mvd 5,6,7,1->4; 6,2,1->8; 6->9; + pn | vn | dt | to_char | prc | cn | qty | to_char | to_char +-----+----+------------+-------------------+------+----+------+-------------------+------------------- + 100 | 20 | 1401-05-01 | .0000000 | 0 | 1 | 1 | .0000000 | 1.0000000 + 200 | 10 | 1401-03-01 | .0000000 | 0 | 1 | 1 | .0000000 | 1.0000000 + 300 | 30 | 1401-05-02 | .0000000 | 0 | 1 | 1 | .0000000 | 1.0000000 + 400 | 50 | 1401-06-01 | .0000000 | 0 | 1 | 1 | .0000000 | 1.0000000 + 500 | 30 | 1401-06-01 | .0000000 | 5 | 1 | 12 | .0000000 | 1.0000000 + 100 | 40 | 1401-01-01 | .0000000 | 2400 | 2 | 1100 | .0000000 | 6.0000000 + 400 | 50 | 1401-06-01 | .0000000 | 0 | 2 | 1 | .0000000 | 6.0000000 + 200 | 40 | 1401-04-01 | .0000000 | 0 | 3 | 1 | .0000000 | 8.0000000 + 600 | 30 | 1401-06-01 | .0000000 | 5 | 3 | 12 | .0000000 | 8.0000000 + 500 | 30 | 1401-06-01 | .0000000 | 5 | 3 | 12 | .0000000 | 8.0000000 + 700 | 40 | 1401-06-01 | .0000000 | 1 | 4 | 1 | .0000000 | 11.0000000 + 800 | 40 | 1401-06-01 | .0000000 | 1 | 4 | 1 | .0000000 | 11.0000000 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.vn desc range between 0 following and unbounded following ); -- mvd 3,4->2; + qty | to_char | prc | vn +------+-------------------+------+---- + 1 | 41.0000000 | 1 | 40 + 1 | 41.0000000 | 1 | 40 + 1 | 50.0000000 | 0 | 50 + 1 | 50.0000000 | 0 | 50 + 1 | 40.0000000 | 0 | 40 + 1 | 30.0000000 | 0 | 30 + 1 | 20.0000000 | 0 | 20 + 1 | 10.0000000 | 0 | 10 + 12 | 35.0000000 | 5 | 30 + 12 | 35.0000000 | 5 | 30 + 12 | 35.0000000 | 5 | 30 + 1100 | 2440.0000000 | 2400 | 40 +(12 rows) + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.cn asc range between floor(ow_sale.prc) following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.cn asc range between floor(ow_sale.prc) following and unbounded following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.pn order by ow_sale.cn asc); -- mvd 1,3,4,5->2; 1,3,4,5->6; 8->7; 8->9; 11,1,8,5->10; + cn | to_char | dt | qty | pn | to_char | to_char | vn | to_char | to_char | prc +----+-------------------+------------+------+-----+-------------------+-------------------+----+-------------------+-------------------+------ + 1 | 10.0000000 | 1401-03-01 | 1 | 200 | 1.0000000 | 1.0000000 | 10 | 1.0000000 | 1.0000000 | 0 + 1 | 20.0000000 | 1401-05-01 | 1 | 100 | 1.0000000 | 2.0000000 | 20 | 2.0000000 | 1.0000000 | 0 + 3 | .0000000 | 1401-06-01 | 12 | 600 | .0000000 | 3.0000000 | 30 | 6.0000000 | 1.0000000 | 5 + 1 | 30.0000000 | 1401-05-02 | 1 | 300 | 1.0000000 | 3.0000000 | 30 | 6.0000000 | 1.0000000 | 0 + 1 | .0000000 | 1401-06-01 | 12 | 500 | .0000000 | 3.0000000 | 30 | 6.0000000 | 1.0000000 | 5 + 3 | .0000000 | 1401-06-01 | 12 | 500 | .0000000 | 3.0000000 | 30 | 6.0000000 | 2.0000000 | 5 + 2 | .0000000 | 1401-01-01 | 1100 | 100 | .0000000 | 4.0000000 | 40 | 10.0000000 | 1.0000000 | 2400 + 4 | .0000000 | 1401-06-01 | 1 | 700 | .0000000 | 4.0000000 | 40 | 10.0000000 | 1.0000000 | 1 + 4 | .0000000 | 1401-06-01 | 1 | 800 | .0000000 | 4.0000000 | 40 | 10.0000000 | 1.0000000 | 1 + 3 | 40.0000000 | 1401-04-01 | 1 | 200 | 1.0000000 | 4.0000000 | 40 | 10.0000000 | 1.0000000 | 0 + 1 | 50.0000000 | 1401-06-01 | 1 | 400 | 2.0000000 | 5.0000000 | 50 | 12.0000000 | 1.0000000 | 0 + 2 | 50.0000000 | 1401-06-01 | 1 | 400 | 1.0000000 | 5.0000000 | 50 | 12.0000000 | 2.0000000 | 0 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.cn desc rows unbounded preceding ); -- mvd 4,1,3->5; + vn | vn | pn | cn | to_char +----+----+-----+----+------------------- + 40 | 40 | 100 | 2 | 40.0000000 + 20 | 20 | 100 | 1 | 40.0000000 + 10 | 10 | 200 | 1 | 10.0000000 + 40 | 40 | 200 | 3 | 40.0000000 + 30 | 30 | 600 | 3 | 30.0000000 + 40 | 40 | 700 | 4 | 40.0000000 + 30 | 30 | 300 | 1 | 30.0000000 + 50 | 50 | 400 | 1 | 50.0000000 + 50 | 50 | 400 | 2 | 50.0000000 + 30 | 30 | 500 | 1 | 30.0000000 + 30 | 30 | 500 | 3 | 30.0000000 + 40 | 40 | 800 | 4 | 40.0000000 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows unbounded preceding ), +win2 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.vn,ow_sale.dt order by ow_sale.vn asc); -- mvd 3,4,5,6->2; 3,5,8->7; + pn | to_char | prc | cn | dt | qty | to_char | vn +-----+-------------------+------+----+------------+------+-------------------+---- + 200 | 40.0000000 | 0 | 3 | 1401-04-01 | 1 | 1.0000000 | 40 + 100 | 20.0000000 | 0 | 1 | 1401-05-01 | 1 | 1.0000000 | 20 + 700 | 40.0000000 | 1 | 4 | 1401-06-01 | 1 | 1.0000000 | 40 + 800 | 40.0000000 | 1 | 4 | 1401-06-01 | 1 | 1.0000000 | 40 + 500 | 30.0000000 | 5 | 1 | 1401-06-01 | 12 | 1.0000000 | 30 + 500 | 30.0000000 | 5 | 3 | 1401-06-01 | 12 | 1.0000000 | 30 + 600 | 30.0000000 | 5 | 3 | 1401-06-01 | 12 | 1.0000000 | 30 + 200 | 10.0000000 | 0 | 1 | 1401-03-01 | 1 | 1.0000000 | 10 + 300 | 30.0000000 | 0 | 1 | 1401-05-02 | 1 | 1.0000000 | 30 + 400 | 50.0000000 | 0 | 1 | 1401-06-01 | 1 | 1.0000000 | 50 + 400 | 50.0000000 | 0 | 2 | 1401-06-01 | 1 | 1.0000000 | 50 + 100 | 40.0000000 | 2400 | 2 | 1401-01-01 | 1100 | 1.0000000 | 40 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows floor(ow_sale.prc) preceding ); -- mvd 6,7,4->5; + pn | pn | prc | qty | to_char | dt | vn +-----+-----+------+------+-------------------+------------+---- + 200 | 200 | 0 | 1 | 1.0000000 | 1401-04-01 | 40 + 100 | 100 | 0 | 1 | 1.0000000 | 1401-05-01 | 20 + 500 | 500 | 5 | 12 | 12.0000000 | 1401-06-01 | 30 + 500 | 500 | 5 | 12 | 12.0000000 | 1401-06-01 | 30 + 600 | 600 | 5 | 12 | 12.0000000 | 1401-06-01 | 30 + 100 | 100 | 2400 | 1100 | 1100.0000000 | 1401-01-01 | 40 + 200 | 200 | 0 | 1 | 1.0000000 | 1401-03-01 | 10 + 300 | 300 | 0 | 1 | 1.0000000 | 1401-05-02 | 30 + 400 | 400 | 0 | 1 | 1.0000000 | 1401-06-01 | 50 + 400 | 400 | 0 | 1 | 1.0000000 | 1401-06-01 | 50 + 700 | 700 | 1 | 1 | 1.0000000 | 1401-06-01 | 40 + 800 | 800 | 1 | 1 | 1.0000000 | 1401-06-01 | 40 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn-ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.vn asc rows floor(ow_sale.vn) preceding ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.dt order by ow_sale.cn desc), +win4 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.cn order by ow_sale.pn asc), +win5 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,5,6->3; 6->7; 4,5->8; 1,4,6,10->9; 4,6,10->11; + prc | qty | to_char | cn | dt | vn | to_char | to_char | to_char | pn | to_char +------+------+-------------------+----+------------+----+-------------------+-------------------+-------------------+-----+------------------- + 0 | 1 | 1.0000000 | 1 | 1401-03-01 | 10 | 1.0000000 | 1.0000000 | 1.0000000 | 200 | .0000000 + 0 | 1 | 1.0000000 | 1 | 1401-05-01 | 20 | 2.0000000 | 1.0000000 | 1.0000000 | 100 | .0000000 + 0 | 1 | 1.0000000 | 1 | 1401-05-02 | 30 | 3.0000000 | 1.0000000 | 1.0000000 | 300 | .0000000 + 5 | 12 | 12.0000000 | 3 | 1401-06-01 | 30 | 4.0000000 | 3.0000000 | 1.0000000 | 500 | .0000000 + 5 | 12 | 12.0000000 | 3 | 1401-06-01 | 30 | 5.0000000 | 4.0000000 | 2.0000000 | 600 | .0000000 + 5 | 12 | 12.0000000 | 1 | 1401-06-01 | 30 | 6.0000000 | 6.0000000 | 1.0000000 | 500 | .0000000 + 1 | 1 | 12.0000000 | 4 | 1401-06-01 | 40 | 7.0000000 | 2.0000000 | 1.0000000 | 700 | .0000000 + 1 | 1 | 12.0000000 | 4 | 1401-06-01 | 40 | 8.0000000 | 1.0000000 | 2.0000000 | 800 | .0000000 + 2400 | 1100 | 1100.0000000 | 2 | 1401-01-01 | 40 | 9.0000000 | 1.0000000 | 1.0000000 | 100 | .0000000 + 0 | 1 | 1.0000000 | 3 | 1401-04-01 | 40 | 10.0000000 | 1.0000000 | 1.0000000 | 200 | .0000000 + 0 | 1 | 1.0000000 | 1 | 1401-06-01 | 50 | 11.0000000 | 7.0000000 | 1.0000000 | 400 | .0000000 + 0 | 1 | 1.0000000 | 2 | 1401-06-01 | 50 | 12.0000000 | 5.0000000 | 1.0000000 | 400 | .0000000 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn asc rows current row ); -- mvd 1,3,4->2; + prc | to_char | cn | vn +------+-------------------+----+---- + 0 | 399.0000000 | 2 | 50 + 2400 | -1000.0000000 | 2 | 40 + 0 | 199.0000000 | 1 | 10 + 0 | 99.0000000 | 1 | 20 + 0 | 299.0000000 | 1 | 30 + 0 | 399.0000000 | 1 | 50 + 0 | 199.0000000 | 3 | 40 + 1 | 699.0000000 | 4 | 40 + 1 | 799.0000000 | 4 | 40 + 5 | 488.0000000 | 1 | 30 + 5 | 488.0000000 | 3 | 30 + 5 | 588.0000000 | 3 | 30 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty*ow_sale.qty) as int),cast (floor(ow_sale.pn+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.cn asc rows current row ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.cn desc), +win3 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn asc); -- mvd 8,9,10,4->7; 9,8,4->11; 10->12; 10->13; 9,8,4->14; + qty | prc | prc | pn | pn | qty | to_char | cn | dt | vn | to_char | to_char | to_char | to_char +------+------+------+-----+-----+------+-------------------+----+------------+----+-------------------+-------------------+-------------------+------------------- + 1 | 0 | 0 | 200 | 200 | 1 | 10.0000000 | 1 | 1401-03-01 | 10 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 1 | 0 | 0 | 100 | 100 | 1 | 20.0000000 | 1 | 1401-05-01 | 20 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 1 | 0 | 0 | 300 | 300 | 1 | 30.0000000 | 1 | 1401-05-02 | 30 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 12 | 5 | 5 | 500 | 500 | 12 | 30.0000000 | 1 | 1401-06-01 | 30 | 1.0000000 | .0000000 | 2.0000000 | 1.0000000 + 12 | 5 | 5 | 500 | 500 | 12 | 30.0000000 | 3 | 1401-06-01 | 30 | 1.0000000 | .0000000 | 3.0000000 | 1.0000000 + 12 | 5 | 5 | 600 | 600 | 12 | 30.0000000 | 3 | 1401-06-01 | 30 | 1.0000000 | .0000000 | 4.0000000 | 1.0000000 + 1100 | 2400 | 2400 | 100 | 100 | 1100 | 40.0000000 | 2 | 1401-01-01 | 40 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 1 | 0 | 0 | 200 | 200 | 1 | 40.0000000 | 3 | 1401-04-01 | 40 | 1.0000000 | .0000000 | 2.0000000 | 1.0000000 + 1 | 1 | 1 | 700 | 700 | 1 | 40.0000000 | 4 | 1401-06-01 | 40 | 1.0000000 | .0000000 | 3.0000000 | 1.0000000 + 1 | 1 | 1 | 800 | 800 | 1 | 40.0000000 | 4 | 1401-06-01 | 40 | 1.0000000 | .0000000 | 4.0000000 | 1.0000000 + 1 | 0 | 0 | 400 | 400 | 1 | 50.0000000 | 1 | 1401-06-01 | 50 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 1 | 0 | 0 | 400 | 400 | 1 | 50.0000000 | 2 | 1401-06-01 | 50 | 1.0000000 | .0000000 | 2.0000000 | 1.0000000 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and floor(ow_sale.qty) preceding ); -- mvd 1,3->6; + cn | vn | pn | cn | cn | to_char +----+----+-----+----+----+------------------- + 1 | 10 | 200 | 1 | 1 | .0000000 + 1 | 20 | 100 | 1 | 1 | 1.0000000 + 1 | 30 | 300 | 1 | 1 | 1.0000000 + 1 | 50 | 400 | 1 | 1 | 1.0000000 + 1 | 30 | 500 | 1 | 1 | .0000000 + 3 | 40 | 200 | 3 | 3 | .0000000 + 3 | 30 | 500 | 3 | 3 | .0000000 + 3 | 30 | 600 | 3 | 3 | .0000000 + 2 | 40 | 100 | 2 | 2 | .0000000 + 2 | 50 | 400 | 2 | 2 | 1.0000000 + 4 | 40 | 700 | 4 | 4 | .0000000 + 4 | 40 | 800 | 4 | 4 | 1.0000000 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and current row ); -- mvd 6,3,2,1->5; + qty | cn | dt | vn | to_char | prc +------+----+------------+----+-------------------+------ + 1 | 1 | 1401-03-01 | 10 | 10.0000000 | 0 + 1 | 1 | 1401-05-02 | 30 | 30.0000000 | 0 + 1 | 1 | 1401-06-01 | 50 | 50.0000000 | 0 + 1 | 4 | 1401-06-01 | 40 | 41.0000000 | 1 + 1 | 4 | 1401-06-01 | 40 | 41.0000000 | 1 + 1 | 1 | 1401-05-01 | 20 | 20.0000000 | 0 + 12 | 1 | 1401-06-01 | 30 | 35.0000000 | 5 + 1 | 2 | 1401-06-01 | 50 | 50.0000000 | 0 + 1100 | 2 | 1401-01-01 | 40 | 2440.0000000 | 2400 + 1 | 3 | 1401-04-01 | 40 | 40.0000000 | 0 + 12 | 3 | 1401-06-01 | 30 | 35.0000000 | 5 + 12 | 3 | 1401-06-01 | 30 | 35.0000000 | 5 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.cn)) OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.pn+ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 1,5,6,2->4; 8->7; 8->9; 8->10; 1->11; 8->12; + cn | pn | cn | to_char | dt | qty | to_char | vn | to_char | to_char | to_char | to_char +----+-----+----+-------------------+------------+------+-------------------+----+-------------------+-------------------+-------------------+------------------- + 2 | 400 | 2 | 49.0000000 | 1401-06-01 | 1 | 1.0000000 | 50 | .0000000 | 52.0000000 | .0000000 | 1.0000000 + 1 | 400 | 1 | 49.0000000 | 1401-06-01 | 1 | 1.0000000 | 50 | .0000000 | 52.0000000 | .0000000 | 2.0000000 + 4 | 800 | 4 | 39.0000000 | 1401-06-01 | 1 | 3.0000000 | 40 | .1818182 | 52.0000000 | .0000000 | 3.0000000 + 3 | 200 | 3 | 39.0000000 | 1401-04-01 | 1 | 3.0000000 | 40 | .1818182 | 52.0000000 | .0000000 | 4.0000000 + 4 | 700 | 4 | 39.0000000 | 1401-06-01 | 1 | 3.0000000 | 40 | .1818182 | 52.0000000 | .0000000 | 5.0000000 + 2 | 100 | 2 | -1060.0000000 | 1401-01-01 | 1100 | 3.0000000 | 40 | .1818182 | 52.0000000 | .0000000 | 6.0000000 + 1 | 500 | 1 | 18.0000000 | 1401-06-01 | 12 | 7.0000000 | 30 | .5454545 | 52.0000000 | .0000000 | 7.0000000 + 3 | 500 | 3 | 18.0000000 | 1401-06-01 | 12 | 7.0000000 | 30 | .5454545 | 52.0000000 | .0000000 | 8.0000000 + 3 | 600 | 3 | 18.0000000 | 1401-06-01 | 12 | 7.0000000 | 30 | .5454545 | 52.0000000 | .0000000 | 9.0000000 + 1 | 300 | 1 | 29.0000000 | 1401-05-02 | 1 | 7.0000000 | 30 | .5454545 | 52.0000000 | .0000000 | 10.0000000 + 1 | 100 | 1 | 19.0000000 | 1401-05-01 | 1 | 11.0000000 | 20 | .9090909 | 52.0000000 | .0000000 | 11.0000000 + 1 | 200 | 1 | 9.0000000 | 1401-03-01 | 1 | 12.0000000 | 10 | 1.0000000 | 52.0000000 | .0000000 | 12.0000000 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between unbounded preceding and 6 following ); -- mvd 2,1,6->7; + vn | cn | pn | vn | cn | qty | to_char +----+----+-----+----+----+------+------------------- + 50 | 2 | 400 | 50 | 2 | 1 | -1.0000000 + 40 | 4 | 700 | 40 | 4 | 1 | -3.0000000 + 40 | 4 | 800 | 40 | 4 | 1 | -3.0000000 + 30 | 1 | 500 | 30 | 1 | 12 | 11.0000000 + 30 | 3 | 500 | 30 | 3 | 12 | 9.0000000 + 30 | 3 | 600 | 30 | 3 | 12 | 9.0000000 + 10 | 1 | 200 | 10 | 1 | 1 | .0000000 + 20 | 1 | 100 | 20 | 1 | 1 | .0000000 + 30 | 1 | 300 | 30 | 1 | 1 | .0000000 + 50 | 1 | 400 | 50 | 1 | 1 | .0000000 + 40 | 3 | 200 | 40 | 3 | 1 | -2.0000000 + 40 | 2 | 100 | 40 | 2 | 1100 | 1098.0000000 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty+ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.qty) following ), +win2 as (partition by ow_sale.vn order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc), +win4 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.vn desc); -- mvd 6,2,1,3->5; 1,3->7; 1->8; 2,10,1,3->9; + vn | cn | pn | qty | to_char | prc | to_char | to_char | to_char | dt +----+----+-----+------+-------------------+------+-------------------+-------------------+-------------------+------------ + 40 | 2 | 100 | 1100 | 4.0000000 | 2400 | 1.0000000 | .0000000 | 1.0000000 | 1401-01-01 + 10 | 1 | 200 | 1 | 2.0000000 | 0 | 1.0000000 | 11.0000000 | 1.0000000 | 1401-03-01 + 40 | 3 | 200 | 1 | 6.0000000 | 0 | .7500000 | 41.0000000 | 1.0000000 | 1401-04-01 + 20 | 1 | 100 | 1 | 2.0000000 | 0 | 1.0000000 | 21.0000000 | 1.0000000 | 1401-05-01 + 30 | 1 | 300 | 1 | 2.0000000 | 0 | 1.0000000 | 31.0000000 | 1.0000000 | 1401-05-02 + 50 | 1 | 400 | 1 | 2.0000000 | 0 | 1.0000000 | 51.0000000 | 1.0000000 | 1401-06-01 + 50 | 2 | 400 | 1 | 4.0000000 | 0 | 1.0000000 | 51.0000000 | 1.0000000 | 1401-06-01 + 30 | 1 | 500 | 12 | 2.0000000 | 5 | .7500000 | 41.0000000 | 1.0000000 | 1401-06-01 + 30 | 3 | 500 | 12 | 6.0000000 | 5 | .7500000 | 21.0000000 | 1.0000000 | 1401-06-01 + 30 | 3 | 600 | 12 | 6.0000000 | 5 | .2500000 | 31.0000000 | 1.0000000 | 1401-06-01 + 40 | 4 | 700 | 1 | 8.0000000 | 1 | .5000000 | 42.0000000 | 1.0000000 | 1401-06-01 + 40 | 4 | 800 | 1 | 8.0000000 | 1 | .2500000 | 41.0000000 | 1.0000000 | 1401-06-01 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.vn asc rows between unbounded preceding and unbounded following ); -- mvd 6,2->5; + dt | vn | pn | qty | to_char | cn +------------+----+-----+------+-------------------+---- + 1401-03-01 | 10 | 200 | 1 | 1.0000000 | 1 + 1401-05-01 | 20 | 100 | 1 | 1.0000000 | 1 + 1401-05-02 | 30 | 300 | 1 | 1.0000000 | 1 + 1401-06-01 | 30 | 500 | 12 | 1.0000000 | 1 + 1401-06-01 | 50 | 400 | 1 | 1.0000000 | 1 + 1401-06-01 | 30 | 500 | 12 | 3.0000000 | 3 + 1401-06-01 | 30 | 600 | 12 | 3.0000000 | 3 + 1401-04-01 | 40 | 200 | 1 | 3.0000000 | 3 + 1401-01-01 | 40 | 100 | 1100 | 2.0000000 | 2 + 1401-06-01 | 50 | 400 | 1 | 2.0000000 | 2 + 1401-06-01 | 40 | 700 | 1 | 4.0000000 | 4 + 1401-06-01 | 40 | 800 | 1 | 4.0000000 | 4 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn-ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty/ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 1,6,4->5; 1,8,6->7; 1,8,6->9; 1,8,6->10; 1,8,6->11; 1->12; + cn | qty | cn | pn | to_char | vn | to_char | dt | to_char | to_char | to_char | to_char +----+------+----+-----+-------------------+----+-------------------+------------+-------------------+-------------------+-------------------+------------------- + 2 | 1100 | 2 | 100 | 40.0000000 | 40 | 1.0000000 | 1401-01-01 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 1 | 1 | 1 | 200 | 10.0000000 | 10 | 1.0000000 | 1401-03-01 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 3 | 1 | 3 | 200 | 40.0000000 | 40 | 1.0000000 | 1401-04-01 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 1 | 1 | 1 | 100 | 20.0000000 | 20 | 1.0000000 | 1401-05-01 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 1 | 1 | 1 | 300 | 30.0000000 | 30 | 1.0000000 | 1401-05-02 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 1 | 1 | 1 | 400 | 50.0000000 | 50 | 2.0000000 | 1401-06-01 | 2.0000000 | 2.0000000 | 1.0000000 | .0000000 + 2 | 1 | 2 | 400 | 50.0000000 | 50 | 1.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | .5000000 | .0000000 + 1 | 12 | 1 | 500 | 30.0000000 | 30 | 3.0000000 | 1401-06-01 | 3.0000000 | 3.0000000 | 1.0000000 | .0000000 + 3 | 12 | 3 | 500 | 30.0000000 | 30 | 2.0000000 | 1401-06-01 | 2.0000000 | 2.0000000 | .6666667 | .0000000 + 3 | 12 | 3 | 600 | 30.0000000 | 30 | 1.0000000 | 1401-06-01 | 1.0000000 | 2.0000000 | .6666667 | .0000000 + 4 | 1 | 4 | 700 | 40.0000000 | 40 | 2.0000000 | 1401-06-01 | 2.0000000 | 2.0000000 | 1.0000000 | .0000000 + 4 | 1 | 4 | 800 | 40.0000000 | 40 | 1.0000000 | 1401-06-01 | 1.0000000 | 2.0000000 | 1.0000000 | .0000000 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between floor(ow_sale.prc) preceding and 4 preceding ); -- mvd 4,5->3; + pn | vn | to_char | cn | qty +-----+----+-------------------+----+------ + 200 | 10 | .0000000 | 1 | 1 + 200 | 40 | .0000000 | 3 | 1 + 100 | 20 | .0000000 | 1 | 1 + 300 | 30 | .0000000 | 1 | 1 + 400 | 50 | .0000000 | 1 | 1 + 400 | 50 | .0000000 | 2 | 1 + 700 | 40 | .0000000 | 4 | 1 + 800 | 40 | .0000000 | 4 | 1 + 500 | 30 | .0000000 | 1 | 12 + 500 | 30 | .0000000 | 3 | 12 + 600 | 30 | .0000000 | 3 | 12 + 100 | 40 | .0000000 | 2 | 1100 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.cn desc rows between 3 preceding and floor(ow_sale.prc/ow_sale.cn) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.cn desc rows between 3 preceding and floor(ow_sale.prc/ow_sale.cn) preceding ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.vn desc); -- mvd 3,4,1->2; 3,4,1->5; 3->6; 3,4,1->7; 4->8; 3,4,1->9; + pn | to_char | cn | vn | to_char | to_char | to_char | to_char | to_char +-----+-------------------+----+----+-------------------+-------------------+-------------------+-------------------+------------------- + 400 | 1.0000000 | 1 | 50 | 4.0000000 | 4.0000000 | 50.0000000 | 1.0000000 | 4.0000000 + 400 | 1100.0000000 | 2 | 50 | 2.0000000 | 7.0000000 | 50.0000000 | 1.0000000 | 2.0000000 + 800 | 1.0000000 | 4 | 40 | 2.0000000 | 12.0000000 | 40.0000000 | 3.0000000 | 2.0000000 + 100 | .0000000 | 2 | 40 | .0000000 | 6.0000000 | .0000000 | 3.0000000 | .0000000 + 200 | 1.0000000 | 3 | 40 | 1.0000000 | 8.0000000 | 40.0000000 | 3.0000000 | 1.0000000 + 700 | 1.0000000 | 4 | 40 | 1.0000000 | 11.0000000 | 40.0000000 | 3.0000000 | 1.0000000 + 500 | 1.0000000 | 3 | 30 | 1.0000000 | 9.0000000 | 40.0000000 | 7.0000000 | 1.0000000 + 300 | 1.0000000 | 1 | 30 | 3.0000000 | 3.0000000 | 30.0000000 | 7.0000000 | 3.0000000 + 500 | .0000000 | 1 | 30 | .0000000 | 5.0000000 | .0000000 | 7.0000000 | .0000000 + 600 | 12.0000000 | 3 | 30 | 2.0000000 | 10.0000000 | 40.0000000 | 7.0000000 | 2.0000000 + 100 | 1.0000000 | 1 | 20 | 2.0000000 | 2.0000000 | 20.0000000 | 11.0000000 | 2.0000000 + 200 | 1.0000000 | 1 | 10 | 1.0000000 | 1.0000000 | 10.0000000 | 12.0000000 | 1.0000000 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.pn asc rows between 2 preceding and current row ); -- mvd 1,3,8->7; + cn | vn | qty | prc | qty | cn | to_char | pn +----+----+------+------+------+----+-------------------+----- + 1 | 20 | 1 | 0 | 1 | 1 | 20.0000000 | 100 + 1 | 10 | 1 | 0 | 1 | 1 | 10.0000000 | 200 + 3 | 40 | 1 | 0 | 1 | 3 | 40.0000000 | 200 + 1 | 30 | 12 | 5 | 12 | 1 | 30.0000000 | 500 + 3 | 30 | 12 | 5 | 12 | 3 | 30.0000000 | 500 + 4 | 40 | 1 | 1 | 1 | 4 | 40.0000000 | 700 + 2 | 40 | 1100 | 2400 | 1100 | 2 | 40.0000000 | 100 + 1 | 30 | 1 | 0 | 1 | 1 | 30.0000000 | 300 + 1 | 50 | 1 | 0 | 1 | 1 | 50.0000000 | 400 + 2 | 50 | 1 | 0 | 1 | 2 | 50.0000000 | 400 + 3 | 30 | 12 | 5 | 12 | 3 | 30.0000000 | 600 + 4 | 40 | 1 | 1 | 1 | 4 | 40.0000000 | 800 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.cn asc rows between floor(ow_sale.prc) preceding and current row ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.cn desc), +win3 as (order by ow_sale.pn asc), +win4 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc); -- mvd 3,2,4,6->7; 2,9,4,6->8; 2,9,4,6->10; 6->11; 3,2,9,4,6->12; 2,9,4,6->13; + qty | cn | prc | vn | vn | pn | to_char | to_char | dt | to_char | to_char | to_char | to_char +------+----+------+----+----+-----+-------------------+-------------------+------------+-------------------+-------------------+-------------------+------------------- + 1 | 1 | 0 | 20 | 20 | 100 | 2.0000000 | 1.0000000 | 1401-05-01 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 1100 | 2 | 2400 | 40 | 40 | 100 | 1102.0000000 | 1.0000000 | 1401-01-01 | 1.0000000 | 2.0000000 | 1.0000000 | .0000000 + 1 | 1 | 0 | 10 | 10 | 200 | 2.0000000 | 1.0000000 | 1401-03-01 | 1.0000000 | 3.0000000 | 1.0000000 | .0000000 + 1 | 3 | 0 | 40 | 40 | 200 | 4.0000000 | 1.0000000 | 1401-04-01 | 1.0000000 | 4.0000000 | 1.0000000 | .0000000 + 1 | 1 | 0 | 30 | 30 | 300 | 2.0000000 | 1.0000000 | 1401-05-02 | 1.0000000 | 5.0000000 | 1.0000000 | .0000000 + 1 | 1 | 0 | 50 | 50 | 400 | 2.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | 6.0000000 | 1.0000000 | .0000000 + 1 | 2 | 0 | 50 | 50 | 400 | 3.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | 7.0000000 | .5000000 | .0000000 + 12 | 1 | 5 | 30 | 30 | 500 | 13.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | 8.0000000 | 1.0000000 | .0000000 + 12 | 3 | 5 | 30 | 30 | 500 | 15.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | 9.0000000 | .5000000 | .0000000 + 12 | 3 | 5 | 30 | 30 | 600 | 15.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | 10.0000000 | 1.0000000 | .0000000 + 1 | 4 | 1 | 40 | 40 | 700 | 5.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | 11.0000000 | 1.0000000 | .0000000 + 1 | 4 | 1 | 40 | 40 | 800 | 5.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | 12.0000000 | 1.0000000 | .0000000 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows between 4 preceding and 4 following ); -- mvd 4,1->3; + vn | cn | to_char | dt +----+----+-------------------+------------ + 40 | 2 | 1140.0000000 | 1401-01-01 + 40 | 3 | 41.0000000 | 1401-04-01 + 20 | 1 | 21.0000000 | 1401-05-01 + 10 | 1 | 11.0000000 | 1401-03-01 + 30 | 1 | 31.0000000 | 1401-05-02 + 50 | 1 | 51.0000000 | 1401-06-01 + 50 | 2 | 51.0000000 | 1401-06-01 + 30 | 1 | 51.0000000 | 1401-06-01 + 30 | 3 | 51.0000000 | 1401-06-01 + 30 | 3 | 51.0000000 | 1401-06-01 + 40 | 4 | 51.0000000 | 1401-06-01 + 40 | 4 | 42.0000000 | 1401-06-01 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows between floor(ow_sale.cn) preceding and floor(ow_sale.vn) following ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,4,5->2; 1,7,3,5->6; + dt | to_char | vn | qty | pn | to_char | cn +------------+-------------------+----+------+-----+-------------------+---- + 1401-05-01 | 2.0000000 | 20 | 1 | 100 | 100.0000000 | 1 + 1401-03-01 | 2.0000000 | 10 | 1 | 200 | 200.0000000 | 1 + 1401-04-01 | 4.0000000 | 40 | 1 | 200 | 200.0000000 | 3 + 1401-06-01 | 15.0000000 | 30 | 12 | 500 | .0000000 | 1 + 1401-06-01 | 15.0000000 | 30 | 12 | 500 | .0000000 | 3 + 1401-06-01 | 5.0000000 | 40 | 1 | 700 | .0000000 | 4 + 1401-01-01 | 1102.0000000 | 40 | 1100 | 100 | .0000000 | 2 + 1401-05-02 | 2.0000000 | 30 | 1 | 300 | 300.0000000 | 1 + 1401-06-01 | 3.0000000 | 50 | 1 | 400 | 400.0000000 | 1 + 1401-06-01 | 3.0000000 | 50 | 1 | 400 | 400.0000000 | 2 + 1401-06-01 | 15.0000000 | 30 | 12 | 600 | .0000000 | 3 + 1401-06-01 | 5.0000000 | 40 | 1 | 800 | .0000000 | 4 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.prc)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn asc rows between 2 preceding and unbounded following ), +win2 as (order by ow_sale.cn desc); -- mvd 5->7; 2->8; 2->9; + prc | cn | pn | qty | vn | qty | to_char | to_char | to_char +------+----+-----+------+----+------+-------------------+-------------------+------------------- + 1 | 4 | 800 | 1 | 40 | 1 | 40.0000000 | 1.0000000 | 2.0000000 + 1 | 4 | 700 | 1 | 40 | 1 | 40.0000000 | 2.0000000 | 2.0000000 + 5 | 3 | 600 | 12 | 30 | 12 | 30.0000000 | 3.0000000 | 5.0000000 + 0 | 3 | 200 | 1 | 40 | 1 | 40.0000000 | 4.0000000 | 5.0000000 + 5 | 3 | 500 | 12 | 30 | 12 | 30.0000000 | 5.0000000 | 5.0000000 + 0 | 2 | 400 | 1 | 50 | 1 | 50.0000000 | 6.0000000 | 7.0000000 + 2400 | 2 | 100 | 1100 | 40 | 1100 | 40.0000000 | 7.0000000 | 7.0000000 + 5 | 1 | 500 | 12 | 30 | 12 | 30.0000000 | 8.0000000 | 12.0000000 + 0 | 1 | 300 | 1 | 30 | 1 | 30.0000000 | 9.0000000 | 12.0000000 + 0 | 1 | 100 | 1 | 20 | 1 | 20.0000000 | 10.0000000 | 12.0000000 + 0 | 1 | 400 | 1 | 50 | 1 | 50.0000000 | 11.0000000 | 12.0000000 + 0 | 1 | 200 | 1 | 10 | 1 | 10.0000000 | 12.0000000 | 12.0000000 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between current row and current row ); -- mvd 4,5,6,2->3; + qty | pn | to_char | prc | cn | vn +------+-----+-------------------+------+----+---- + 1 | 300 | 9000.0000000 | 0 | 1 | 30 + 12 | 500 | 15000.0000000 | 5 | 1 | 30 + 12 | 500 | 15000.0000000 | 5 | 3 | 30 + 1 | 700 | 28000.0000000 | 1 | 4 | 40 + 1 | 400 | 20000.0000000 | 0 | 1 | 50 + 1 | 400 | 20000.0000000 | 0 | 2 | 50 + 1 | 200 | 2000.0000000 | 0 | 1 | 10 + 1 | 100 | 2000.0000000 | 0 | 1 | 20 + 12 | 600 | 18000.0000000 | 5 | 3 | 30 + 1 | 200 | 8000.0000000 | 0 | 3 | 40 + 1 | 800 | 32000.0000000 | 1 | 4 | 40 + 1100 | 100 | 4000.0000000 | 2400 | 2 | 40 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc,ow_sale.pn asc rows between current row and current row ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.cn asc), +win4 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.cn asc); -- mvd 5,6,7,1,2->4; 5->8; 5->9; 5->10; 5->11; 5->12; + qty | pn | qty | to_char | cn | dt | vn | to_char | to_char | to_char | to_char | to_char +------+-----+------+-------------------+----+------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | 800 | 1 | .0000000 | 4 | 1401-06-01 | 40 | 1.0000000 | 1.0000000 | .9090909 | .0000000 | 40.0000000 + 1 | 700 | 1 | .0000000 | 4 | 1401-06-01 | 40 | 1.0000000 | 1.0000000 | .9090909 | .0000000 | 40.0000000 + 1 | 200 | 1 | .0000000 | 3 | 1401-04-01 | 40 | 3.0000000 | 3.0000000 | .6363636 | .0000000 | 40.0000000 + 12 | 500 | 12 | .0000000 | 3 | 1401-06-01 | 30 | 3.0000000 | 3.0000000 | .6363636 | .0000000 | 40.0000000 + 12 | 600 | 12 | .0000000 | 3 | 1401-06-01 | 30 | 3.0000000 | 3.0000000 | .6363636 | .0000000 | 40.0000000 + 1 | 400 | 1 | .0000000 | 2 | 1401-06-01 | 50 | 6.0000000 | 6.0000000 | .4545455 | .0000000 | 50.0000000 + 1100 | 100 | 1100 | .0000000 | 2 | 1401-01-01 | 40 | 6.0000000 | 6.0000000 | .4545455 | .0000000 | 50.0000000 + 1 | 400 | 1 | .0000000 | 1 | 1401-06-01 | 50 | 8.0000000 | 8.0000000 | .0000000 | .0000000 | 50.0000000 + 12 | 500 | 12 | .0000000 | 1 | 1401-06-01 | 30 | 8.0000000 | 8.0000000 | .0000000 | .0000000 | 50.0000000 + 1 | 200 | 1 | .0000000 | 1 | 1401-03-01 | 10 | 8.0000000 | 8.0000000 | .0000000 | .0000000 | 50.0000000 + 1 | 100 | 1 | .0000000 | 1 | 1401-05-01 | 20 | 8.0000000 | 8.0000000 | .0000000 | .0000000 | 50.0000000 + 1 | 300 | 1 | .0000000 | 1 | 1401-05-02 | 30 | 8.0000000 | 8.0000000 | .0000000 | .0000000 | 50.0000000 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows between current row and 8 following ); -- mvd 2,6->5; + pn | cn | cn | cn | to_char | dt +-----+----+----+----+-------------------+------------ + 200 | 1 | 1 | 1 | .0000000 | 1401-03-01 + 300 | 1 | 1 | 1 | .0000000 | 1401-05-02 + 400 | 1 | 1 | 1 | .0000000 | 1401-06-01 + 400 | 2 | 2 | 2 | .0000000 | 1401-06-01 + 500 | 1 | 1 | 1 | .0000000 | 1401-06-01 + 500 | 3 | 3 | 3 | .0000000 | 1401-06-01 + 600 | 3 | 3 | 3 | .0000000 | 1401-06-01 + 700 | 4 | 4 | 4 | .0000000 | 1401-06-01 + 800 | 4 | 4 | 4 | .0000000 | 1401-06-01 + 100 | 2 | 2 | 2 | 11.0000000 | 1401-01-01 + 200 | 3 | 3 | 3 | .0000000 | 1401-04-01 + 100 | 1 | 1 | 1 | .0000000 | 1401-05-01 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.prc)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc rows between current row and floor(ow_sale.cn) following ), +win2 as (partition by ow_sale.prc,ow_sale.cn order by ow_sale.vn desc); -- mvd 1,3,4,5->2; 7,1,3->6; 7,1,3->8; + cn | to_char | vn | qty | pn | to_char | prc | to_char +----+-------------------+----+------+-----+-------------------+------+------------------- + 2 | 1.0000000 | 50 | 1 | 400 | 1.0000000 | 0 | 50.0000000 + 4 | 1.0000000 | 40 | 1 | 700 | 1.0000000 | 1 | 39.0000000 + 4 | 1.0000000 | 40 | 1 | 800 | 2.0000000 | 1 | 39.0000000 + 1 | 12.0000000 | 30 | 12 | 500 | 1.0000000 | 5 | 25.0000000 + 3 | 12.0000000 | 30 | 12 | 500 | 2.0000000 | 5 | 25.0000000 + 3 | 12.0000000 | 30 | 12 | 600 | 1.0000000 | 5 | 25.0000000 + 1 | 1.0000000 | 10 | 1 | 200 | 4.0000000 | 0 | 50.0000000 + 1 | 1.0000000 | 20 | 1 | 100 | 3.0000000 | 0 | 50.0000000 + 1 | 1.0000000 | 30 | 1 | 300 | 2.0000000 | 0 | 50.0000000 + 1 | 1.0000000 | 50 | 1 | 400 | 1.0000000 | 0 | 50.0000000 + 3 | 1.0000000 | 40 | 1 | 200 | 1.0000000 | 0 | 40.0000000 + 2 | 1100.0000000 | 40 | 1100 | 100 | 1.0000000 | 2400 | -2360.0000000 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ); -- mvd 3,5,7->6; + prc | qty | cn | cn | vn | to_char | pn +------+------+----+----+----+-------------------+----- + 0 | 1 | 1 | 1 | 20 | 1.0000000 | 100 + 0 | 1 | 1 | 1 | 10 | 1.0000000 | 200 + 0 | 1 | 3 | 3 | 40 | 1.0000000 | 200 + 0 | 1 | 2 | 2 | 50 | 1.0000000 | 400 + 5 | 12 | 3 | 3 | 30 | 12.0000000 | 600 + 1 | 1 | 4 | 4 | 40 | 1.0000000 | 800 + 2400 | 1100 | 2 | 2 | 40 | 1100.0000000 | 100 + 0 | 1 | 1 | 1 | 30 | 1.0000000 | 300 + 0 | 1 | 1 | 1 | 50 | 1.0000000 | 400 + 5 | 12 | 1 | 1 | 30 | 12.0000000 | 500 + 5 | 12 | 3 | 3 | 30 | 12.0000000 | 500 + 1 | 1 | 4 | 4 | 40 | 1.0000000 | 700 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc rows between 2 following and 7 following ); -- mvd 3,4->2; + cn | to_char | vn | pn +----+-------------------+----+----- + 1 | .0000000 | 30 | 300 + 1 | .0000000 | 50 | 400 + 2 | .0000000 | 50 | 400 + 1 | .0000000 | 30 | 500 + 3 | .0000000 | 30 | 500 + 4 | .0000000 | 40 | 800 + 1 | .0000000 | 20 | 100 + 2 | .0000000 | 40 | 100 + 1 | .0000000 | 10 | 200 + 3 | .0000000 | 40 | 200 + 3 | .0000000 | 30 | 600 + 4 | .0000000 | 40 | 700 +(12 rows) + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between 4 following and floor(ow_sale.pn+ow_sale.prc) following ), +win2 as (order by ow_sale.pn desc); -- mvd 2,3->7; 4->8; + qty | cn | dt | pn | vn | vn | to_char | to_char +------+----+------------+-----+----+----+-------------------+------------------- + 1 | 4 | 1401-06-01 | 800 | 40 | 40 | .0000000 | 1.0000000 + 1 | 4 | 1401-06-01 | 700 | 40 | 40 | .0000000 | 2.0000000 + 12 | 3 | 1401-06-01 | 600 | 30 | 30 | .0000000 | 3.0000000 + 12 | 1 | 1401-06-01 | 500 | 30 | 30 | .0000000 | 4.0000000 + 12 | 3 | 1401-06-01 | 500 | 30 | 30 | .0000000 | 4.0000000 + 1 | 1 | 1401-06-01 | 400 | 50 | 50 | .0000000 | 6.0000000 + 1 | 2 | 1401-06-01 | 400 | 50 | 50 | .0000000 | 6.0000000 + 1 | 1 | 1401-05-02 | 300 | 30 | 30 | .0000000 | 8.0000000 + 1 | 1 | 1401-03-01 | 200 | 10 | 10 | .0000000 | 9.0000000 + 1 | 3 | 1401-04-01 | 200 | 40 | 40 | .0000000 | 9.0000000 + 1 | 1 | 1401-05-01 | 100 | 20 | 20 | .0000000 | 11.0000000 + 1100 | 2 | 1401-01-01 | 100 | 40 | 40 | .0000000 | 11.0000000 +(12 rows) + +-- MIN() function with NULL OVER() clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (); -- mvd 2->2; + dt | to_char +------------+------------------- + 1401-06-01 | 20.0000000 + 1401-06-01 | 20.0000000 + 1401-05-01 | 20.0000000 + 1401-03-01 | 20.0000000 + 1401-04-01 | 20.0000000 + 1401-06-01 | 20.0000000 + 1401-05-02 | 20.0000000 + 1401-06-01 | 20.0000000 + 1401-06-01 | 20.0000000 + 1401-06-01 | 20.0000000 + 1401-01-01 | 20.0000000 + 1401-06-01 | 20.0000000 +(12 rows) + +-- MIN() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn), +win2 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc); -- mvd 4,2->3; 6,4,7,8->5; + pn | vn | to_char | cn | to_char | prc | dt | qty +-----+----+-------------------+----+-------------------+------+------------+------ + 200 | 10 | .0000000 | 1 | .0000000 | 0 | 1401-03-01 | 1 + 100 | 20 | .0000000 | 1 | .0000000 | 0 | 1401-05-01 | 1 + 500 | 30 | .0000000 | 1 | .0000000 | 5 | 1401-06-01 | 12 + 300 | 30 | .0000000 | 1 | .0000000 | 0 | 1401-05-02 | 1 + 500 | 30 | 5.0000000 | 3 | .0000000 | 5 | 1401-06-01 | 12 + 600 | 30 | 5.0000000 | 3 | .0000000 | 5 | 1401-06-01 | 12 + 200 | 40 | .0000000 | 3 | .0000000 | 0 | 1401-04-01 | 1 + 400 | 50 | .0000000 | 1 | .0000000 | 0 | 1401-06-01 | 1 + 100 | 40 | 2400.0000000 | 2 | .0000000 | 2400 | 1401-01-01 | 1100 + 700 | 40 | 1.0000000 | 4 | .0000000 | 1 | 1401-06-01 | 1 + 800 | 40 | 1.0000000 | 4 | .0000000 | 1 | 1401-06-01 | 1 + 400 | 50 | .0000000 | 2 | .0000000 | 0 | 1401-06-01 | 1 +(12 rows) + +-- MIN() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc,ow_sale.cn desc); -- mvd 5,2->4; + pn | vn | qty | to_char | cn +-----+----+------+-------------------+---- + 400 | 50 | 1 | 1.0000000 | 2 + 400 | 50 | 1 | 1.0000000 | 1 + 700 | 40 | 1 | 1.0000000 | 4 + 800 | 40 | 1 | 1.0000000 | 4 + 200 | 40 | 1 | 1.0000000 | 3 + 100 | 40 | 1100 | 1.0000000 | 2 + 500 | 30 | 12 | 1.0000000 | 3 + 600 | 30 | 12 | 1.0000000 | 3 + 300 | 30 | 1 | 1.0000000 | 1 + 500 | 30 | 12 | 1.0000000 | 1 + 100 | 20 | 1 | 1.0000000 | 1 + 200 | 10 | 1 | 1.0000000 | 1 +(12 rows) + +-- MIN() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc), +win2 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 1->5; 2->6; 1->7; + cn | pn | cn | prc | to_char | to_char | to_char +----+-----+----+------+-------------------+-------------------+------------------- + 2 | 100 | 2 | 2400 | 1.0000000 | .0000000 | 1100.0000000 + 1 | 200 | 1 | 0 | 1.0000000 | 1.0000000 | 12.0000000 + 3 | 200 | 3 | 0 | 1.0000000 | 1.0000000 | 1100.0000000 + 1 | 100 | 1 | 0 | 1.0000000 | 1.0000000 | 12.0000000 + 1 | 300 | 1 | 0 | 1.0000000 | 1.0000000 | 12.0000000 + 1 | 400 | 1 | 0 | 1.0000000 | 1.0000000 | 12.0000000 + 2 | 400 | 2 | 0 | 1.0000000 | 1.0000000 | 1100.0000000 + 1 | 500 | 1 | 5 | 1.0000000 | .0000000 | 12.0000000 + 3 | 500 | 3 | 5 | 1.0000000 | .0000000 | 1100.0000000 + 3 | 600 | 3 | 5 | 1.0000000 | .0000000 | 1100.0000000 + 4 | 700 | 4 | 1 | 1.0000000 | 1.0000000 | 1100.0000000 + 4 | 800 | 4 | 1 | 1.0000000 | .0000000 | 1100.0000000 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range unbounded preceding ); -- mvd 1->5; + pn | qty | vn | qty | to_char +-----+------+----+------+------------------- + 800 | 1 | 40 | 1 | 800.0000000 + 700 | 1 | 40 | 1 | 700.0000000 + 600 | 12 | 30 | 12 | 600.0000000 + 500 | 12 | 30 | 12 | 500.0000000 + 500 | 12 | 30 | 12 | 500.0000000 + 400 | 1 | 50 | 1 | 400.0000000 + 400 | 1 | 50 | 1 | 400.0000000 + 300 | 1 | 30 | 1 | 300.0000000 + 200 | 1 | 10 | 1 | 200.0000000 + 200 | 1 | 40 | 1 | 200.0000000 + 100 | 1 | 20 | 1 | 100.0000000 + 100 | 1100 | 40 | 1100 | 100.0000000 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range unbounded preceding ), +win2 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.cn asc), +win3 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.cn desc); -- mvd 2->4; 6,2->5; 6,8->7; + qty | vn | vn | to_char | to_char | cn | to_char | pn +------+----+----+-------------------+-------------------+----+-------------------+----- + 1 | 50 | 50 | -49.0000000 | 1.0000000 | 1 | 2.0000000 | 400 + 1 | 50 | 50 | -49.0000000 | 1.0000000 | 2 | 1.0000000 | 400 + 1100 | 40 | 40 | -49.0000000 | 1.0000000 | 2 | 1.0000000 | 100 + 1 | 40 | 40 | -49.0000000 | 1.0000000 | 4 | 1.0000000 | 800 + 1 | 40 | 40 | -49.0000000 | 1.0000000 | 4 | 1.0000000 | 700 + 1 | 40 | 40 | -49.0000000 | 1.0000000 | 3 | 1.0000000 | 200 + 12 | 30 | 30 | -49.0000000 | 1.0000000 | 1 | 2.0000000 | 500 + 12 | 30 | 30 | -49.0000000 | 1.0000000 | 3 | 1.0000000 | 600 + 12 | 30 | 30 | -49.0000000 | 1.0000000 | 3 | 1.0000000 | 500 + 1 | 30 | 30 | -49.0000000 | 1.0000000 | 1 | 1.0000000 | 300 + 1 | 20 | 20 | -49.0000000 | 1.0000000 | 1 | 2.0000000 | 100 + 1 | 10 | 10 | -49.0000000 | 1.0000000 | 1 | 2.0000000 | 200 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range 2 preceding ); -- mvd 6->5; + vn | cn | dt | cn | to_char | pn +----+----+------------+----+-------------------+----- + 20 | 1 | 1401-05-01 | 1 | 100.0000000 | 100 + 40 | 2 | 1401-01-01 | 2 | 100.0000000 | 100 + 10 | 1 | 1401-03-01 | 1 | 200.0000000 | 200 + 40 | 3 | 1401-04-01 | 3 | 200.0000000 | 200 + 30 | 1 | 1401-05-02 | 1 | 300.0000000 | 300 + 50 | 1 | 1401-06-01 | 1 | 400.0000000 | 400 + 50 | 2 | 1401-06-01 | 2 | 400.0000000 | 400 + 30 | 1 | 1401-06-01 | 1 | 6000.0000000 | 500 + 30 | 3 | 1401-06-01 | 3 | 6000.0000000 | 500 + 30 | 3 | 1401-06-01 | 3 | 7200.0000000 | 600 + 40 | 4 | 1401-06-01 | 4 | 700.0000000 | 700 + 40 | 4 | 1401-06-01 | 4 | 800.0000000 | 800 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.cn order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range floor(ow_sale.prc) preceding ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.dt order by ow_sale.pn desc), +win3 as (partition by ow_sale.cn order by ow_sale.cn desc); -- mvd 4->3; 4->5; 7,2->6; 4->8; 4->9; + vn | pn | to_char | cn | to_char | to_char | dt | to_char | to_char +----+-----+-------------------+----+-------------------+-------------------+------------+-------------------+------------------- + 40 | 700 | -36.0000000 | 4 | 4.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 + 40 | 800 | -36.0000000 | 4 | 4.0000000 | 1.0000000 | 1401-06-01 | 2.0000000 | 1.0000000 + 30 | 600 | -37.0000000 | 3 | 36.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 + 40 | 200 | -37.0000000 | 3 | 36.0000000 | 1.0000000 | 1401-04-01 | 2.0000000 | 1.0000000 + 30 | 500 | -37.0000000 | 3 | 36.0000000 | 2.0000000 | 1401-06-01 | 3.0000000 | 1.0000000 + 40 | 100 | -48.0000000 | 2 | 2200.0000000 | 1.0000000 | 1401-01-01 | 1.0000000 | 1.0000000 + 50 | 400 | -48.0000000 | 2 | 2200.0000000 | 1.0000000 | 1401-06-01 | 2.0000000 | 1.0000000 + 30 | 500 | -49.0000000 | 1 | 2200.0000000 | 1.0000000 | 1401-06-01 | 4.0000000 | 1.0000000 + 10 | 200 | -49.0000000 | 1 | 12.0000000 | 1.0000000 | 1401-03-01 | 1.0000000 | 1.0000000 + 20 | 100 | -49.0000000 | 1 | 12.0000000 | 1.0000000 | 1401-05-01 | 5.0000000 | 1.0000000 + 30 | 300 | -49.0000000 | 1 | 12.0000000 | 1.0000000 | 1401-05-02 | 2.0000000 | 1.0000000 + 50 | 400 | -49.0000000 | 1 | 12.0000000 | 2.0000000 | 1401-06-01 | 3.0000000 | 1.0000000 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range current row ); -- mvd 2->3; + pn | vn | to_char +-----+----+------------------- + 400 | 50 | .0000000 + 400 | 50 | .0000000 + 100 | 40 | .0000000 + 700 | 40 | .0000000 + 200 | 40 | .0000000 + 800 | 40 | .0000000 + 600 | 30 | .0000000 + 300 | 30 | .0000000 + 500 | 30 | .0000000 + 500 | 30 | .0000000 + 100 | 20 | .0000000 + 200 | 10 | .0000000 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.qty)) OVER(order by ow_sale.vn asc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn/ow_sale.vn)) OVER(order by ow_sale.vn asc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn+ow_sale.qty)) OVER(order by ow_sale.vn asc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(order by ow_sale.vn asc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.qty) as int),cast (floor(ow_sale.pn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range current row ), +win2 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc); -- mvd 6->5; 6->7; 6->8; 6->9; 6->10; 2,12->11; + cn | qty | dt | cn | to_char | vn | to_char | to_char | to_char | to_char | to_char | pn +----+------+------------+----+-------------------+----+-------------------+-------------------+-------------------+-------------------+-------------------+----- + 1 | 1 | 1401-03-01 | 1 | 1.0000000 | 10 | 1.0000000 | 1.0000000 | 1.0000000 | 10.0000000 | .0000000 | 200 + 1 | 1 | 1401-05-01 | 1 | 1.0000000 | 20 | 1.0000000 | 1.0000000 | 1.0000000 | 20.0000000 | .0000000 | 100 + 1 | 12 | 1401-06-01 | 1 | 1.0000000 | 30 | 4.0000000 | 4.0000000 | 4.0000000 | 30.0000000 | .0000000 | 500 + 3 | 12 | 1401-06-01 | 3 | 1.0000000 | 30 | 4.0000000 | 4.0000000 | 4.0000000 | 30.0000000 | .0000000 | 500 + 1 | 1 | 1401-05-02 | 1 | 1.0000000 | 30 | 4.0000000 | 4.0000000 | 4.0000000 | 30.0000000 | .0000000 | 300 + 3 | 12 | 1401-06-01 | 3 | 1.0000000 | 30 | 4.0000000 | 4.0000000 | 4.0000000 | 30.0000000 | .0000000 | 600 + 2 | 1100 | 1401-01-01 | 2 | 1.0000000 | 40 | 4.0000000 | 4.0000000 | 4.0000000 | 40.0000000 | .0000000 | 100 + 4 | 1 | 1401-06-01 | 4 | 1.0000000 | 40 | 4.0000000 | 4.0000000 | 4.0000000 | 40.0000000 | .0000000 | 800 + 3 | 1 | 1401-04-01 | 3 | 1.0000000 | 40 | 4.0000000 | 4.0000000 | 4.0000000 | 40.0000000 | .0000000 | 200 + 4 | 1 | 1401-06-01 | 4 | 1.0000000 | 40 | 4.0000000 | 4.0000000 | 4.0000000 | 40.0000000 | .0000000 | 700 + 1 | 1 | 1401-06-01 | 1 | 1.0000000 | 50 | 2.0000000 | 2.0000000 | 2.0000000 | 50.0000000 | .0000000 | 400 + 2 | 1 | 1401-06-01 | 2 | 1.0000000 | 50 | 2.0000000 | 2.0000000 | 2.0000000 | 50.0000000 | .0000000 | 400 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and 2 preceding ); -- mvd 1->4; + cn | qty | prc | to_char +----+------+------+------------------- + 1 | 1 | 0 | .0000000 + 1 | 1 | 0 | .0000000 + 1 | 1 | 0 | .0000000 + 1 | 1 | 0 | .0000000 + 1 | 12 | 5 | .0000000 + 2 | 1100 | 2400 | .0000000 + 2 | 1 | 0 | .0000000 + 3 | 1 | 0 | 100.0000000 + 3 | 12 | 5 | 100.0000000 + 3 | 12 | 5 | 100.0000000 + 4 | 1 | 1 | 100.0000000 + 4 | 1 | 1 | 100.0000000 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 4->6; + vn | qty | pn | cn | prc | to_char +----+------+-----+----+------+------------------- + 40 | 1 | 800 | 4 | 1 | -39.0000000 + 40 | 1 | 700 | 4 | 1 | -39.0000000 + 30 | 12 | 500 | 3 | 5 | -40.0000000 + 40 | 1 | 200 | 3 | 0 | -40.0000000 + 30 | 12 | 600 | 3 | 5 | -40.0000000 + 50 | 1 | 400 | 2 | 0 | -50.0000000 + 40 | 1100 | 100 | 2 | 2400 | -50.0000000 + 30 | 1 | 300 | 1 | 0 | -50.0000000 + 50 | 1 | 400 | 1 | 0 | -50.0000000 + 30 | 12 | 500 | 1 | 5 | -50.0000000 + 10 | 1 | 200 | 1 | 0 | -50.0000000 + 20 | 1 | 100 | 1 | 0 | -50.0000000 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and current row ); -- mvd 3->2; 3->4; + prc | to_char | cn | to_char +------+-------------------+----+------------------- + 0 | 1.0000000 | 1 | 5.0000000 + 0 | 1.0000000 | 1 | 5.0000000 + 0 | 1.0000000 | 1 | 5.0000000 + 5 | 1.0000000 | 1 | 5.0000000 + 0 | 1.0000000 | 1 | 5.0000000 + 2400 | 1.0000000 | 2 | 7.0000000 + 0 | 1.0000000 | 2 | 7.0000000 + 5 | 1.0000000 | 3 | 10.0000000 + 0 | 1.0000000 | 3 | 10.0000000 + 5 | 1.0000000 | 3 | 10.0000000 + 1 | 1.0000000 | 4 | 12.0000000 + 1 | 1.0000000 | 4 | 12.0000000 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and floor(ow_sale.qty) following ); -- mvd 5->4; + cn | pn | qty | to_char | vn +----+-----+------+-------------------+---- + 1 | 200 | 1 | .0000000 | 10 + 1 | 100 | 1 | .0000000 | 20 + 3 | 600 | 12 | .0000000 | 30 + 1 | 300 | 1 | .0000000 | 30 + 1 | 500 | 12 | .0000000 | 30 + 3 | 500 | 12 | .0000000 | 30 + 2 | 100 | 1100 | .0000000 | 40 + 4 | 700 | 1 | .0000000 | 40 + 4 | 800 | 1 | .0000000 | 40 + 3 | 200 | 1 | .0000000 | 40 + 2 | 400 | 1 | .0000000 | 50 + 1 | 400 | 1 | .0000000 | 50 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and 2 following ); -- mvd 1->3; 1->4; + pn | prc | to_char | to_char +-----+------+-------------------+------------------- + 100 | 0 | 1.0000000 | 1.0000000 + 100 | 2400 | 1.0000000 | 1.0000000 + 200 | 0 | 1.0000000 | 1.0000000 + 200 | 0 | 1.0000000 | 1.0000000 + 300 | 0 | 1.0000000 | 1.0000000 + 400 | 0 | 1.0000000 | 1.0000000 + 400 | 0 | 1.0000000 | 1.0000000 + 500 | 5 | 1.0000000 | 1.0000000 + 500 | 5 | 1.0000000 | 1.0000000 + 600 | 5 | 1.0000000 | 1.0000000 + 700 | 1 | 1.0000000 | 1.0000000 + 800 | 1 | 1.0000000 | 1.0000000 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and unbounded following ); -- mvd 6->5; + vn | cn | cn | dt | to_char | pn +----+----+----+------------+-------------------+----- + 40 | 4 | 4 | 1401-06-01 | 1.0000000 | 800 + 40 | 4 | 4 | 1401-06-01 | 1.0000000 | 700 + 30 | 3 | 3 | 1401-06-01 | 1.0000000 | 600 + 30 | 1 | 1 | 1401-06-01 | 1.0000000 | 500 + 30 | 3 | 3 | 1401-06-01 | 1.0000000 | 500 + 50 | 1 | 1 | 1401-06-01 | 1.0000000 | 400 + 50 | 2 | 2 | 1401-06-01 | 1.0000000 | 400 + 30 | 1 | 1 | 1401-05-02 | 1.0000000 | 300 + 10 | 1 | 1 | 1401-03-01 | 1.0000000 | 200 + 40 | 3 | 3 | 1401-04-01 | 1.0000000 | 200 + 20 | 1 | 1 | 1401-05-01 | 1.0000000 | 100 + 40 | 2 | 2 | 1401-01-01 | 1.0000000 | 100 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc*ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.qty order by ow_sale.vn desc), +win4 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 5->4; 3->6; 8,5,1,2,3->7; 8,5,1,2,3->9; 5->10; 8,5,1,2,3->11; + qty | vn | pn | to_char | cn | to_char | to_char | dt | to_char | to_char | to_char +------+----+-----+-------------------+----+-------------------+-------------------+------------+-------------------+-------------------+------------------- + 1100 | 40 | 100 | 120.0000000 | 2 | 1.0000000 | 1.0000000 | 1401-01-01 | 1.0000000 | .0000000 | 1.0000000 + 1 | 10 | 200 | 120.0000000 | 1 | 2.0000000 | 1.0000000 | 1401-03-01 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 40 | 200 | 120.0000000 | 3 | 2.0000000 | 1.0000000 | 1401-04-01 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 20 | 100 | 120.0000000 | 1 | 1.0000000 | 1.0000000 | 1401-05-01 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 30 | 300 | 120.0000000 | 1 | 3.0000000 | 1.0000000 | 1401-05-02 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 50 | 400 | 120.0000000 | 1 | 4.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 50 | 400 | 120.0000000 | 2 | 4.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 1.0000000 + 12 | 30 | 500 | 120.0000000 | 1 | 5.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 1.0000000 + 12 | 30 | 500 | 120.0000000 | 3 | 5.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | .0000000 | 1.0000000 + 12 | 30 | 600 | 120.0000000 | 3 | 6.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | .0000000 | 1.0000000 + 1 | 40 | 700 | 120.0000000 | 4 | 7.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 40 | 800 | 120.0000000 | 4 | 8.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | 12.0000000 | 1.0000000 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.prc+ow_sale.cn) preceding and floor(ow_sale.cn) preceding ); -- mvd 3->2; + vn | to_char | cn +----+-------------------+---- + 40 | .0000000 | 4 + 40 | .0000000 | 4 + 30 | .0000000 | 3 + 40 | .0000000 | 3 + 30 | .0000000 | 3 + 50 | 4.0000000 | 2 + 40 | 4.0000000 | 2 + 30 | 2.0000000 | 1 + 50 | 2.0000000 | 1 + 30 | 2.0000000 | 1 + 20 | 2.0000000 | 1 + 10 | 2.0000000 | 1 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(order by ow_sale.pn asc range between 2 preceding and 3 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 2 preceding and 3 preceding ), +win2 as (partition by ow_sale.cn order by ow_sale.vn asc); -- mvd 5->7; 5->8; 10,3->9; 5->11; 5->12; + prc | qty | vn | prc | pn | dt | to_char | to_char | to_char | cn | to_char | to_char +------+------+----+------+-----+------------+-------------------+-------------------+-------------------+----+-------------------+------------------- + 0 | 1 | 20 | 0 | 100 | 1401-05-01 | .0000000 | .0000000 | .4000000 | 1 | .0000000 | .0000000 + 2400 | 1100 | 40 | 2400 | 100 | 1401-01-01 | .0000000 | .0000000 | .5000000 | 2 | .0000000 | .0000000 + 0 | 1 | 10 | 0 | 200 | 1401-03-01 | .0000000 | .0000000 | .2000000 | 1 | .0000000 | .0000000 + 0 | 1 | 40 | 0 | 200 | 1401-04-01 | .0000000 | .0000000 | 1.0000000 | 3 | .0000000 | .0000000 + 0 | 1 | 30 | 0 | 300 | 1401-05-02 | .0000000 | .0000000 | .8000000 | 1 | .0000000 | .0000000 + 0 | 1 | 50 | 0 | 400 | 1401-06-01 | .0000000 | .0000000 | 1.0000000 | 1 | .0000000 | .0000000 + 0 | 1 | 50 | 0 | 400 | 1401-06-01 | .0000000 | .0000000 | 1.0000000 | 2 | .0000000 | .0000000 + 5 | 12 | 30 | 5 | 500 | 1401-06-01 | .0000000 | .0000000 | .8000000 | 1 | .0000000 | .0000000 + 5 | 12 | 30 | 5 | 500 | 1401-06-01 | .0000000 | .0000000 | .6666667 | 3 | .0000000 | .0000000 + 5 | 12 | 30 | 5 | 600 | 1401-06-01 | .0000000 | .0000000 | .6666667 | 3 | .0000000 | .0000000 + 1 | 1 | 40 | 1 | 700 | 1401-06-01 | .0000000 | .0000000 | 1.0000000 | 4 | .0000000 | .0000000 + 1 | 1 | 40 | 1 | 800 | 1401-06-01 | .0000000 | .0000000 | 1.0000000 | 4 | .0000000 | .0000000 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.cn) preceding and current row ); -- mvd 2->3; + pn | cn | to_char +-----+----+------------------- + 800 | 4 | 40.0000000 + 700 | 4 | 40.0000000 + 500 | 3 | 30.0000000 + 200 | 3 | 30.0000000 + 600 | 3 | 30.0000000 + 400 | 2 | 30.0000000 + 100 | 2 | 30.0000000 + 300 | 1 | 10.0000000 + 400 | 1 | 10.0000000 + 500 | 1 | 10.0000000 + 100 | 1 | 10.0000000 + 200 | 1 | 10.0000000 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.vn) preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.vn desc), +win3 as (order by ow_sale.vn desc); -- mvd 4->3; 6,4->5; 6,4->7; 4->8; 4->9; + pn | prc | to_char | vn | to_char | cn | to_char | to_char | to_char +-----+------+-------------------+----+-------------------+----+-------------------+-------------------+------------------- + 400 | 0 | 100.0000000 | 50 | 1.0000000 | 2 | 1.0000000 | 1.0000000 | .1666667 + 400 | 0 | 100.0000000 | 50 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | .1666667 + 200 | 0 | 100.0000000 | 40 | 1.0000000 | 3 | 1.0000000 | 3.0000000 | .5000000 + 100 | 2400 | 100.0000000 | 40 | 1.0000000 | 2 | 1.0000000 | 3.0000000 | .5000000 + 700 | 1 | 100.0000000 | 40 | 1.0000000 | 4 | 1.0000000 | 3.0000000 | .5000000 + 800 | 1 | 100.0000000 | 40 | 2.0000000 | 4 | 1.0000000 | 3.0000000 | .5000000 + 300 | 0 | 100.0000000 | 30 | 1.0000000 | 1 | 1.0000000 | 7.0000000 | .8333333 + 500 | 5 | 100.0000000 | 30 | 2.0000000 | 1 | 1.0000000 | 7.0000000 | .8333333 + 600 | 5 | 100.0000000 | 30 | 1.0000000 | 3 | 1.0000000 | 7.0000000 | .8333333 + 500 | 5 | 100.0000000 | 30 | 2.0000000 | 3 | 1.0000000 | 7.0000000 | .8333333 + 100 | 0 | 100.0000000 | 20 | 1.0000000 | 1 | 1.0000000 | 11.0000000 | .9166667 + 200 | 0 | 200.0000000 | 10 | 1.0000000 | 1 | 1.0000000 | 12.0000000 | 1.0000000 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 2 preceding and unbounded following ); -- mvd 3->2; + qty | to_char | cn +------+-------------------+---- + 1 | 1.0000000 | 1 + 1 | 1.0000000 | 1 + 1 | 1.0000000 | 1 + 1 | 1.0000000 | 1 + 12 | 1.0000000 | 1 + 1100 | 1.0000000 | 2 + 1 | 1.0000000 | 2 + 1 | 1.0000000 | 3 + 12 | 1.0000000 | 3 + 12 | 1.0000000 | 3 + 1 | 2.0000000 | 4 + 1 | 2.0000000 | 4 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 2 preceding and unbounded following ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.cn desc); -- mvd 4->3; 2->5; 2->6; 4->7; + pn | vn | to_char | cn | to_char | to_char | to_char +-----+----+-------------------+----+-------------------+-------------------+------------------- + 400 | 50 | -796.0000000 | 1 | 1.0000000 | .1666667 | 1.0000000 + 400 | 50 | -796.0000000 | 2 | 1.0000000 | .1666667 | .5833333 + 200 | 40 | -796.0000000 | 3 | 2.0000000 | .5000000 | .4166667 + 800 | 40 | -796.0000000 | 4 | 2.0000000 | .5000000 | .1666667 + 700 | 40 | -796.0000000 | 4 | 2.0000000 | .5000000 | .1666667 + 100 | 40 | -796.0000000 | 2 | 2.0000000 | .5000000 | .5833333 + 500 | 30 | -796.0000000 | 1 | 3.0000000 | .8333333 | 1.0000000 + 500 | 30 | -796.0000000 | 3 | 3.0000000 | .8333333 | .4166667 + 300 | 30 | -796.0000000 | 1 | 3.0000000 | .8333333 | 1.0000000 + 600 | 30 | -796.0000000 | 3 | 3.0000000 | .8333333 | .4166667 + 100 | 20 | -796.0000000 | 1 | 4.0000000 | .9166667 | 1.0000000 + 200 | 10 | -796.0000000 | 1 | 5.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and current row ); -- mvd 2->5; + vn | cn | cn | pn | to_char +----+----+----+-----+------------------- + 10 | 1 | 1 | 200 | 1.0000000 + 20 | 1 | 1 | 100 | 1.0000000 + 30 | 1 | 1 | 300 | 1.0000000 + 50 | 1 | 1 | 400 | 1.0000000 + 30 | 1 | 1 | 500 | 1.0000000 + 40 | 2 | 2 | 100 | 2.0000000 + 50 | 2 | 2 | 400 | 2.0000000 + 40 | 3 | 3 | 200 | 3.0000000 + 30 | 3 | 3 | 600 | 3.0000000 + 30 | 3 | 3 | 500 | 3.0000000 + 40 | 4 | 4 | 700 | 5.0000000 + 40 | 4 | 4 | 800 | 5.0000000 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and current row ), +win2 as (partition by ow_sale.cn order by ow_sale.pn desc); -- mvd 4->3; 4->5; 4->6; 4,8->7; + vn | qty | to_char | cn | to_char | to_char | to_char | pn +----+------+-------------------+----+-------------------+-------------------+-------------------+----- + 40 | 1 | 40.0000000 | 4 | 2.0000000 | 1.0000000 | .5000000 | 800 + 40 | 1 | 40.0000000 | 4 | 2.0000000 | 1.0000000 | 1.0000000 | 700 + 30 | 12 | 30.0000000 | 3 | 3.0000000 | 1.0000000 | .3333333 | 600 + 30 | 12 | 30.0000000 | 3 | 3.0000000 | 1.0000000 | .6666667 | 500 + 40 | 1 | 30.0000000 | 3 | 3.0000000 | 1.0000000 | 1.0000000 | 200 + 50 | 1 | 40.0000000 | 2 | 2.0000000 | 1.0000000 | .5000000 | 400 + 40 | 1100 | 40.0000000 | 2 | 2.0000000 | 1.0000000 | 1.0000000 | 100 + 10 | 1 | 10.0000000 | 1 | 5.0000000 | 1.0000000 | .8000000 | 200 + 30 | 12 | 10.0000000 | 1 | 5.0000000 | 1.0000000 | .2000000 | 500 + 20 | 1 | 10.0000000 | 1 | 5.0000000 | 1.0000000 | 1.0000000 | 100 + 50 | 1 | 10.0000000 | 1 | 5.0000000 | 1.0000000 | .4000000 | 400 + 30 | 1 | 10.0000000 | 1 | 5.0000000 | 1.0000000 | .6000000 | 300 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and 4 following ), +win2 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.prc order by ow_sale.cn desc), +win3 as (order by ow_sale.vn asc); -- mvd 6->5; 8,6,2,4,9->7; 6->10; 4->11; + dt | qty | qty | vn | to_char | cn | to_char | prc | pn | to_char | to_char +------------+------+------+----+-------------------+----+-------------------+------+-----+-------------------+------------------- + 1401-03-01 | 1 | 1 | 10 | .0000000 | 1 | .0000000 | 0 | 200 | 5.0000000 | 1.0000000 + 1401-05-01 | 1 | 1 | 20 | .0000000 | 1 | .0000000 | 0 | 100 | 5.0000000 | 2.0000000 + 1401-06-01 | 12 | 12 | 30 | .0000000 | 3 | .0000000 | 5 | 600 | 10.0000000 | 3.0000000 + 1401-05-02 | 1 | 1 | 30 | .0000000 | 1 | .0000000 | 0 | 300 | 5.0000000 | 3.0000000 + 1401-06-01 | 12 | 12 | 30 | .0000000 | 3 | .0000000 | 5 | 500 | 10.0000000 | 3.0000000 + 1401-06-01 | 12 | 12 | 30 | .0000000 | 1 | 1.0000000 | 5 | 500 | 5.0000000 | 3.0000000 + 1401-01-01 | 1100 | 1100 | 40 | .0000000 | 2 | .0000000 | 2400 | 100 | 7.0000000 | 4.0000000 + 1401-06-01 | 1 | 1 | 40 | .0000000 | 4 | .0000000 | 1 | 700 | 12.0000000 | 4.0000000 + 1401-04-01 | 1 | 1 | 40 | .0000000 | 3 | .0000000 | 0 | 200 | 10.0000000 | 4.0000000 + 1401-06-01 | 1 | 1 | 40 | .0000000 | 4 | .0000000 | 1 | 800 | 12.0000000 | 4.0000000 + 1401-06-01 | 1 | 1 | 50 | .0000000 | 1 | 1.0000000 | 0 | 400 | 5.0000000 | 5.0000000 + 1401-06-01 | 1 | 1 | 50 | .0000000 | 2 | .0000000 | 0 | 400 | 7.0000000 | 5.0000000 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and unbounded following ); -- mvd 7->6; + prc | qty | prc | vn | qty | to_char | pn +------+------+------+----+------+-------------------+----- + 0 | 1 | 0 | 20 | 1 | -796.0000000 | 100 + 2400 | 1100 | 2400 | 40 | 1100 | -796.0000000 | 100 + 0 | 1 | 0 | 10 | 1 | -796.0000000 | 200 + 0 | 1 | 0 | 40 | 1 | -796.0000000 | 200 + 0 | 1 | 0 | 30 | 1 | -796.0000000 | 300 + 0 | 1 | 0 | 50 | 1 | -796.0000000 | 400 + 0 | 1 | 0 | 50 | 1 | -796.0000000 | 400 + 5 | 12 | 5 | 30 | 12 | -796.0000000 | 500 + 5 | 12 | 5 | 30 | 12 | -796.0000000 | 500 + 5 | 12 | 5 | 30 | 12 | -796.0000000 | 600 + 1 | 1 | 1 | 40 | 1 | -796.0000000 | 700 + 1 | 1 | 1 | 40 | 1 | -796.0000000 | 800 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn/ow_sale.vn) as int),cast (floor(ow_sale.pn*ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and unbounded following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->2; 3->4; 6,3->5; + vn | to_char | cn | to_char | to_char | prc +----+-------------------+----+-------------------+-------------------+------ + 10 | 2.0000000 | 1 | 1.0000000 | .0000000 | 0 + 30 | 2.0000000 | 1 | 1.0000000 | .0000000 | 5 + 20 | 2.0000000 | 1 | 1.0000000 | .0000000 | 0 + 30 | 2.0000000 | 1 | 1.0000000 | .0000000 | 0 + 50 | 2.0000000 | 1 | 1.0000000 | .0000000 | 0 + 40 | 2.0000000 | 2 | 2.0000000 | .0000000 | 2400 + 50 | 2.0000000 | 2 | 2.0000000 | .0000000 | 0 + 30 | 2.0000000 | 3 | 3.0000000 | .0000000 | 5 + 30 | 2.0000000 | 3 | 3.0000000 | .0000000 | 5 + 40 | 2.0000000 | 3 | 3.0000000 | .0000000 | 0 + 40 | 2.0000000 | 4 | 4.0000000 | .0000000 | 1 + 40 | 2.0000000 | 4 | 4.0000000 | .0000000 | 1 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.qty) following and 2 following ); -- mvd 5->4; + prc | prc | qty | to_char | vn +------+------+------+-------------------+---- + 0 | 0 | 1 | .0000000 | 50 + 0 | 0 | 1 | .0000000 | 50 + 2400 | 2400 | 1100 | .0000000 | 40 + 1 | 1 | 1 | .0000000 | 40 + 1 | 1 | 1 | .0000000 | 40 + 0 | 0 | 1 | .0000000 | 40 + 5 | 5 | 12 | .0000000 | 30 + 0 | 0 | 1 | .0000000 | 30 + 5 | 5 | 12 | .0000000 | 30 + 5 | 5 | 12 | .0000000 | 30 + 0 | 0 | 1 | .0000000 | 20 + 0 | 0 | 1 | .0000000 | 10 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(order by ow_sale.pn asc range between 2 following and floor(ow_sale.prc/ow_sale.pn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.vn*ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 2 following and floor(ow_sale.prc/ow_sale.pn) following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 2->7; 2->8; 10->9; + dt | pn | dt | qty | vn | pn | to_char | to_char | to_char | cn +------------+-----+------------+------+----+-----+-------------------+-------------------+-------------------+---- + 1401-01-01 | 100 | 1401-01-01 | 1100 | 40 | 100 | .0000000 | .0000000 | .0000000 | 2 + 1401-03-01 | 200 | 1401-03-01 | 1 | 10 | 200 | .0000000 | .0000000 | .0000000 | 1 + 1401-04-01 | 200 | 1401-04-01 | 1 | 40 | 200 | .0000000 | .0000000 | .0000000 | 3 + 1401-05-01 | 100 | 1401-05-01 | 1 | 20 | 100 | .0000000 | .0000000 | .0000000 | 1 + 1401-05-02 | 300 | 1401-05-02 | 1 | 30 | 300 | .0000000 | .0000000 | .0000000 | 1 + 1401-06-01 | 400 | 1401-06-01 | 1 | 50 | 400 | .0000000 | .0000000 | .0000000 | 1 + 1401-06-01 | 400 | 1401-06-01 | 1 | 50 | 400 | .0000000 | .0000000 | .0000000 | 2 + 1401-06-01 | 500 | 1401-06-01 | 12 | 30 | 500 | .0000000 | .0000000 | .0000000 | 1 + 1401-06-01 | 500 | 1401-06-01 | 12 | 30 | 500 | .0000000 | .0000000 | .0000000 | 3 + 1401-06-01 | 600 | 1401-06-01 | 12 | 30 | 600 | .0000000 | .0000000 | .0000000 | 3 + 1401-06-01 | 700 | 1401-06-01 | 1 | 40 | 700 | .0000000 | .0000000 | .0000000 | 4 + 1401-06-01 | 800 | 1401-06-01 | 1 | 40 | 800 | .0000000 | .0000000 | .0000000 | 4 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 4 following and unbounded following ); -- mvd 3->2; + cn | to_char | pn +----+-------------------+----- + 1 | 10.0000000 | 100 + 2 | 10.0000000 | 100 + 1 | 30.0000000 | 200 + 3 | 30.0000000 | 200 + 1 | 30.0000000 | 300 + 1 | 30.0000000 | 400 + 2 | 30.0000000 | 400 + 1 | 90.0000000 | 500 + 3 | 90.0000000 | 500 + 3 | 160.0000000 | 600 + 4 | 160.0000000 | 700 + 4 | .0000000 | 800 +(12 rows) + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.vn)) OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 4 following and unbounded following ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.vn asc); -- mvd 4->3; 4->5; 4->6; 4->7; 4->8; + pn | qty | to_char | vn | to_char | to_char | to_char | to_char +-----+------+-------------------+----+-------------------+-------------------+-------------------+------------------- + 400 | 1 | 10.0000000 | 50 | 1.0000000 | 11.0000000 | -48.0000000 | .0000000 + 400 | 1 | 10.0000000 | 50 | 1.0000000 | 11.0000000 | -48.0000000 | .0000000 + 100 | 1100 | 10.0000000 | 40 | 3.0000000 | 7.0000000 | -36.0000000 | .1818182 + 700 | 1 | 10.0000000 | 40 | 3.0000000 | 7.0000000 | -36.0000000 | .1818182 + 200 | 1 | 10.0000000 | 40 | 3.0000000 | 7.0000000 | -36.0000000 | .1818182 + 800 | 1 | 10.0000000 | 40 | 3.0000000 | 7.0000000 | -36.0000000 | .1818182 + 600 | 12 | 10.0000000 | 30 | 7.0000000 | 3.0000000 | -27.0000000 | .5454545 + 300 | 1 | 10.0000000 | 30 | 7.0000000 | 3.0000000 | -27.0000000 | .5454545 + 500 | 12 | 10.0000000 | 30 | 7.0000000 | 3.0000000 | -27.0000000 | .5454545 + 500 | 12 | 10.0000000 | 30 | 7.0000000 | 3.0000000 | -27.0000000 | .5454545 + 100 | 1 | 10.0000000 | 20 | 11.0000000 | 2.0000000 | -19.0000000 | .9090909 + 200 | 1 | .0000000 | 10 | 12.0000000 | 1.0000000 | -9.0000000 | 1.0000000 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn desc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows unbounded preceding ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 2->3; 2->4; 1->5; 2->6; 1,8,2->7; 1->9; + cn | pn | to_char | to_char | to_char | to_char | to_char | dt | to_char +----+-----+-------------------+-------------------+-------------------+-------------------+-------------------+------------+------------------- + 1 | 400 | -400.0000000 | 1100.0000000 | 1.0000000 | 1.0000000 | 400.0000000 | 1401-06-01 | 1.0000000 + 1 | 200 | -200.0000000 | 1100.0000000 | 2.0000000 | 1.0000000 | .0000000 | 1401-03-01 | 2.0000000 + 1 | 500 | -495.0000000 | 1100.0000000 | 3.0000000 | 1.0000000 | .0000000 | 1401-06-01 | 3.0000000 + 1 | 100 | -200.0000000 | 1100.0000000 | 4.0000000 | 1.0000000 | .0000000 | 1401-05-01 | 4.0000000 + 1 | 300 | -300.0000000 | 1100.0000000 | 5.0000000 | 1.0000000 | .0000000 | 1401-05-02 | 5.0000000 + 2 | 100 | 2300.0000000 | 1100.0000000 | 6.0000000 | 2.0000000 | .0000000 | 1401-01-01 | 6.0000000 + 2 | 400 | -400.0000000 | 1100.0000000 | 7.0000000 | 1.0000000 | .0000000 | 1401-06-01 | 7.0000000 + 3 | 200 | -200.0000000 | 1100.0000000 | 8.0000000 | 1.0000000 | .0000000 | 1401-04-01 | 8.0000000 + 3 | 500 | -495.0000000 | 1100.0000000 | 9.0000000 | 1.0000000 | .0000000 | 1401-06-01 | 9.0000000 + 3 | 600 | -595.0000000 | 1100.0000000 | 10.0000000 | 1.0000000 | .0000000 | 1401-06-01 | 10.0000000 + 4 | 700 | -699.0000000 | 1100.0000000 | 11.0000000 | 1.0000000 | .0000000 | 1401-06-01 | 11.0000000 + 4 | 800 | -799.0000000 | 1100.0000000 | 12.0000000 | 1.0000000 | .0000000 | 1401-06-01 | 12.0000000 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.cn desc rows 4 preceding ); -- mvd 5,3->7; + pn | pn | vn | pn | cn | vn | to_char +-----+-----+----+-----+----+----+------------------- + 100 | 100 | 40 | 100 | 2 | 40 | 100.0000000 + 200 | 200 | 10 | 200 | 1 | 10 | 100.0000000 + 200 | 200 | 40 | 200 | 3 | 40 | 100.0000000 + 100 | 100 | 20 | 100 | 1 | 20 | 100.0000000 + 300 | 300 | 30 | 300 | 1 | 30 | 100.0000000 + 400 | 400 | 50 | 400 | 1 | 50 | 100.0000000 + 400 | 400 | 50 | 400 | 2 | 50 | 100.0000000 + 500 | 500 | 30 | 500 | 1 | 30 | 100.0000000 + 500 | 500 | 30 | 500 | 3 | 30 | 300.0000000 + 600 | 600 | 30 | 600 | 3 | 30 | 400.0000000 + 700 | 700 | 40 | 700 | 4 | 40 | 400.0000000 + 800 | 800 | 40 | 800 | 4 | 40 | 500.0000000 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn-ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.vn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.cn asc rows floor(ow_sale.prc*ow_sale.qty) preceding ), +win2 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.cn asc), +win3 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc); -- mvd 4->3; 4,6,7->5; 4,6,7->8; 4->9; 4->10; 6,7->11; + qty | qty | to_char | cn | to_char | dt | vn | to_char | to_char | to_char | to_char +------+------+-------------------+----+-------------------+------------+----+-------------------+-------------------+-------------------+------------------- + 1100 | 1100 | 2300.0000000 | 2 | .0000000 | 1401-01-01 | 40 | 1.0000000 | 2440.0000000 | -2300.0000000 | 1.0000000 + 1 | 1 | -200.0000000 | 1 | .0000000 | 1401-03-01 | 10 | 1.0000000 | 10.0000000 | 200.0000000 | 1.0000000 + 1 | 1 | -200.0000000 | 3 | .0000000 | 1401-04-01 | 40 | 1.0000000 | 40.0000000 | 200.0000000 | 1.0000000 + 1 | 1 | -100.0000000 | 1 | .0000000 | 1401-05-01 | 20 | 1.0000000 | 20.0000000 | 100.0000000 | 1.0000000 + 1 | 1 | -300.0000000 | 1 | .0000000 | 1401-05-02 | 30 | 1.0000000 | 30.0000000 | 300.0000000 | 1.0000000 + 1 | 1 | -400.0000000 | 1 | .0000000 | 1401-06-01 | 50 | 1.0000000 | 50.0000000 | 400.0000000 | 3.0000000 + 1 | 1 | -400.0000000 | 2 | 1.0000000 | 1401-06-01 | 50 | 2.0000000 | 50.0000000 | 400.0000000 | 3.0000000 + 12 | 12 | -495.0000000 | 1 | .0000000 | 1401-06-01 | 30 | 1.0000000 | 10.0000000 | -2300.0000000 | 1.0000000 + 12 | 12 | -495.0000000 | 3 | .5000000 | 1401-06-01 | 30 | 3.0000000 | 10.0000000 | -2300.0000000 | 1.0000000 + 12 | 12 | -595.0000000 | 3 | .5000000 | 1401-06-01 | 30 | 3.0000000 | 10.0000000 | -2300.0000000 | 1.0000000 + 1 | 1 | -699.0000000 | 4 | .0000000 | 1401-06-01 | 40 | 2.0000000 | 35.0000000 | 595.0000000 | 2.0000000 + 1 | 1 | -799.0000000 | 4 | .0000000 | 1401-06-01 | 40 | 2.0000000 | 41.0000000 | 699.0000000 | 2.0000000 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn-ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.cn asc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows current row ), +win2 as (order by ow_sale.cn desc); -- mvd 6->5; 6->7; 6->8; + vn | dt | pn | qty | to_char | cn | to_char | to_char +----+------------+-----+------+-------------------+----+-------------------+------------------- + 40 | 1401-06-01 | 800 | 1 | 4.0000000 | 4 | 1.0000000 | .0000000 + 40 | 1401-06-01 | 700 | 1 | 4.0000000 | 4 | 1.0000000 | .0000000 + 30 | 1401-06-01 | 500 | 12 | 3.0000000 | 3 | 1.0000000 | .1818182 + 40 | 1401-04-01 | 200 | 1 | 3.0000000 | 3 | 1.0000000 | .1818182 + 30 | 1401-06-01 | 600 | 12 | 3.0000000 | 3 | 1.0000000 | .1818182 + 50 | 1401-06-01 | 400 | 1 | 2.0000000 | 2 | 1.0000000 | .4545455 + 40 | 1401-01-01 | 100 | 1100 | 2.0000000 | 2 | 1.0000000 | .4545455 + 30 | 1401-06-01 | 500 | 12 | 1.0000000 | 1 | 1.0000000 | .6363636 + 50 | 1401-06-01 | 400 | 1 | 1.0000000 | 1 | 1.0000000 | .6363636 + 30 | 1401-05-02 | 300 | 1 | 1.0000000 | 1 | 1.0000000 | .6363636 + 20 | 1401-05-01 | 100 | 1 | 1.0000000 | 1 | 1.0000000 | .6363636 + 10 | 1401-03-01 | 200 | 1 | 1.0000000 | 1 | 1.0000000 | .6363636 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.vn asc rows between unbounded preceding and 1 preceding ); -- mvd 2,1->3; + vn | cn | to_char +----+----+------------------- + 40 | 2 | .0000000 + 10 | 1 | 1100.0000000 + 40 | 3 | 1.0000000 + 20 | 1 | 1.0000000 + 30 | 1 | 1.0000000 + 50 | 1 | 1.0000000 + 50 | 2 | 1.0000000 + 30 | 1 | 1.0000000 + 30 | 3 | 1.0000000 + 30 | 3 | 1.0000000 + 40 | 4 | 1.0000000 + 40 | 4 | 1.0000000 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn desc rows between unbounded preceding and 1 preceding ), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.pn desc); -- mvd 6,3,2->5; 4,3,2->7; + qty | pn | vn | dt | to_char | cn | to_char +------+-----+----+------------+-------------------+----+------------------- + 1100 | 100 | 40 | 1401-01-01 | .0000000 | 2 | 1.0000000 + 1 | 200 | 10 | 1401-03-01 | 38.0000000 | 1 | 1.0000000 + 1 | 200 | 40 | 1401-04-01 | 9.0000000 | 3 | 1.0000000 + 1 | 100 | 20 | 1401-05-01 | 9.0000000 | 1 | 1.0000000 + 1 | 300 | 30 | 1401-05-02 | 9.0000000 | 1 | 1.0000000 + 1 | 400 | 50 | 1401-06-01 | 9.0000000 | 1 | 1.0000000 + 1 | 400 | 50 | 1401-06-01 | 9.0000000 | 2 | 2.0000000 + 12 | 500 | 30 | 1401-06-01 | 9.0000000 | 1 | 2.0000000 + 12 | 500 | 30 | 1401-06-01 | 9.0000000 | 3 | 1.0000000 + 12 | 600 | 30 | 1401-06-01 | 9.0000000 | 3 | 1.0000000 + 1 | 700 | 40 | 1401-06-01 | 9.0000000 | 4 | 1.0000000 + 1 | 800 | 40 | 1401-06-01 | 9.0000000 | 4 | 1.0000000 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between unbounded preceding and current row ); -- mvd 2->3; + prc | cn | to_char +------+----+------------------- + 2400 | 2 | 100.0000000 + 0 | 1 | 100.0000000 + 0 | 3 | 100.0000000 + 0 | 1 | 100.0000000 + 0 | 1 | 100.0000000 + 0 | 1 | 100.0000000 + 0 | 2 | 100.0000000 + 5 | 1 | 100.0000000 + 5 | 3 | 100.0000000 + 5 | 3 | 100.0000000 + 1 | 4 | 100.0000000 + 1 | 4 | 100.0000000 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 5,6->4; 5,6->7; 5,6->8; + vn | dt | qty | to_char | cn | pn | to_char | to_char +----+------------+------+-------------------+----+-----+-------------------+------------------- + 40 | 1401-01-01 | 1100 | 40.0000000 | 2 | 100 | 1.0000000 | 1.0000000 + 10 | 1401-03-01 | 1 | 10.0000000 | 1 | 200 | 2.0000000 | 2.0000000 + 40 | 1401-04-01 | 1 | 10.0000000 | 3 | 200 | 3.0000000 | 3.0000000 + 20 | 1401-05-01 | 1 | 10.0000000 | 1 | 100 | 4.0000000 | 4.0000000 + 30 | 1401-05-02 | 1 | 10.0000000 | 1 | 300 | 5.0000000 | 5.0000000 + 50 | 1401-06-01 | 1 | 10.0000000 | 1 | 400 | 6.0000000 | 6.0000000 + 50 | 1401-06-01 | 1 | 10.0000000 | 2 | 400 | 7.0000000 | 7.0000000 + 30 | 1401-06-01 | 12 | 10.0000000 | 1 | 500 | 8.0000000 | 8.0000000 + 30 | 1401-06-01 | 12 | 10.0000000 | 3 | 500 | 9.0000000 | 9.0000000 + 30 | 1401-06-01 | 12 | 10.0000000 | 3 | 600 | 10.0000000 | 10.0000000 + 40 | 1401-06-01 | 1 | 10.0000000 | 4 | 700 | 11.0000000 | 11.0000000 + 40 | 1401-06-01 | 1 | 10.0000000 | 4 | 800 | 12.0000000 | 12.0000000 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between unbounded preceding and 6 following ); -- mvd 4,5->3; + prc | vn | to_char | cn | pn +------+----+-------------------+----+----- + 2400 | 40 | 11.0000000 | 2 | 100 + 0 | 10 | 11.0000000 | 1 | 200 + 0 | 40 | 11.0000000 | 3 | 200 + 0 | 20 | 11.0000000 | 1 | 100 + 0 | 30 | 11.0000000 | 1 | 300 + 0 | 50 | 11.0000000 | 1 | 400 + 0 | 50 | 11.0000000 | 2 | 400 + 5 | 30 | 11.0000000 | 1 | 500 + 5 | 30 | 11.0000000 | 3 | 500 + 5 | 30 | 11.0000000 | 3 | 600 + 1 | 40 | 11.0000000 | 4 | 700 + 1 | 40 | 11.0000000 | 4 | 800 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn-ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and 4 following ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.cn asc), +win3 as (order by ow_sale.pn asc), +win4 as (partition by ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc); -- mvd 6->5; 6,4->7; 4->8; 3,6->9; + qty | dt | prc | pn | to_char | cn | to_char | to_char | to_char +------+------------+------+-----+-------------------+----+-------------------+-------------------+------------------- + 1100 | 1401-01-01 | 2400 | 100 | -2300.0000000 | 2 | 2.0000000 | 1.0000000 | .0000000 + 1 | 1401-05-01 | 0 | 100 | -2300.0000000 | 1 | 1.0000000 | 1.0000000 | 200.0000000 + 1 | 1401-03-01 | 0 | 200 | -2300.0000000 | 1 | 1.0000000 | 2.0000000 | .0000000 + 1 | 1401-04-01 | 0 | 200 | -2300.0000000 | 3 | 2.0000000 | 2.0000000 | .0000000 + 1 | 1401-05-02 | 0 | 300 | -2300.0000000 | 1 | 1.0000000 | 3.0000000 | 100.0000000 + 1 | 1401-06-01 | 0 | 400 | -2300.0000000 | 2 | 2.0000000 | 4.0000000 | .0000000 + 1 | 1401-06-01 | 0 | 400 | -2300.0000000 | 1 | 1.0000000 | 4.0000000 | 300.0000000 + 12 | 1401-06-01 | 5 | 500 | -2300.0000000 | 1 | 1.0000000 | 5.0000000 | .0000000 + 12 | 1401-06-01 | 5 | 500 | -2300.0000000 | 3 | 2.0000000 | 5.0000000 | .0000000 + 12 | 1401-06-01 | 5 | 600 | -2300.0000000 | 3 | 1.0000000 | 6.0000000 | .0000000 + 1 | 1401-06-01 | 1 | 700 | -2300.0000000 | 4 | 1.0000000 | 7.0000000 | .0000000 + 1 | 1401-06-01 | 1 | 800 | -2300.0000000 | 4 | 1.0000000 | 8.0000000 | 699.0000000 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and unbounded following ); -- mvd 1,3->2; + vn | to_char | pn +----+-------------------+----- + 40 | 10.0000000 | 100 + 10 | 10.0000000 | 200 + 40 | 10.0000000 | 200 + 20 | 10.0000000 | 100 + 30 | 10.0000000 | 300 + 50 | 10.0000000 | 400 + 50 | 10.0000000 | 400 + 30 | 10.0000000 | 500 + 30 | 10.0000000 | 500 + 30 | 10.0000000 | 600 + 40 | 10.0000000 | 700 + 40 | 10.0000000 | 800 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.vn desc rows between 3 preceding and 6 preceding ); -- mvd 1,5->7; + vn | dt | cn | qty | pn | vn | to_char +----+------------+----+------+-----+----+------------------- + 40 | 1401-01-01 | 2 | 1100 | 100 | 40 | .0000000 + 10 | 1401-03-01 | 1 | 1 | 200 | 10 | .0000000 + 40 | 1401-04-01 | 3 | 1 | 200 | 40 | .0000000 + 20 | 1401-05-01 | 1 | 1 | 100 | 20 | .0000000 + 30 | 1401-05-02 | 1 | 1 | 300 | 30 | .0000000 + 50 | 1401-06-01 | 1 | 1 | 400 | 50 | .0000000 + 50 | 1401-06-01 | 2 | 1 | 400 | 50 | .0000000 + 30 | 1401-06-01 | 1 | 12 | 500 | 30 | .0000000 + 30 | 1401-06-01 | 3 | 12 | 500 | 30 | .0000000 + 30 | 1401-06-01 | 3 | 12 | 600 | 30 | .0000000 + 40 | 1401-06-01 | 4 | 1 | 700 | 40 | .0000000 + 40 | 1401-06-01 | 4 | 1 | 800 | 40 | .0000000 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.pn desc rows between 4 preceding and 1 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.pn desc rows between 4 preceding and 1 preceding ); -- mvd 5,6->4; 5,6->7; + dt | dt | vn | to_char | cn | pn | to_char +------------+------------+----+-------------------+----+-----+------------------- + 1401-01-01 | 1401-01-01 | 40 | .0000000 | 2 | 100 | .0000000 + 1401-03-01 | 1401-03-01 | 10 | 2400.0000000 | 1 | 200 | 96000.0000000 + 1401-04-01 | 1401-04-01 | 40 | .0000000 | 3 | 200 | .0000000 + 1401-05-01 | 1401-05-01 | 20 | .0000000 | 1 | 100 | .0000000 + 1401-05-02 | 1401-05-02 | 30 | .0000000 | 1 | 300 | .0000000 + 1401-06-01 | 1401-06-01 | 50 | .0000000 | 1 | 400 | .0000000 + 1401-06-01 | 1401-06-01 | 50 | .0000000 | 2 | 400 | .0000000 + 1401-06-01 | 1401-06-01 | 30 | .0000000 | 1 | 500 | .0000000 + 1401-06-01 | 1401-06-01 | 30 | .0000000 | 3 | 500 | .0000000 + 1401-06-01 | 1401-06-01 | 30 | .0000000 | 3 | 600 | .0000000 + 1401-06-01 | 1401-06-01 | 40 | .0000000 | 4 | 700 | .0000000 + 1401-06-01 | 1401-06-01 | 40 | 1.0000000 | 4 | 800 | 40.0000000 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc rows between 9 preceding and current row ); -- mvd 1,3->2; + vn | to_char | pn +----+-------------------+----- + 40 | 100.0000000 | 100 + 10 | 100.0000000 | 200 + 40 | 100.0000000 | 200 + 20 | 100.0000000 | 100 + 30 | 100.0000000 | 300 + 50 | 100.0000000 | 400 + 50 | 100.0000000 | 400 + 30 | 100.0000000 | 500 + 30 | 100.0000000 | 500 + 30 | 100.0000000 | 600 + 40 | 100.0000000 | 700 + 40 | 100.0000000 | 800 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between floor(ow_sale.cn) preceding and floor(ow_sale.prc) following ); -- mvd 2,4->3; + qty | cn | to_char | pn +------+----+-------------------+----- + 1100 | 2 | 100.0000000 | 100 + 1 | 1 | 200.0000000 | 200 + 1 | 3 | 200.0000000 | 200 + 1 | 1 | 100.0000000 | 100 + 1 | 1 | 100.0000000 | 300 + 1 | 1 | 300.0000000 | 400 + 1 | 2 | 300.0000000 | 400 + 12 | 1 | 400.0000000 | 500 + 12 | 3 | 400.0000000 | 500 + 12 | 3 | 400.0000000 | 600 + 1 | 4 | 400.0000000 | 700 + 1 | 4 | 700.0000000 | 800 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.pn+ow_sale.vn) preceding and unbounded following ); -- mvd 5->4; + pn | qty | dt | to_char | vn +-----+------+------------+-------------------+---- + 100 | 1100 | 1401-01-01 | .0000000 | 40 + 200 | 1 | 1401-03-01 | .0000000 | 10 + 200 | 1 | 1401-04-01 | .0000000 | 40 + 100 | 1 | 1401-05-01 | .0000000 | 20 + 300 | 1 | 1401-05-02 | .0000000 | 30 + 400 | 1 | 1401-06-01 | .0000000 | 50 + 400 | 1 | 1401-06-01 | .0000000 | 50 + 500 | 12 | 1401-06-01 | .0000000 | 30 + 500 | 12 | 1401-06-01 | .0000000 | 30 + 600 | 12 | 1401-06-01 | .0000000 | 30 + 700 | 1 | 1401-06-01 | .0000000 | 40 + 800 | 1 | 1401-06-01 | .0000000 | 40 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.prc,ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.vn asc rows between floor(ow_sale.prc) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.pn)) OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.vn asc rows between floor(ow_sale.prc) preceding and unbounded following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.vn order by ow_sale.pn desc); -- mvd 3,8->7; 3->9; 3,8->10; 3->11; 8,6->12; 3->13; + prc | prc | cn | prc | cn | pn | to_char | vn | to_char | to_char | to_char | to_char | to_char +------+------+----+------+----+-----+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 0 | 0 | 1 | 0 | 1 | 400 | 1.0000000 | 50 | 1.0000000 | 7.0000000 | 5.0000000 | 1.0000000 | -499.0000000 + 0 | 0 | 1 | 0 | 1 | 200 | 1.0000000 | 10 | 2.0000000 | 11.0000000 | 5.0000000 | 1.0000000 | -499.0000000 + 5 | 5 | 1 | 5 | 1 | 500 | 1.0000000 | 30 | 3.0000000 | 10.0000000 | 5.0000000 | .7500000 | -499.0000000 + 0 | 0 | 1 | 0 | 1 | 100 | 1.0000000 | 20 | 4.0000000 | 9.0000000 | 5.0000000 | 1.0000000 | -499.0000000 + 0 | 0 | 1 | 0 | 1 | 300 | 1.0000000 | 30 | 5.0000000 | 8.0000000 | 5.0000000 | 1.0000000 | -499.0000000 + 2400 | 2400 | 2 | 2400 | 2 | 100 | 1.0000000 | 40 | 6.0000000 | 12.0000000 | 7.0000000 | 1.0000000 | -499.0000000 + 0 | 0 | 2 | 0 | 2 | 400 | 1.0000000 | 50 | 7.0000000 | 6.0000000 | 7.0000000 | 1.0000000 | -499.0000000 + 0 | 0 | 3 | 0 | 3 | 200 | 1.0000000 | 40 | 8.0000000 | 10.0000000 | 10.0000000 | .7500000 | -597.0000000 + 5 | 5 | 3 | 5 | 3 | 500 | 1.0000000 | 30 | 9.0000000 | 9.0000000 | 10.0000000 | .7500000 | -597.0000000 + 5 | 5 | 3 | 5 | 3 | 600 | 1.0000000 | 30 | 10.0000000 | 8.0000000 | 10.0000000 | .2500000 | -597.0000000 + 1 | 1 | 4 | 1 | 4 | 700 | 1.0000000 | 40 | 11.0000000 | 3.0000000 | 12.0000000 | .5000000 | -796.0000000 + 1 | 1 | 4 | 1 | 4 | 800 | 1.0000000 | 40 | 12.0000000 | 2.0000000 | 12.0000000 | .2500000 | -796.0000000 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.pn desc rows between current row and current row ); -- mvd 3,2,1->4; + pn | vn | cn | to_char +-----+----+----+------------------- + 100 | 40 | 2 | 2400.0000000 + 200 | 10 | 1 | .0000000 + 200 | 40 | 3 | .0000000 + 100 | 20 | 1 | .0000000 + 300 | 30 | 1 | .0000000 + 400 | 50 | 1 | .0000000 + 400 | 50 | 2 | .0000000 + 500 | 30 | 1 | 5.0000000 + 500 | 30 | 3 | 5.0000000 + 600 | 30 | 3 | 5.0000000 + 700 | 40 | 4 | 1.0000000 + 800 | 40 | 4 | 1.0000000 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.pn order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc*ow_sale.pn) as int),cast (floor(ow_sale.prc+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.vn desc rows between current row and current row ), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.pn order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,2->6; 5,8,3,2->7; 5,8,3,2->9; 3->10; + prc | pn | vn | pn | cn | to_char | to_char | dt | to_char | to_char +------+-----+----+-----+----+-------------------+-------------------+------------+-------------------+------------------- + 2400 | 100 | 40 | 100 | 2 | 2.0000000 | .0000000 | 1401-01-01 | 1.0000000 | .0000000 + 0 | 200 | 10 | 200 | 1 | 1.0000000 | .0000000 | 1401-03-01 | 1.0000000 | .0000000 + 0 | 200 | 40 | 200 | 3 | 3.0000000 | .0000000 | 1401-04-01 | 1.0000000 | .0000000 + 0 | 100 | 20 | 100 | 1 | 1.0000000 | .0000000 | 1401-05-01 | 1.0000000 | .0000000 + 0 | 300 | 30 | 300 | 1 | 1.0000000 | .0000000 | 1401-05-02 | 1.0000000 | .0000000 + 0 | 400 | 50 | 400 | 1 | 1.0000000 | 1.0000000 | 1401-06-01 | 2.0000000 | .0000000 + 0 | 400 | 50 | 400 | 2 | 2.0000000 | .0000000 | 1401-06-01 | 1.0000000 | 2500.0000000 + 5 | 500 | 30 | 500 | 1 | 1.0000000 | 1.0000000 | 1401-06-01 | 2.0000000 | .0000000 + 5 | 500 | 30 | 500 | 3 | 3.0000000 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 + 5 | 600 | 30 | 600 | 3 | 3.0000000 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 + 1 | 700 | 40 | 700 | 4 | 4.0000000 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 + 1 | 800 | 40 | 800 | 4 | 4.0000000 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between current row and 2 following ); -- mvd 4->3; + vn | pn | to_char | cn +----+-----+-------------------+---- + 40 | 100 | .0000000 | 2 + 10 | 200 | .0000000 | 1 + 40 | 200 | .0000000 | 3 + 20 | 100 | .0000000 | 1 + 30 | 300 | .0000000 | 1 + 50 | 400 | .0000000 | 1 + 50 | 400 | .0000000 | 2 + 30 | 500 | 5.0000000 | 1 + 30 | 500 | 1.0000000 | 3 + 30 | 600 | 1.0000000 | 3 + 40 | 700 | 1.0000000 | 4 + 40 | 800 | 1.0000000 | 4 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc,ow_sale.vn desc rows between current row and 2 following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc); -- mvd 4->3; 2,4,6->5; 2,4,6->7; + qty | cn | to_char | vn | to_char | pn | to_char +------+----+-------------------+----+-------------------+-----+------------------- + 1100 | 2 | .0000000 | 40 | 1.0000000 | 100 | 1.0000000 + 1 | 1 | .0000000 | 10 | 1.0000000 | 200 | 1.0000000 + 1 | 3 | .0000000 | 40 | 1.0000000 | 200 | 1.0000000 + 1 | 1 | .0000000 | 20 | 1.0000000 | 100 | 1.0000000 + 1 | 1 | .0000000 | 30 | 1.0000000 | 300 | 1.0000000 + 1 | 1 | .0000000 | 50 | 1.0000000 | 400 | 1.0000000 + 1 | 2 | .0000000 | 50 | 1.0000000 | 400 | 1.0000000 + 12 | 1 | .0000000 | 30 | 1.0000000 | 500 | 1.0000000 + 12 | 3 | .0000000 | 30 | 1.0000000 | 500 | 1.0000000 + 12 | 3 | .0000000 | 30 | 1.0000000 | 600 | 1.0000000 + 1 | 4 | .0000000 | 40 | 1.0000000 | 700 | 1.0000000 + 1 | 4 | .0000000 | 40 | 1.0000000 | 800 | 1.0000000 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc,ow_sale.pn asc rows between current row and unbounded following ); -- mvd 1,5->4; + vn | qty | qty | to_char | pn +----+------+------+-------------------+----- + 40 | 1100 | 1100 | .0000000 | 100 + 10 | 1 | 1 | .0000000 | 200 + 40 | 1 | 1 | .0000000 | 200 + 20 | 1 | 1 | .0000000 | 100 + 30 | 1 | 1 | .0000000 | 300 + 50 | 1 | 1 | .0000000 | 400 + 50 | 1 | 1 | .0000000 | 400 + 30 | 12 | 12 | 4.0000000 | 500 + 30 | 12 | 12 | 4.0000000 | 500 + 30 | 12 | 12 | 4.0000000 | 600 + 40 | 1 | 1 | 4.0000000 | 700 + 40 | 1 | 1 | 4.0000000 | 800 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn-ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between current row and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc), +win3 as (partition by ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc); -- mvd 4->3; 6,4,1,2->5; 6,4,2->7; 6,4,2->8; 6,4,1,2->9; + qty | pn | to_char | vn | to_char | prc | to_char | to_char | to_char +------+-----+-------------------+----+-------------------+------+-------------------+-------------------+------------------- + 1100 | 100 | 10.0000000 | 40 | .0000000 | 2400 | .0000000 | .0000000 | .0000000 + 1 | 200 | 10.0000000 | 10 | .0000000 | 0 | .0000000 | .0000000 | .0000000 + 1 | 200 | 20.0000000 | 40 | .0000000 | 0 | .0000000 | .0000000 | .0000000 + 1 | 100 | 20.0000000 | 20 | .0000000 | 0 | .0000000 | .0000000 | .0000000 + 1 | 300 | 30.0000000 | 30 | .0000000 | 0 | .0000000 | .0000000 | .0000000 + 1 | 400 | 30.0000000 | 50 | .0000000 | 0 | .0000000 | .0000000 | .0000000 + 1 | 400 | 30.0000000 | 50 | .0000000 | 0 | .0000000 | 1.0000000 | 1.0000000 + 12 | 500 | 30.0000000 | 30 | .0000000 | 5 | .0000000 | .0000000 | .0000000 + 12 | 500 | 30.0000000 | 30 | .0000000 | 5 | .0000000 | .5000000 | 1.0000000 + 12 | 600 | 30.0000000 | 30 | .0000000 | 5 | .0000000 | 1.0000000 | .0000000 + 1 | 700 | 40.0000000 | 40 | .0000000 | 1 | .0000000 | .0000000 | .0000000 + 1 | 800 | 40.0000000 | 40 | .0000000 | 1 | .0000000 | 1.0000000 | .0000000 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between floor(ow_sale.cn*ow_sale.prc) following and 2 following ); -- mvd 6->5; + qty | prc | pn | qty | to_char | cn +------+------+-----+------+-------------------+---- + 1100 | 2400 | 100 | 1100 | .0000000 | 2 + 1 | 0 | 200 | 1 | .0000000 | 1 + 1 | 0 | 200 | 1 | .0000000 | 3 + 1 | 0 | 100 | 1 | .0000000 | 1 + 1 | 0 | 300 | 1 | .0000000 | 1 + 1 | 0 | 400 | 1 | .0000000 | 1 + 1 | 0 | 400 | 1 | .0000000 | 2 + 12 | 5 | 500 | 12 | .0000000 | 1 + 12 | 5 | 500 | 12 | .0000000 | 3 + 12 | 5 | 600 | 12 | .0000000 | 3 + 1 | 1 | 700 | 1 | .0000000 | 4 + 1 | 1 | 800 | 1 | .0000000 | 4 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.cn desc rows between 3 following and floor(ow_sale.qty*ow_sale.vn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.cn desc rows between 3 following and floor(ow_sale.qty*ow_sale.vn) following ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.cn asc); -- mvd 5,1->4; 5,1->6; 1->7; 9,5,10,2->8; 1->11; + pn | vn | vn | to_char | cn | to_char | to_char | to_char | prc | dt | to_char +-----+----+----+-------------------+----+-------------------+-------------------+-------------------+------+------------+------------------- + 800 | 40 | 40 | .0000000 | 4 | .0000000 | .0833333 | 1.0000000 | 1 | 1401-06-01 | 1.0000000 + 700 | 40 | 40 | .0000000 | 4 | .0000000 | .1666667 | 2.0000000 | 1 | 1401-06-01 | 2.0000000 + 600 | 30 | 30 | .0000000 | 3 | .0000000 | .2500000 | 2.0000000 | 5 | 1401-06-01 | 3.0000000 + 500 | 30 | 30 | 2800.0000000 | 1 | 2.0000000 | .4166667 | 1.0000000 | 5 | 1401-06-01 | 4.0000000 + 500 | 30 | 30 | 3200.0000000 | 3 | 1.0000000 | .4166667 | 3.0000000 | 5 | 1401-06-01 | 4.0000000 + 400 | 50 | 50 | 1800.0000000 | 2 | 3.0000000 | .5833333 | 2.0000000 | 0 | 1401-06-01 | 6.0000000 + 400 | 50 | 50 | 1500.0000000 | 1 | 4.0000000 | .5833333 | 1.0000000 | 0 | 1401-06-01 | 6.0000000 + 300 | 30 | 30 | 500.0000000 | 1 | 5.0000000 | .6666667 | 1.0000000 | 0 | 1401-05-02 | 8.0000000 + 200 | 40 | 40 | 400.0000000 | 3 | 7.0000000 | .8333333 | 1.0000000 | 0 | 1401-04-01 | 9.0000000 + 200 | 10 | 10 | 300.0000000 | 1 | 8.0000000 | .8333333 | 1.0000000 | 0 | 1401-03-01 | 9.0000000 + 100 | 40 | 40 | 100.0000000 | 2 | 9.0000000 | 1.0000000 | 1.0000000 | 2400 | 1401-01-01 | 11.0000000 + 100 | 20 | 20 | 500.0000000 | 1 | 6.0000000 | 1.0000000 | 1.0000000 | 0 | 1401-05-01 | 11.0000000 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between 1 following and unbounded following ); -- mvd 5->4; + cn | vn | vn | to_char | pn +----+----+----+-------------------+----- + 2 | 40 | 40 | .0000000 | 100 + 1 | 10 | 10 | .0000000 | 200 + 3 | 40 | 40 | .0000000 | 200 + 1 | 20 | 20 | .0000000 | 100 + 1 | 30 | 30 | .0000000 | 300 + 1 | 50 | 50 | .0000000 | 400 + 2 | 50 | 50 | 1.0000000 | 400 + 1 | 30 | 30 | 1.0000000 | 500 + 3 | 30 | 30 | 1.0000000 | 500 + 3 | 30 | 30 | 1.0000000 | 600 + 4 | 40 | 40 | 1.0000000 | 700 + 4 | 40 | 40 | .0000000 | 800 +(12 rows) + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn-ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc*ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between 0 following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc); -- mvd 2->5; 2->6; 4,3->7; + qty | pn | vn | dt | to_char | to_char | to_char +------+-----+----+------------+-------------------+-------------------+------------------- + 1100 | 100 | 40 | 1401-01-01 | 101.0000000 | .0000000 | .0000000 + 1 | 200 | 10 | 1401-03-01 | 101.0000000 | .0000000 | 1.0000000 + 1 | 200 | 40 | 1401-04-01 | 101.0000000 | .0000000 | 3.0000000 + 1 | 100 | 20 | 1401-05-01 | 101.0000000 | .0000000 | 1.0000000 + 1 | 300 | 30 | 1401-05-02 | 301.0000000 | .0000000 | 1.0000000 + 1 | 400 | 50 | 1401-06-01 | 401.0000000 | .0000000 | 1.0000000 + 1 | 400 | 50 | 1401-06-01 | 401.0000000 | .0000000 | 2.0000000 + 12 | 500 | 30 | 1401-06-01 | 512.0000000 | .0000000 | .0000000 + 12 | 500 | 30 | 1401-06-01 | 512.0000000 | .0000000 | .0000000 + 12 | 600 | 30 | 1401-06-01 | 612.0000000 | .0000000 | .0000000 + 1 | 700 | 40 | 1401-06-01 | 701.0000000 | .0000000 | .0000000 + 1 | 800 | 40 | 1401-06-01 | 801.0000000 | .0000000 | .0000000 +(12 rows) + +-- MIN() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.vn desc); -- mvd 1,3->2; + cn | to_char | vn +----+-------------------+---- + 1 | 1.0000000 | 10 + 1 | 1.0000000 | 20 + 1 | 1.0000000 | 30 + 1 | 1.0000000 | 30 + 1 | 1.0000000 | 50 + 3 | 4.0000000 | 30 + 3 | 4.0000000 | 30 + 3 | .0000000 | 40 + 2 | 550.0000000 | 40 + 2 | .0000000 | 50 + 4 | .0000000 | 40 + 4 | .0000000 | 40 +(12 rows) + +-- MIN() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt +, +TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.cn order by ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn asc), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 8,9,10,3,2->7; 8,9,10,3,2->11; 9->12; + qty | pn | vn | pn | vn | qty | to_char | prc | cn | dt | to_char | to_char +------+-----+----+-----+----+------+-------------------+------+----+------------+-------------------+------------------- + 1100 | 100 | 40 | 100 | 40 | 1100 | 2360.0000000 | 2400 | 2 | 1401-01-01 | 1.0000000 | .0000000 + 1 | 200 | 10 | 200 | 10 | 1 | -10.0000000 | 0 | 1 | 1401-03-01 | 1.0000000 | .0000000 + 1 | 200 | 40 | 200 | 40 | 1 | -40.0000000 | 0 | 3 | 1401-04-01 | 1.0000000 | .0000000 + 1 | 100 | 20 | 100 | 20 | 1 | -20.0000000 | 0 | 1 | 1401-05-01 | 1.0000000 | .0000000 + 1 | 300 | 30 | 300 | 30 | 1 | -30.0000000 | 0 | 1 | 1401-05-02 | 1.0000000 | .0000000 + 1 | 400 | 50 | 400 | 50 | 1 | -50.0000000 | 0 | 1 | 1401-06-01 | 1.0000000 | .0000000 + 1 | 400 | 50 | 400 | 50 | 1 | -50.0000000 | 0 | 2 | 1401-06-01 | 1.0000000 | .0000000 + 12 | 500 | 30 | 500 | 30 | 12 | -25.0000000 | 5 | 1 | 1401-06-01 | 1.0000000 | .0000000 + 12 | 500 | 30 | 500 | 30 | 12 | -25.0000000 | 5 | 3 | 1401-06-01 | .5000000 | .0000000 + 12 | 600 | 30 | 600 | 30 | 12 | -25.0000000 | 5 | 3 | 1401-06-01 | 1.0000000 | .0000000 + 1 | 700 | 40 | 700 | 40 | 1 | -39.0000000 | 1 | 4 | 1401-06-01 | .5000000 | .0000000 + 1 | 800 | 40 | 800 | 40 | 1 | -39.0000000 | 1 | 4 | 1401-06-01 | 1.0000000 | .0000000 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.prc order by ow_sale.pn asc range unbounded preceding ); -- mvd 3,4,5->2; + qty | to_char | prc | vn | pn +------+-------------------+------+----+----- + 1 | 700.0000000 | 1 | 40 | 700 + 1 | 700.0000000 | 1 | 40 | 800 + 1 | 200.0000000 | 0 | 10 | 200 + 1 | 100.0000000 | 0 | 20 | 100 + 1 | 300.0000000 | 0 | 30 | 300 + 1 | 200.0000000 | 0 | 40 | 200 + 1 | 400.0000000 | 0 | 50 | 400 + 1 | 400.0000000 | 0 | 50 | 400 + 12 | 500.0000000 | 5 | 30 | 500 + 12 | 500.0000000 | 5 | 30 | 500 + 12 | 500.0000000 | 5 | 30 | 600 + 1100 | 100.0000000 | 2400 | 40 | 100 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc order by ow_sale.cn asc range 1 preceding ); -- mvd 5,6->4; + pn | vn | qty | to_char | prc | cn +-----+----+------+-------------------+------+---- + 800 | 40 | 1 | 40.0000000 | 1 | 4 + 700 | 40 | 1 | 40.0000000 | 1 | 4 + 400 | 50 | 1 | 10.0000000 | 0 | 1 + 100 | 20 | 1 | 10.0000000 | 0 | 1 + 300 | 30 | 1 | 10.0000000 | 0 | 1 + 200 | 10 | 1 | 10.0000000 | 0 | 1 + 400 | 50 | 1 | 10.0000000 | 0 | 2 + 200 | 40 | 1 | 40.0000000 | 0 | 3 + 500 | 30 | 12 | 30.0000000 | 5 | 1 + 500 | 30 | 12 | 30.0000000 | 5 | 3 + 600 | 30 | 12 | 30.0000000 | 5 | 3 + 100 | 40 | 1100 | 40.0000000 | 2400 | 2 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn-ow_sale.qty)) OVER(partition by ow_sale.qty,ow_sale.dt order by ow_sale.pn asc range floor(ow_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn*ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt order by ow_sale.pn asc range floor(ow_sale.pn) preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (order by ow_sale.pn asc); -- mvd 4,5,1->3; 4,5,1->6; 1->7; 1->8; + pn | vn | to_char | dt | qty | to_char | to_char | to_char +-----+----+-------------------+------------+------+-------------------+-------------------+------------------- + 100 | 40 | 98.0000000 | 1401-01-01 | 1100 | 1.0000000 | .0000000 | 1.0000000 + 200 | 10 | 199.0000000 | 1401-03-01 | 1 | 1.0000000 | .0000000 | 2.0000000 + 200 | 40 | 197.0000000 | 1401-04-01 | 1 | 1.0000000 | .0000000 | 2.0000000 + 100 | 20 | 99.0000000 | 1401-05-01 | 1 | 1.0000000 | .0000000 | 1.0000000 + 300 | 30 | 299.0000000 | 1401-05-02 | 1 | 1.0000000 | .0000000 | 3.0000000 + 400 | 50 | 398.0000000 | 1401-06-01 | 1 | 2.0000000 | .0000000 | 4.0000000 + 400 | 50 | 398.0000000 | 1401-06-01 | 1 | 2.0000000 | .0000000 | 4.0000000 + 500 | 30 | 497.0000000 | 1401-06-01 | 12 | 2.0000000 | .0000000 | 5.0000000 + 500 | 30 | 497.0000000 | 1401-06-01 | 12 | 2.0000000 | .0000000 | 5.0000000 + 600 | 30 | 497.0000000 | 1401-06-01 | 12 | 3.0000000 | .0000000 | 6.0000000 + 700 | 40 | 398.0000000 | 1401-06-01 | 1 | 3.0000000 | .0000000 | 7.0000000 + 800 | 40 | 398.0000000 | 1401-06-01 | 1 | 4.0000000 | .0000000 | 8.0000000 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn asc range current row ); -- mvd 3,4->2; + pn | to_char | cn | vn +-----+-------------------+----+---- + 200 | 11.0000000 | 1 | 10 + 100 | 21.0000000 | 1 | 20 + 300 | 31.0000000 | 1 | 30 + 500 | 31.0000000 | 1 | 30 + 500 | 33.0000000 | 3 | 30 + 600 | 33.0000000 | 3 | 30 + 100 | 42.0000000 | 2 | 40 + 200 | 43.0000000 | 3 | 40 + 700 | 44.0000000 | 4 | 40 + 800 | 44.0000000 | 4 | 40 + 400 | 51.0000000 | 1 | 50 + 400 | 52.0000000 | 2 | 50 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(partition by ow_sale.pn order by ow_sale.cn desc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn desc range current row ), +win2 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.cn desc); -- mvd 1,4->3; 1,4->5; 1,4->6; 1,8,4->7; 1,10,8,4->9; + cn | qty | to_char | pn | to_char | to_char | to_char | vn | to_char | dt +----+------+-------------------+-----+-------------------+-------------------+-------------------+----+-------------------+------------ + 2 | 1100 | .0000000 | 100 | -1060.0000000 | 1100.0000000 | 1.0000000 | 40 | .0000000 | 1401-01-01 + 1 | 1 | .0000000 | 100 | 19.0000000 | 1.0000000 | 1.0000000 | 20 | .0000000 | 1401-05-01 + 3 | 1 | .0000000 | 200 | 39.0000000 | 1.0000000 | 1.0000000 | 40 | .0000000 | 1401-04-01 + 1 | 1 | .0000000 | 200 | 9.0000000 | 1.0000000 | 1.0000000 | 10 | .0000000 | 1401-03-01 + 3 | 12 | .0000000 | 600 | 18.0000000 | 12.0000000 | .5000000 | 30 | .0000000 | 1401-06-01 + 4 | 1 | .0000000 | 700 | 39.0000000 | 1.0000000 | 1.0000000 | 40 | .0000000 | 1401-06-01 + 1 | 1 | .0000000 | 300 | 29.0000000 | 1.0000000 | 1.0000000 | 30 | .0000000 | 1401-05-02 + 2 | 1 | .0000000 | 400 | 49.0000000 | 1.0000000 | 1.0000000 | 50 | .0000000 | 1401-06-01 + 1 | 1 | .0000000 | 400 | 49.0000000 | 1.0000000 | 1.0000000 | 50 | 1.0000000 | 1401-06-01 + 3 | 12 | .0000000 | 500 | 18.0000000 | 12.0000000 | 1.0000000 | 30 | .0000000 | 1401-06-01 + 1 | 12 | .0000000 | 500 | 18.0000000 | 12.0000000 | .5000000 | 30 | 1.0000000 | 1401-06-01 + 4 | 1 | .0000000 | 800 | 39.0000000 | 1.0000000 | .5000000 | 40 | .0000000 | 1401-06-01 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.pn*ow_sale.prc) preceding ); -- mvd 4,8,3,1->7; + pn | prc | vn | cn | vn | vn | to_char | dt +-----+------+----+----+----+----+-------------------+------------ + 200 | 0 | 10 | 1 | 10 | 10 | 1.0000000 | 1401-03-01 + 200 | 0 | 40 | 3 | 40 | 40 | 1.0000000 | 1401-04-01 + 100 | 0 | 20 | 1 | 20 | 20 | 1.0000000 | 1401-05-01 + 400 | 0 | 50 | 2 | 50 | 50 | 1.0000000 | 1401-06-01 + 600 | 5 | 30 | 3 | 30 | 30 | .0000000 | 1401-06-01 + 800 | 1 | 40 | 4 | 40 | 40 | .0000000 | 1401-06-01 + 100 | 2400 | 40 | 2 | 40 | 40 | .0000000 | 1401-01-01 + 300 | 0 | 30 | 1 | 30 | 30 | 1.0000000 | 1401-05-02 + 400 | 0 | 50 | 1 | 50 | 50 | 1.0000000 | 1401-06-01 + 500 | 5 | 30 | 1 | 30 | 30 | .0000000 | 1401-06-01 + 500 | 5 | 30 | 3 | 30 | 30 | .0000000 | 1401-06-01 + 700 | 1 | 40 | 4 | 40 | 40 | .0000000 | 1401-06-01 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.vn asc range between unbounded preceding and 3 preceding ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.vn desc); -- mvd 6,7->5; 1->8; 1->9; 1->10; 12,7,13->11; 1->14; + cn | qty | qty | qty | to_char | dt | vn | to_char | to_char | to_char | to_char | prc | pn | to_char +----+------+------+------+-------------------+------------+----+-------------------+-------------------+-------------------+-------------------+------+-----+------------------- + 4 | 1 | 1 | 1 | .0000000 | 1401-06-01 | 40 | 1.0000000 | .0000000 | 40.0000000 | 1.0000000 | 1 | 800 | .1666667 + 4 | 1 | 1 | 1 | .0000000 | 1401-06-01 | 40 | 1.0000000 | .0000000 | 40.0000000 | 1.0000000 | 1 | 700 | .1666667 + 3 | 12 | 12 | 12 | .0000000 | 1401-06-01 | 30 | 2.0000000 | .1818182 | 40.0000000 | 2.0000000 | 5 | 500 | .4166667 + 3 | 12 | 12 | 12 | .0000000 | 1401-06-01 | 30 | 2.0000000 | .1818182 | 40.0000000 | 1.0000000 | 5 | 600 | .4166667 + 3 | 1 | 1 | 1 | .0000000 | 1401-04-01 | 40 | 2.0000000 | .1818182 | 40.0000000 | 1.0000000 | 0 | 200 | .4166667 + 2 | 1100 | 1100 | 1100 | .0000000 | 1401-01-01 | 40 | 3.0000000 | .4545455 | 50.0000000 | 1.0000000 | 2400 | 100 | .5833333 + 2 | 1 | 1 | 1 | .0000000 | 1401-06-01 | 50 | 3.0000000 | .4545455 | 50.0000000 | 2.0000000 | 0 | 400 | .5833333 + 1 | 12 | 12 | 12 | .0000000 | 1401-06-01 | 30 | 4.0000000 | .6363636 | 50.0000000 | 1.0000000 | 5 | 500 | 1.0000000 + 1 | 1 | 1 | 1 | .0000000 | 1401-05-02 | 30 | 4.0000000 | .6363636 | 50.0000000 | 1.0000000 | 0 | 300 | 1.0000000 + 1 | 1 | 1 | 1 | .0000000 | 1401-06-01 | 50 | 4.0000000 | .6363636 | 50.0000000 | 1.0000000 | 0 | 400 | 1.0000000 + 1 | 1 | 1 | 1 | .0000000 | 1401-03-01 | 10 | 4.0000000 | .6363636 | 50.0000000 | 2.0000000 | 0 | 200 | 1.0000000 + 1 | 1 | 1 | 1 | .0000000 | 1401-05-01 | 20 | 4.0000000 | .6363636 | 50.0000000 | 1.0000000 | 0 | 100 | 1.0000000 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.pn desc range between unbounded preceding and current row ); -- mvd 4,7->6; + vn | qty | dt | cn | qty | to_char | pn +----+------+------------+----+------+-------------------+----- + 30 | 12 | 1401-06-01 | 1 | 12 | 1.0000000 | 500 + 50 | 1 | 1401-06-01 | 1 | 1 | 1.0000000 | 400 + 30 | 1 | 1401-05-02 | 1 | 1 | 1.0000000 | 300 + 10 | 1 | 1401-03-01 | 1 | 1 | 1.0000000 | 200 + 20 | 1 | 1401-05-01 | 1 | 1 | 1.0000000 | 100 + 30 | 12 | 1401-06-01 | 3 | 12 | 3.0000000 | 600 + 30 | 12 | 1401-06-01 | 3 | 12 | 3.0000000 | 500 + 40 | 1 | 1401-04-01 | 3 | 1 | 3.0000000 | 200 + 50 | 1 | 1401-06-01 | 2 | 1 | 2.0000000 | 400 + 40 | 1100 | 1401-01-01 | 2 | 1100 | 2.0000000 | 100 + 40 | 1 | 1401-06-01 | 4 | 1 | 4.0000000 | 800 + 40 | 1 | 1401-06-01 | 4 | 1 | 4.0000000 | 700 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.pn order by ow_sale.vn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.pn asc); -- mvd 4,5,6->3; 6->7; + prc | qty | to_char | cn | vn | pn | to_char +------+------+-------------------+----+----+-----+------------------- + 0 | 1 | -99.0000000 | 1 | 20 | 100 | .0000000 + 2400 | 1100 | -98.0000000 | 2 | 40 | 100 | .0000000 + 0 | 1 | -199.0000000 | 1 | 10 | 200 | .1818182 + 0 | 1 | -197.0000000 | 3 | 40 | 200 | .1818182 + 0 | 1 | -299.0000000 | 1 | 30 | 300 | .3636364 + 0 | 1 | -399.0000000 | 1 | 50 | 400 | .4545455 + 0 | 1 | -398.0000000 | 2 | 50 | 400 | .4545455 + 5 | 12 | -499.0000000 | 1 | 30 | 500 | .6363636 + 5 | 12 | -497.0000000 | 3 | 30 | 500 | .6363636 + 5 | 12 | -597.0000000 | 3 | 30 | 600 | .8181818 + 1 | 1 | -696.0000000 | 4 | 40 | 700 | .9090909 + 1 | 1 | -796.0000000 | 4 | 40 | 800 | 1.0000000 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.pn asc range between unbounded preceding and floor(ow_sale.pn) following ); -- mvd 1,2->4; + vn | pn | cn | to_char +----+-----+----+------------------- + 10 | 200 | 1 | 2000.0000000 + 20 | 100 | 1 | 2000.0000000 + 30 | 600 | 3 | 18000.0000000 + 40 | 100 | 2 | 4000.0000000 + 40 | 200 | 3 | 8000.0000000 + 40 | 700 | 4 | 28000.0000000 + 30 | 300 | 1 | 9000.0000000 + 30 | 500 | 1 | 15000.0000000 + 30 | 500 | 3 | 15000.0000000 + 40 | 800 | 4 | 32000.0000000 + 50 | 400 | 2 | 20000.0000000 + 50 | 400 | 1 | 20000.0000000 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.pn order by ow_sale.cn asc range between unbounded preceding and 2 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn asc range between unbounded preceding and 2 following ); -- mvd 4,2->3; 4,2->5; + qty | pn | to_char | cn | to_char +------+-----+-------------------+----+------------------- + 1 | 300 | 300.0000000 | 1 | .0000000 + 1 | 400 | 400.0000000 | 1 | .0000000 + 1 | 400 | 400.0000000 | 2 | .0000000 + 12 | 500 | 500.0000000 | 1 | 5.0000000 + 12 | 500 | 500.0000000 | 3 | 5.0000000 + 1 | 800 | 800.0000000 | 4 | 1.0000000 + 1 | 100 | 100.0000000 | 1 | 2400.0000000 + 1100 | 100 | 100.0000000 | 2 | 2400.0000000 + 1 | 200 | 200.0000000 | 1 | .0000000 + 1 | 200 | 200.0000000 | 3 | .0000000 + 12 | 600 | 600.0000000 | 3 | 5.0000000 + 1 | 700 | 700.0000000 | 4 | 1.0000000 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn desc range between unbounded preceding and unbounded following ); -- mvd 5,1->4; + pn | pn | pn | to_char | cn +-----+-----+-----+-------------------+---- + 300 | 300 | 300 | 300.0000000 | 1 + 400 | 400 | 400 | 400.0000000 | 2 + 400 | 400 | 400 | 400.0000000 | 1 + 500 | 500 | 500 | 500.0000000 | 3 + 500 | 500 | 500 | 500.0000000 | 1 + 800 | 800 | 800 | 800.0000000 | 4 + 100 | 100 | 100 | 100.0000000 | 2 + 100 | 100 | 100 | 100.0000000 | 1 + 200 | 200 | 200 | 200.0000000 | 3 + 200 | 200 | 200 | 200.0000000 | 1 + 600 | 600 | 600 | 600.0000000 | 3 + 700 | 700 | 700 | 700.0000000 | 4 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.pn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.cn desc); -- mvd 5,6->4; 2,6->7; + prc | cn | vn | to_char | dt | pn | to_char +------+----+----+-------------------+------------+-----+------------------- + 2400 | 2 | 40 | 40.0000000 | 1401-01-01 | 100 | .0000000 + 0 | 3 | 40 | 40.0000000 | 1401-04-01 | 200 | .0000000 + 0 | 1 | 20 | 20.0000000 | 1401-05-01 | 100 | .0000000 + 0 | 1 | 10 | 10.0000000 | 1401-03-01 | 200 | .0000000 + 0 | 1 | 30 | 30.0000000 | 1401-05-02 | 300 | .0000000 + 1 | 4 | 40 | 30.0000000 | 1401-06-01 | 800 | .0000000 + 1 | 4 | 40 | 30.0000000 | 1401-06-01 | 700 | .0000000 + 5 | 3 | 30 | 30.0000000 | 1401-06-01 | 600 | .0000000 + 5 | 3 | 30 | 30.0000000 | 1401-06-01 | 500 | .0000000 + 5 | 1 | 30 | 30.0000000 | 1401-06-01 | 500 | .0000000 + 0 | 1 | 50 | 30.0000000 | 1401-06-01 | 400 | .0000000 + 0 | 2 | 50 | 30.0000000 | 1401-06-01 | 400 | .0000000 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn asc range between floor(ow_sale.prc-ow_sale.prc) preceding and 4 preceding ); -- mvd 1,3->2; + cn | to_char | pn +----+-------------------+----- + 1 | .0000000 | 300 + 1 | .0000000 | 400 + 2 | .0000000 | 400 + 1 | .0000000 | 500 + 3 | .0000000 | 500 + 4 | .0000000 | 800 + 1 | .0000000 | 100 + 2 | .0000000 | 100 + 1 | .0000000 | 200 + 3 | .0000000 | 200 + 3 | .0000000 | 600 + 4 | .0000000 | 700 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.vn desc range between 3 preceding and current row ); -- mvd 2,8,3->7; + cn | vn | pn | cn | vn | vn | to_char | qty +----+----+-----+----+----+----+-------------------+------ + 1 | 20 | 100 | 1 | 20 | 20 | 40.0000000 | 1 + 1 | 10 | 200 | 1 | 10 | 10 | 20.0000000 | 1 + 3 | 40 | 200 | 3 | 40 | 40 | 80.0000000 | 1 + 1 | 30 | 500 | 1 | 30 | 30 | 60.0000000 | 12 + 3 | 30 | 500 | 3 | 30 | 30 | 60.0000000 | 12 + 4 | 40 | 700 | 4 | 40 | 40 | 80.0000000 | 1 + 2 | 40 | 100 | 2 | 40 | 40 | 80.0000000 | 1100 + 1 | 30 | 300 | 1 | 30 | 30 | 60.0000000 | 1 + 2 | 50 | 400 | 2 | 50 | 50 | 100.0000000 | 1 + 1 | 50 | 400 | 1 | 50 | 50 | 100.0000000 | 1 + 3 | 30 | 600 | 3 | 30 | 30 | 60.0000000 | 12 + 4 | 40 | 800 | 4 | 40 | 40 | 80.0000000 | 1 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc*ow_sale.cn)) OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc range between floor(ow_sale.cn) preceding and current row ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.prc order by ow_sale.vn asc); -- mvd 1,3,6,7->5; 1,3,6,7->8; 1->9; 1->10; 2,1,3->11; + cn | prc | vn | vn | to_char | qty | pn | to_char | to_char | to_char | to_char +----+------+----+----+-------------------+------+-----+-------------------+-------------------+-------------------+------------------- + 4 | 1 | 40 | 40 | 1.0000000 | 1 | 700 | 1.0000000 | .1666667 | 4.0000000 | 1.0000000 + 4 | 1 | 40 | 40 | 1.0000000 | 1 | 800 | 1.0000000 | .1666667 | 4.0000000 | 2.0000000 + 3 | 0 | 40 | 40 | .0000000 | 1 | 200 | .0000000 | .4166667 | .0000000 | 1.0000000 + 3 | 5 | 30 | 30 | 5.0000000 | 12 | 500 | 5.0000000 | .4166667 | .0000000 | 2.0000000 + 3 | 5 | 30 | 30 | 5.0000000 | 12 | 600 | 5.0000000 | .4166667 | .0000000 | 1.0000000 + 2 | 0 | 50 | 50 | .0000000 | 1 | 400 | .0000000 | .5833333 | .0000000 | 1.0000000 + 2 | 2400 | 40 | 40 | 2400.0000000 | 1100 | 100 | 2400.0000000 | .5833333 | .0000000 | 1.0000000 + 1 | 5 | 30 | 30 | 5.0000000 | 12 | 500 | 5.0000000 | 1.0000000 | .0000000 | 1.0000000 + 1 | 0 | 20 | 20 | .0000000 | 1 | 100 | .0000000 | 1.0000000 | .0000000 | 1.0000000 + 1 | 0 | 10 | 10 | .0000000 | 1 | 200 | .0000000 | 1.0000000 | .0000000 | 1.0000000 + 1 | 0 | 30 | 30 | .0000000 | 1 | 300 | .0000000 | 1.0000000 | .0000000 | 1.0000000 + 1 | 0 | 50 | 50 | .0000000 | 1 | 400 | .0000000 | 1.0000000 | .0000000 | 1.0000000 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.vn asc range between 0 preceding and 4 following ); -- mvd 3,4->2; + qty | to_char | cn | vn +------+-------------------+----+---- + 1100 | 2.0000000 | 2 | 40 + 1 | 2.0000000 | 2 | 50 + 1 | 4.0000000 | 4 | 40 + 1 | 4.0000000 | 4 | 40 + 1 | 1.0000000 | 1 | 10 + 1 | 1.0000000 | 1 | 20 + 1 | 1.0000000 | 1 | 30 + 12 | 1.0000000 | 1 | 30 + 1 | 1.0000000 | 1 | 50 + 12 | 3.0000000 | 3 | 30 + 12 | 3.0000000 | 3 | 30 + 1 | 3.0000000 | 3 | 40 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.prc)) OVER(partition by ow_sale.vn order by ow_sale.cn desc range between floor(ow_sale.pn) preceding and floor(ow_sale.vn/ow_sale.vn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn desc range between floor(ow_sale.pn) preceding and floor(ow_sale.vn/ow_sale.vn) following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.vn asc); -- mvd 3,4->2; 3,4->5; 4->6; 3,4->7; + pn | to_char | cn | vn | to_char | to_char | to_char +-----+-------------------+----+----+-------------------+-------------------+------------------- + 200 | 10.0000000 | 1 | 10 | 10.0000000 | 1.0000000 | 1.0000000 + 100 | 20.0000000 | 1 | 20 | 20.0000000 | 2.0000000 | 2.0000000 + 600 | 30.0000000 | 3 | 30 | 35.0000000 | 3.0000000 | 2.0000000 + 500 | 30.0000000 | 3 | 30 | 35.0000000 | 3.0000000 | 1.0000000 + 300 | 30.0000000 | 1 | 30 | 30.0000000 | 3.0000000 | 3.0000000 + 500 | 30.0000000 | 1 | 30 | 30.0000000 | 3.0000000 | 4.0000000 + 800 | 40.0000000 | 4 | 40 | 40.0000000 | 4.0000000 | 1.0000000 + 700 | 40.0000000 | 4 | 40 | 40.0000000 | 4.0000000 | 2.0000000 + 200 | 40.0000000 | 3 | 40 | 40.0000000 | 4.0000000 | 3.0000000 + 100 | 40.0000000 | 2 | 40 | 40.0000000 | 4.0000000 | 1.0000000 + 400 | 50.0000000 | 2 | 50 | 50.0000000 | 5.0000000 | 2.0000000 + 400 | 50.0000000 | 1 | 50 | 50.0000000 | 5.0000000 | 5.0000000 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.cn desc range between floor(ow_sale.cn) preceding and unbounded following ); -- mvd 3,1,4->2; + qty | to_char | cn | pn +------+-------------------+----+----- + 1 | 100.0000000 | 1 | 100 + 1 | 200.0000000 | 3 | 200 + 1 | 200.0000000 | 1 | 200 + 12 | 505.0000000 | 3 | 500 + 12 | 505.0000000 | 1 | 500 + 1 | 701.0000000 | 4 | 700 + 1100 | 2500.0000000 | 2 | 100 + 1 | 300.0000000 | 1 | 300 + 1 | 400.0000000 | 2 | 400 + 1 | 400.0000000 | 1 | 400 + 12 | 605.0000000 | 3 | 600 + 1 | 801.0000000 | 4 | 800 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn+ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn order by ow_sale.cn asc range between 2 preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 1,5,6->4; 5->7; 5->8; 5->9; 1,5,6->10; + prc | qty | qty | to_char | cn | vn | to_char | to_char | to_char | to_char +------+------+------+-------------------+----+----+-------------------+-------------------+-------------------+------------------- + 2400 | 1100 | 1100 | 44000.0000000 | 2 | 40 | .0000000 | 1.0000000 | .0833333 | 2440.0000000 + 0 | 1 | 1 | 10.0000000 | 1 | 10 | .0000000 | 2.0000000 | .1666667 | 10.0000000 + 0 | 1 | 1 | 40.0000000 | 3 | 40 | .0000000 | 3.0000000 | .2500000 | 40.0000000 + 0 | 1 | 1 | 20.0000000 | 1 | 20 | .0000000 | 4.0000000 | .3333333 | 20.0000000 + 0 | 1 | 1 | 30.0000000 | 1 | 30 | .0000000 | 5.0000000 | .4166667 | 30.0000000 + 0 | 1 | 1 | 50.0000000 | 1 | 50 | .0000000 | 6.0000000 | .5000000 | 50.0000000 + 0 | 1 | 1 | 50.0000000 | 2 | 50 | .0000000 | 7.0000000 | .5833333 | 50.0000000 + 5 | 12 | 12 | 360.0000000 | 1 | 30 | .0000000 | 8.0000000 | .6666667 | 35.0000000 + 5 | 12 | 12 | 360.0000000 | 3 | 30 | .0000000 | 9.0000000 | .7500000 | 35.0000000 + 5 | 12 | 12 | 360.0000000 | 3 | 30 | .0000000 | 10.0000000 | .8333333 | 35.0000000 + 1 | 1 | 1 | 40.0000000 | 4 | 40 | .0000000 | 11.0000000 | .9166667 | 41.0000000 + 1 | 1 | 1 | 40.0000000 | 4 | 40 | .0000000 | 12.0000000 | 1.0000000 | 41.0000000 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.cn order by ow_sale.pn desc range between current row and current row ); -- mvd 7,8,1,9,4->6; + dt | qty | qty | pn | qty | to_char | prc | cn | vn +------------+------+------+-----+------+-------------------+------+----+---- + 1401-04-01 | 1 | 1 | 200 | 1 | .0000000 | 0 | 3 | 40 + 1401-05-01 | 1 | 1 | 100 | 1 | .0000000 | 0 | 1 | 20 + 1401-06-01 | 1 | 1 | 400 | 1 | .0000000 | 0 | 2 | 50 + 1401-01-01 | 1100 | 1100 | 100 | 1100 | 2400.0000000 | 2400 | 2 | 40 + 1401-03-01 | 1 | 1 | 200 | 1 | .0000000 | 0 | 1 | 10 + 1401-05-02 | 1 | 1 | 300 | 1 | .0000000 | 0 | 1 | 30 + 1401-06-01 | 12 | 12 | 500 | 12 | 5.0000000 | 5 | 1 | 30 + 1401-06-01 | 12 | 12 | 600 | 12 | 5.0000000 | 5 | 3 | 30 + 1401-06-01 | 12 | 12 | 500 | 12 | 5.0000000 | 5 | 3 | 30 + 1401-06-01 | 1 | 1 | 800 | 1 | 1.0000000 | 1 | 4 | 40 + 1401-06-01 | 1 | 1 | 700 | 1 | 1.0000000 | 1 | 4 | 40 + 1401-06-01 | 1 | 1 | 400 | 1 | .0000000 | 0 | 1 | 50 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn-ow_sale.pn) as int),cast (floor(ow_sale.prc/ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.pn asc range between current row and current row ), +win2 as (partition by ow_sale.pn order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 1,5->7; 3,5->8; 4->9; 3,5->10; 3,5->11; + dt | dt | cn | vn | pn | vn | to_char | to_char | to_char | to_char | to_char +------------+------------+----+----+-----+----+-------------------+-------------------+-------------------+-------------------+------------------- + 1401-01-01 | 1401-01-01 | 2 | 40 | 100 | 40 | .0000000 | 2.0000000 | .0000000 | 1.0000000 | 2.0000000 + 1401-03-01 | 1401-03-01 | 1 | 10 | 200 | 10 | .0000000 | 1.0000000 | -199.0000000 | .5000000 | 1.0000000 + 1401-04-01 | 1401-04-01 | 3 | 40 | 200 | 40 | .0000000 | 2.0000000 | -197.0000000 | 1.0000000 | 2.0000000 + 1401-05-01 | 1401-05-01 | 1 | 20 | 100 | 20 | .0000000 | 1.0000000 | -99.0000000 | .5000000 | 1.0000000 + 1401-05-02 | 1401-05-02 | 1 | 30 | 300 | 30 | .0000000 | 1.0000000 | -299.0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 1401-06-01 | 1 | 50 | 400 | 50 | .0000000 | 1.0000000 | -399.0000000 | .5000000 | 1.0000000 + 1401-06-01 | 1401-06-01 | 2 | 50 | 400 | 50 | .0000000 | 2.0000000 | -398.0000000 | 1.0000000 | 2.0000000 + 1401-06-01 | 1401-06-01 | 1 | 30 | 500 | 30 | .0000000 | 1.0000000 | -499.0000000 | .5000000 | 1.0000000 + 1401-06-01 | 1401-06-01 | 3 | 30 | 500 | 30 | .0000000 | 2.0000000 | -497.0000000 | 1.0000000 | 2.0000000 + 1401-06-01 | 1401-06-01 | 3 | 30 | 600 | 30 | .0000000 | 1.0000000 | -597.0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 1401-06-01 | 4 | 40 | 700 | 40 | .0000000 | 1.0000000 | -696.0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 1401-06-01 | 4 | 40 | 800 | 40 | .0000000 | 1.0000000 | -796.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.cn desc range between current row and floor(ow_sale.cn) following ); -- mvd 5,3->4; + qty | qty | pn | to_char | cn +------+------+-----+-------------------+---- + 1 | 1 | 300 | .0000000 | 1 + 1 | 1 | 400 | .0000000 | 2 + 1 | 1 | 400 | .0000000 | 1 + 12 | 12 | 500 | 5.0000000 | 3 + 12 | 12 | 500 | 5.0000000 | 1 + 1 | 1 | 800 | 1.0000000 | 4 + 1100 | 1100 | 100 | .0000000 | 2 + 1 | 1 | 100 | .0000000 | 1 + 1 | 1 | 200 | .0000000 | 3 + 1 | 1 | 200 | .0000000 | 1 + 12 | 12 | 600 | 5.0000000 | 3 + 1 | 1 | 700 | 1.0000000 | 4 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.prc)) OVER(partition by ow_sale.prc,ow_sale.vn,ow_sale.qty,ow_sale.pn order by ow_sale.pn asc range between current row and floor(ow_sale.pn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.qty,ow_sale.pn order by ow_sale.pn asc range between current row and floor(ow_sale.pn) following ), +win2 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.cn desc); -- mvd 1,6,7,2->5; 9,6,7->8; 1,6,7,2->10; + prc | pn | pn | prc | to_char | qty | vn | to_char | cn | to_char +------+-----+-----+------+-------------------+------+----+-------------------+----+------------------- + 0 | 200 | 200 | 0 | -9.0000000 | 1 | 10 | 1.0000000 | 1 | 1.0000000 + 0 | 100 | 100 | 0 | -19.0000000 | 1 | 20 | 1.0000000 | 1 | 1.0000000 + 0 | 300 | 300 | 0 | -29.0000000 | 1 | 30 | 1.0000000 | 1 | 1.0000000 + 1 | 800 | 800 | 1 | -36.0000000 | 1 | 40 | 1.0000000 | 4 | 1.0000000 + 1 | 700 | 700 | 1 | -36.0000000 | 1 | 40 | 1.0000000 | 4 | 1.0000000 + 0 | 200 | 200 | 0 | -37.0000000 | 1 | 40 | 3.0000000 | 3 | 1.0000000 + 0 | 400 | 400 | 0 | -49.0000000 | 1 | 50 | 1.0000000 | 2 | 2.0000000 + 0 | 400 | 400 | 0 | -49.0000000 | 1 | 50 | 2.0000000 | 1 | 2.0000000 + 5 | 500 | 500 | 5 | -29.0000000 | 12 | 30 | 1.0000000 | 3 | 2.0000000 + 5 | 600 | 600 | 5 | -27.0000000 | 12 | 30 | 1.0000000 | 3 | 1.0000000 + 5 | 500 | 500 | 5 | -29.0000000 | 12 | 30 | 3.0000000 | 1 | 2.0000000 + 2400 | 100 | 100 | 2400 | -38.0000000 | 1100 | 40 | 1.0000000 | 2 | 1.0000000 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.pn desc range between current row and unbounded following ); -- mvd 6,7->5; + qty | qty | prc | vn | to_char | dt | pn +------+------+------+----+-------------------+------------+----- + 1 | 1 | 0 | 10 | .0000000 | 1401-03-01 | 200 + 12 | 12 | 5 | 30 | .0000000 | 1401-06-01 | 600 + 1 | 1 | 1 | 40 | .0000000 | 1401-06-01 | 700 + 1100 | 1100 | 2400 | 40 | .0000000 | 1401-01-01 | 100 + 1 | 1 | 0 | 40 | .0000000 | 1401-04-01 | 200 + 1 | 1 | 0 | 20 | .0000000 | 1401-05-01 | 100 + 1 | 1 | 0 | 30 | .0000000 | 1401-05-02 | 300 + 1 | 1 | 0 | 50 | .0000000 | 1401-06-01 | 400 + 1 | 1 | 0 | 50 | .0000000 | 1401-06-01 | 400 + 12 | 12 | 5 | 30 | .0000000 | 1401-06-01 | 500 + 12 | 12 | 5 | 30 | .0000000 | 1401-06-01 | 500 + 1 | 1 | 1 | 40 | .0000000 | 1401-06-01 | 800 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty*ow_sale.cn) as int),cast (floor(ow_sale.vn*ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.pn desc range between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (order by ow_sale.vn asc); -- mvd 2,4->3; 4->5; 7->6; + dt | cn | to_char | pn | to_char | to_char | vn +------------+----+-------------------+-----+-------------------+-------------------+---- + 1401-03-01 | 1 | 1.0000000 | 200 | 1.0000000 | 1.0000000 | 10 + 1401-05-01 | 1 | 1.0000000 | 100 | 1.0000000 | 2.0000000 | 20 + 1401-06-01 | 3 | 3.0000000 | 500 | .0000000 | 3.0000000 | 30 + 1401-06-01 | 1 | 1.0000000 | 500 | .0000000 | 4.0000000 | 30 + 1401-05-02 | 1 | 1.0000000 | 300 | 1.0000000 | 5.0000000 | 30 + 1401-06-01 | 3 | 3.0000000 | 600 | .0000000 | 6.0000000 | 30 + 1401-01-01 | 2 | 2.0000000 | 100 | .0000000 | 7.0000000 | 40 + 1401-04-01 | 3 | 3.0000000 | 200 | 3.0000000 | 8.0000000 | 40 + 1401-06-01 | 4 | 4.0000000 | 700 | .0000000 | 9.0000000 | 40 + 1401-06-01 | 4 | 4.0000000 | 800 | .0000000 | 10.0000000 | 40 + 1401-06-01 | 2 | 2.0000000 | 400 | 2.0000000 | 11.0000000 | 50 + 1401-06-01 | 1 | 1.0000000 | 400 | 1.0000000 | 12.0000000 | 50 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.vn asc range between floor(ow_sale.pn) following and floor(ow_sale.prc) following ); -- mvd 2,7->6; + qty | cn | dt | dt | pn | to_char | vn +------+----+------------+------------+-----+-------------------+---- + 1 | 1 | 1401-03-01 | 1401-03-01 | 200 | .0000000 | 10 + 1 | 1 | 1401-05-01 | 1401-05-01 | 100 | .0000000 | 20 + 1 | 1 | 1401-05-02 | 1401-05-02 | 300 | .0000000 | 30 + 12 | 1 | 1401-06-01 | 1401-06-01 | 500 | .0000000 | 30 + 1 | 1 | 1401-06-01 | 1401-06-01 | 400 | .0000000 | 50 + 12 | 3 | 1401-06-01 | 1401-06-01 | 500 | .0000000 | 30 + 12 | 3 | 1401-06-01 | 1401-06-01 | 600 | .0000000 | 30 + 1 | 3 | 1401-04-01 | 1401-04-01 | 200 | .0000000 | 40 + 1100 | 2 | 1401-01-01 | 1401-01-01 | 100 | .0000000 | 40 + 1 | 2 | 1401-06-01 | 1401-06-01 | 400 | .0000000 | 50 + 1 | 4 | 1401-06-01 | 1401-06-01 | 800 | .0000000 | 40 + 1 | 4 | 1401-06-01 | 1401-06-01 | 700 | .0000000 | 40 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty-ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.cn desc range between 2 following and floor(ow_sale.vn+ow_sale.prc) following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 4,2->3; 4->5; + dt | pn | to_char | cn | to_char +------------+-----+-------------------+----+------------------- + 1401-01-01 | 100 | .0000000 | 2 | -39.0000000 + 1401-03-01 | 200 | .0000000 | 1 | -39.0000000 + 1401-04-01 | 200 | 11.0000000 | 3 | -49.0000000 + 1401-05-01 | 100 | .0000000 | 1 | -29.0000000 + 1401-05-02 | 300 | .0000000 | 1 | -49.0000000 + 1401-06-01 | 400 | .0000000 | 1 | -49.0000000 + 1401-06-01 | 400 | .0000000 | 2 | -18.0000000 + 1401-06-01 | 500 | .0000000 | 1 | -18.0000000 + 1401-06-01 | 500 | 42.0000000 | 3 | -39.0000000 + 1401-06-01 | 600 | .0000000 | 3 | .0000000 + 1401-06-01 | 700 | .0000000 | 4 | .0000000 + 1401-06-01 | 800 | .0000000 | 4 | .0000000 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.cn asc range between floor(ow_sale.vn) following and unbounded following ); -- mvd 3,4,1->2; + vn | to_char | cn | qty +----+-------------------+----+------ + 30 | .0000000 | 1 | 12 + 30 | .0000000 | 3 | 12 + 30 | .0000000 | 3 | 12 + 40 | .0000000 | 2 | 1100 + 10 | .0000000 | 1 | 1 + 20 | .0000000 | 1 | 1 + 30 | .0000000 | 1 | 1 + 40 | .0000000 | 3 | 1 + 40 | .0000000 | 4 | 1 + 40 | .0000000 | 4 | 1 + 50 | .0000000 | 1 | 1 + 50 | .0000000 | 2 | 1 +(12 rows) + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn desc range between 4 following and unbounded following ), +win2 as (order by ow_sale.cn desc); -- mvd 2->4; 1->5; 1->6; 1->7; + cn | vn | dt | to_char | to_char | to_char | to_char +----+----+------------+-------------------+-------------------+-------------------+------------------- + 4 | 40 | 1401-06-01 | .0000000 | 1.0000000 | 1.0000000 | .0000000 + 4 | 40 | 1401-06-01 | .0000000 | 2.0000000 | 1.0000000 | .0000000 + 3 | 30 | 1401-06-01 | .0000000 | 3.0000000 | 2.0000000 | .1818182 + 3 | 30 | 1401-06-01 | .0000000 | 4.0000000 | 2.0000000 | .1818182 + 3 | 40 | 1401-04-01 | .0000000 | 5.0000000 | 2.0000000 | .1818182 + 2 | 50 | 1401-06-01 | .0000000 | 6.0000000 | 3.0000000 | .4545455 + 2 | 40 | 1401-01-01 | .0000000 | 7.0000000 | 3.0000000 | .4545455 + 1 | 30 | 1401-06-01 | .0000000 | 8.0000000 | 4.0000000 | .6363636 + 1 | 30 | 1401-05-02 | .0000000 | 9.0000000 | 4.0000000 | .6363636 + 1 | 20 | 1401-05-01 | .0000000 | 10.0000000 | 4.0000000 | .6363636 + 1 | 50 | 1401-06-01 | .0000000 | 11.0000000 | 4.0000000 | .6363636 + 1 | 10 | 1401-03-01 | .0000000 | 12.0000000 | 4.0000000 | .6363636 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.cn desc rows unbounded preceding ); -- mvd 5,6->4; + qty | vn | qty | to_char | cn | pn +------+----+------+-------------------+----+----- + 1 | 10 | 1 | 200.0000000 | 1 | 200 + 1 | 20 | 1 | 100.0000000 | 1 | 100 + 1 | 30 | 1 | 100.0000000 | 1 | 300 + 1 | 50 | 1 | 100.0000000 | 1 | 400 + 12 | 30 | 12 | 100.0000000 | 1 | 500 + 1 | 40 | 1 | 66.0000000 | 3 | 200 + 12 | 30 | 12 | 66.0000000 | 3 | 500 + 12 | 30 | 12 | 66.0000000 | 3 | 600 + 1100 | 40 | 1100 | 50.0000000 | 2 | 100 + 1 | 50 | 1 | 50.0000000 | 2 | 400 + 1 | 40 | 1 | 175.0000000 | 4 | 700 + 1 | 40 | 1 | 175.0000000 | 4 | 800 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows floor(ow_sale.vn) preceding ); -- mvd 5,3->4; + qty | qty | vn | to_char | cn +------+------+----+-------------------+---- + 1 | 1 | 10 | 201.0000000 | 1 + 1 | 1 | 20 | 101.0000000 | 1 + 1 | 1 | 30 | 301.0000000 | 1 + 12 | 12 | 30 | 301.0000000 | 1 + 12 | 12 | 30 | 301.0000000 | 3 + 12 | 12 | 30 | 301.0000000 | 3 + 1100 | 1100 | 40 | 102.0000000 | 2 + 1 | 1 | 40 | 102.0000000 | 3 + 1 | 1 | 40 | 102.0000000 | 4 + 1 | 1 | 40 | 102.0000000 | 4 + 1 | 1 | 50 | 401.0000000 | 1 + 1 | 1 | 50 | 401.0000000 | 2 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows 1 preceding ), +win2 as (order by ow_sale.vn desc); -- mvd 3,4,5->2; 4->6; 3,4,5->7; + pn | to_char | cn | vn | qty | to_char | to_char +-----+-------------------+----+----+------+-------------------+------------------- + 400 | 50.0000000 | 2 | 50 | 1 | .0000000 | 48.0000000 + 400 | 50.0000000 | 1 | 50 | 1 | .0000000 | 49.0000000 + 100 | 40.0000000 | 2 | 40 | 1100 | .1818182 | 38.0000000 + 200 | 40.0000000 | 3 | 40 | 1 | .1818182 | 37.0000000 + 700 | 40.0000000 | 4 | 40 | 1 | .1818182 | 36.0000000 + 800 | 40.0000000 | 4 | 40 | 1 | .1818182 | 36.0000000 + 500 | 30.0000000 | 1 | 30 | 12 | .5454545 | 29.0000000 + 500 | 30.0000000 | 3 | 30 | 12 | .5454545 | 27.0000000 + 600 | 30.0000000 | 3 | 30 | 12 | .5454545 | 27.0000000 + 300 | 30.0000000 | 1 | 30 | 1 | .5454545 | 29.0000000 + 100 | 20.0000000 | 1 | 20 | 1 | .9090909 | 19.0000000 + 200 | 10.0000000 | 1 | 10 | 1 | 1.0000000 | 9.0000000 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.cn asc rows current row ); -- mvd 7,2,1->6; + pn | vn | pn | qty | prc | to_char | cn +-----+----+-----+------+------+-------------------+---- + 200 | 10 | 200 | 1 | 0 | .0000000 | 1 + 100 | 20 | 100 | 1 | 0 | .0000000 | 1 + 300 | 30 | 300 | 1 | 0 | .0000000 | 1 + 500 | 30 | 500 | 12 | 5 | .0000000 | 1 + 500 | 30 | 500 | 12 | 5 | .0000000 | 3 + 600 | 30 | 600 | 12 | 5 | .0000000 | 3 + 100 | 40 | 100 | 1100 | 2400 | 60.0000000 | 2 + 200 | 40 | 200 | 1 | 0 | .0000000 | 3 + 700 | 40 | 700 | 1 | 1 | .0000000 | 4 + 800 | 40 | 800 | 1 | 1 | .0000000 | 4 + 400 | 50 | 400 | 1 | 0 | .0000000 | 1 + 400 | 50 | 400 | 1 | 0 | .0000000 | 2 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.cn asc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty+ow_sale.pn) as int),cast (floor(ow_sale.pn+ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.cn asc rows current row ), +win2 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn asc); -- mvd 8,9,5->7; 8,9,5->10; 8,9,5->11; 8,2->12; 8,9,5->13; + qty | vn | qty | qty | pn | vn | to_char | cn | dt | to_char | to_char | to_char | to_char +------+----+------+------+-----+----+-------------------+----+------------+-------------------+-------------------+-------------------+------------------- + 1 | 10 | 1 | 1 | 200 | 10 | .0000000 | 1 | 1401-03-01 | 1.0000000 | 1.0000000 | .0000000 | .0000000 + 1 | 30 | 1 | 1 | 300 | 30 | .0000000 | 1 | 1401-05-02 | 1.0000000 | 1.0000000 | .0000000 | .0000000 + 1 | 50 | 1 | 1 | 400 | 50 | .0000000 | 1 | 1401-06-01 | 1.0000000 | 1.0000000 | .0000000 | .0000000 + 1 | 50 | 1 | 1 | 400 | 50 | .0000000 | 2 | 1401-06-01 | 1.0000000 | 1.0000000 | .0000000 | .0000000 + 12 | 30 | 12 | 12 | 500 | 30 | 5.0000000 | 1 | 1401-06-01 | 12.0000000 | 1.0000000 | .0000000 | 150.0000000 + 12 | 30 | 12 | 12 | 500 | 30 | 5.0000000 | 3 | 1401-06-01 | 12.0000000 | 1.0000000 | .0000000 | 150.0000000 + 12 | 30 | 12 | 12 | 600 | 30 | 5.0000000 | 3 | 1401-06-01 | 12.0000000 | 1.0000000 | .0000000 | 150.0000000 + 1 | 40 | 1 | 1 | 700 | 40 | 1.0000000 | 4 | 1401-06-01 | 1.0000000 | 1.0000000 | .0000000 | 40.0000000 + 1 | 40 | 1 | 1 | 800 | 40 | 1.0000000 | 4 | 1401-06-01 | 1.0000000 | 1.0000000 | .0000000 | 40.0000000 + 1100 | 40 | 1100 | 1100 | 100 | 40 | 2400.0000000 | 2 | 1401-01-01 | 1100.0000000 | 1.0000000 | .0000000 | 96000.0000000 + 1 | 40 | 1 | 1 | 200 | 40 | .0000000 | 3 | 1401-04-01 | 1.0000000 | 1.0000000 | .0000000 | .0000000 + 1 | 20 | 1 | 1 | 100 | 20 | .0000000 | 1 | 1401-05-01 | 1.0000000 | 1.0000000 | .0000000 | .0000000 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and 0 preceding ); -- mvd 4,1->3; + dt | dt | to_char | cn +------------+------------+-------------------+---- + 1401-04-01 | 1401-04-01 | 200.0000000 | 3 + 1401-05-01 | 1401-05-01 | 100.0000000 | 1 + 1401-06-01 | 1401-06-01 | 400.0000000 | 2 + 1401-06-01 | 1401-06-01 | 701.0000000 | 4 + 1401-06-01 | 1401-06-01 | 701.0000000 | 4 + 1401-01-01 | 1401-01-01 | 2500.0000000 | 2 + 1401-03-01 | 1401-03-01 | 200.0000000 | 1 + 1401-05-02 | 1401-05-02 | 300.0000000 | 1 + 1401-06-01 | 1401-06-01 | 400.0000000 | 1 + 1401-06-01 | 1401-06-01 | 400.0000000 | 1 + 1401-06-01 | 1401-06-01 | 505.0000000 | 3 + 1401-06-01 | 1401-06-01 | 505.0000000 | 3 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc rows between unbounded preceding and floor(ow_sale.cn+ow_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc rows between unbounded preceding and floor(ow_sale.cn+ow_sale.pn) preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 3,4->2; 3,4->5; 3,4->6; 1->7; + cn | to_char | dt | vn | to_char | to_char | to_char +----+-------------------+------------+----+-------------------+-------------------+------------------- + 4 | .0000000 | 1401-06-01 | 40 | .0000000 | .0000000 | 1.0000000 + 4 | .0000000 | 1401-06-01 | 40 | .0000000 | .0000000 | 2.0000000 + 3 | .0000000 | 1401-06-01 | 30 | .0000000 | .0000000 | 3.0000000 + 3 | .0000000 | 1401-06-01 | 30 | .0000000 | .0000000 | 4.0000000 + 3 | .0000000 | 1401-04-01 | 40 | .0000000 | .0000000 | 5.0000000 + 2 | .0000000 | 1401-01-01 | 40 | .0000000 | .0000000 | 6.0000000 + 2 | .0000000 | 1401-06-01 | 50 | .0000000 | .0000000 | 7.0000000 + 1 | .0000000 | 1401-06-01 | 30 | .0000000 | .0000000 | 8.0000000 + 1 | .0000000 | 1401-05-02 | 30 | .0000000 | .0000000 | 9.0000000 + 1 | .0000000 | 1401-06-01 | 50 | .0000000 | .0000000 | 10.0000000 + 1 | .0000000 | 1401-03-01 | 10 | .0000000 | .0000000 | 11.0000000 + 1 | .0000000 | 1401-05-01 | 20 | .0000000 | .0000000 | 12.0000000 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and current row ); -- mvd 4,5,2,1,6->3; + qty | vn | to_char | prc | cn | pn +------+----+-------------------+------+----+----- + 1 | 50 | .0000000 | 0 | 2 | 400 + 12 | 30 | 5.0000000 | 5 | 1 | 500 + 12 | 30 | 5.0000000 | 5 | 3 | 500 + 12 | 30 | 5.0000000 | 5 | 3 | 600 + 1 | 10 | .0000000 | 0 | 1 | 200 + 1 | 20 | .0000000 | 0 | 1 | 100 + 1 | 30 | .0000000 | 0 | 1 | 300 + 1 | 50 | .0000000 | 0 | 1 | 400 + 1 | 40 | .0000000 | 0 | 3 | 200 + 1 | 40 | 1.0000000 | 1 | 4 | 700 + 1 | 40 | 1.0000000 | 1 | 4 | 800 + 1100 | 40 | 2400.0000000 | 2400 | 2 | 100 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.pn desc); -- mvd 4,1,2,5,6->3; 2->7; 6->8; 6->9; 4,1,2,5,6->10; 6->11; + dt | cn | to_char | prc | vn | pn | to_char | to_char | to_char | to_char | to_char +------------+----+-------------------+------+----+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 1401-06-01 | 1 | 50.0000000 | 0 | 50 | 400 | 1.0000000 | 5.0000000 | 5.0000000 | 50.0000000 | .5833333 + 1401-05-01 | 1 | 20.0000000 | 0 | 20 | 100 | 1.0000000 | 8.0000000 | 8.0000000 | 20.0000000 | 1.0000000 + 1401-03-01 | 1 | 10.0000000 | 0 | 10 | 200 | 1.0000000 | 7.0000000 | 7.0000000 | 10.0000000 | .8333333 + 1401-06-01 | 1 | 25.0000000 | 5 | 30 | 500 | 1.0000000 | 4.0000000 | 4.0000000 | 30.0000000 | .4166667 + 1401-05-02 | 1 | 30.0000000 | 0 | 30 | 300 | 1.0000000 | 6.0000000 | 6.0000000 | 30.0000000 | .6666667 + 1401-01-01 | 2 | -2360.0000000 | 2400 | 40 | 100 | 6.0000000 | 8.0000000 | 8.0000000 | 40.0000000 | 1.0000000 + 1401-06-01 | 2 | 50.0000000 | 0 | 50 | 400 | 6.0000000 | 5.0000000 | 5.0000000 | 50.0000000 | .5833333 + 1401-06-01 | 3 | 25.0000000 | 5 | 30 | 500 | 8.0000000 | 4.0000000 | 4.0000000 | 30.0000000 | .4166667 + 1401-06-01 | 3 | 25.0000000 | 5 | 30 | 600 | 8.0000000 | 3.0000000 | 3.0000000 | 30.0000000 | .2500000 + 1401-04-01 | 3 | 40.0000000 | 0 | 40 | 200 | 8.0000000 | 7.0000000 | 7.0000000 | 40.0000000 | .8333333 + 1401-06-01 | 4 | 39.0000000 | 1 | 40 | 700 | 11.0000000 | 2.0000000 | 2.0000000 | 40.0000000 | .1666667 + 1401-06-01 | 4 | 39.0000000 | 1 | 40 | 800 | 11.0000000 | 1.0000000 | 1.0000000 | 40.0000000 | .0833333 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and 6 following ); -- mvd 4,5,1->3; + pn | qty | to_char | cn | vn +-----+------+-------------------+----+---- + 200 | 1 | 201.0000000 | 1 | 10 + 100 | 1 | 101.0000000 | 1 | 20 + 600 | 12 | 612.0000000 | 3 | 30 + 200 | 1 | 201.0000000 | 3 | 40 + 800 | 1 | 801.0000000 | 4 | 40 + 400 | 1 | 401.0000000 | 2 | 50 + 300 | 1 | 301.0000000 | 1 | 30 + 500 | 12 | 512.0000000 | 1 | 30 + 500 | 12 | 512.0000000 | 3 | 30 + 100 | 1100 | 1200.0000000 | 2 | 40 + 700 | 1 | 701.0000000 | 4 | 40 + 400 | 1 | 401.0000000 | 1 | 50 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc,ow_sale.pn asc rows between unbounded preceding and floor(ow_sale.prc) following ), +win2 as (order by ow_sale.cn asc); -- mvd 1,4,5,2->3; 1->6; 1,4,5,2->7; + cn | pn | to_char | dt | vn | to_char | to_char +----+-----+-------------------+------------+----+-------------------+------------------- + 1 | 100 | 20.0000000 | 1401-05-01 | 20 | 1.0000000 | .0000000 + 1 | 500 | 30.0000000 | 1401-06-01 | 30 | 1.0000000 | .0000000 + 1 | 200 | 10.0000000 | 1401-03-01 | 10 | 1.0000000 | .0000000 + 1 | 300 | 30.0000000 | 1401-05-02 | 30 | 1.0000000 | .0000000 + 1 | 400 | 50.0000000 | 1401-06-01 | 50 | 1.0000000 | .0000000 + 2 | 100 | 40.0000000 | 1401-01-01 | 40 | 6.0000000 | .0000000 + 2 | 400 | 50.0000000 | 1401-06-01 | 50 | 6.0000000 | .0000000 + 3 | 200 | 40.0000000 | 1401-04-01 | 40 | 8.0000000 | .0000000 + 3 | 500 | 30.0000000 | 1401-06-01 | 30 | 8.0000000 | .0000000 + 3 | 600 | 30.0000000 | 1401-06-01 | 30 | 8.0000000 | .0000000 + 4 | 700 | 40.0000000 | 1401-06-01 | 40 | 11.0000000 | .0000000 + 4 | 800 | 40.0000000 | 1401-06-01 | 40 | 11.0000000 | .0000000 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 7,8,1,3,9,2->6; + dt | pn | vn | dt | vn | to_char | prc | cn | qty +------------+-----+----+------------+----+-------------------+------+----+------ + 1401-03-01 | 200 | 10 | 1401-03-01 | 10 | 200.0000000 | 0 | 1 | 1 + 1401-05-02 | 300 | 30 | 1401-05-02 | 30 | 300.0000000 | 0 | 1 | 1 + 1401-06-01 | 400 | 50 | 1401-06-01 | 50 | 400.0000000 | 0 | 1 | 1 + 1401-06-01 | 700 | 40 | 1401-06-01 | 40 | 700.0000000 | 1 | 4 | 1 + 1401-06-01 | 800 | 40 | 1401-06-01 | 40 | 700.0000000 | 1 | 4 | 1 + 1401-01-01 | 100 | 40 | 1401-01-01 | 40 | 110000.0000000 | 2400 | 2 | 1100 + 1401-04-01 | 200 | 40 | 1401-04-01 | 40 | 200.0000000 | 0 | 3 | 1 + 1401-05-01 | 100 | 20 | 1401-05-01 | 20 | 100.0000000 | 0 | 1 | 1 + 1401-06-01 | 500 | 30 | 1401-06-01 | 30 | 6000.0000000 | 5 | 1 | 12 + 1401-06-01 | 400 | 50 | 1401-06-01 | 50 | 400.0000000 | 0 | 2 | 1 + 1401-06-01 | 500 | 30 | 1401-06-01 | 30 | 6000.0000000 | 5 | 3 | 12 + 1401-06-01 | 600 | 30 | 1401-06-01 | 30 | 6000.0000000 | 5 | 3 | 12 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.vn*ow_sale.pn) preceding and floor(ow_sale.pn) preceding ); -- mvd 4,5,6,7,2->3; + vn | pn | to_char | prc | dt | cn | qty +----+-----+-------------------+------+------------+----+------ + 10 | 200 | .0000000 | 0 | 1401-03-01 | 1 | 1 + 30 | 300 | .0000000 | 0 | 1401-05-02 | 1 | 1 + 50 | 400 | .0000000 | 0 | 1401-06-01 | 1 | 1 + 40 | 700 | .0000000 | 1 | 1401-06-01 | 4 | 1 + 40 | 800 | .0000000 | 1 | 1401-06-01 | 4 | 1 + 20 | 100 | .0000000 | 0 | 1401-05-01 | 1 | 1 + 30 | 500 | .0000000 | 5 | 1401-06-01 | 1 | 12 + 50 | 400 | .0000000 | 0 | 1401-06-01 | 2 | 1 + 40 | 100 | .0000000 | 2400 | 1401-01-01 | 2 | 1100 + 40 | 200 | .0000000 | 0 | 1401-04-01 | 3 | 1 + 30 | 500 | .0000000 | 5 | 1401-06-01 | 3 | 12 + 30 | 600 | .0000000 | 5 | 1401-06-01 | 3 | 12 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.vn) as int),cast (floor(ow_sale.vn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn/ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc rows between 3 preceding and 0 preceding ), +win2 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc), +win4 as (order by ow_sale.vn desc); -- mvd 5,6->4; 1->7; 1->8; 10->9; + cn | qty | cn | to_char | dt | pn | to_char | to_char | to_char | vn +----+------+----+-------------------+------------+-----+-------------------+-------------------+-------------------+---- + 2 | 1 | 2 | 400.0000000 | 1401-06-01 | 400 | .0000000 | .0000000 | .0000000 | 50 + 1 | 1 | 1 | 400.0000000 | 1401-06-01 | 400 | .0000000 | .0000000 | .0000000 | 50 + 4 | 1 | 4 | 800.0000000 | 1401-06-01 | 800 | .0000000 | .0000000 | .1818182 | 40 + 3 | 1 | 3 | 200.0000000 | 1401-04-01 | 200 | .0000000 | .0000000 | .1818182 | 40 + 4 | 1 | 4 | 700.0000000 | 1401-06-01 | 700 | .0000000 | .0000000 | .1818182 | 40 + 2 | 1100 | 2 | 100.0000000 | 1401-01-01 | 100 | .0000000 | 1100.0000000 | .1818182 | 40 + 1 | 12 | 1 | 500.0000000 | 1401-06-01 | 500 | .0000000 | .0000000 | .5454545 | 30 + 3 | 12 | 3 | 500.0000000 | 1401-06-01 | 500 | .0000000 | .0000000 | .5454545 | 30 + 3 | 12 | 3 | 600.0000000 | 1401-06-01 | 600 | .0000000 | .0000000 | .5454545 | 30 + 1 | 1 | 1 | 300.0000000 | 1401-05-02 | 300 | .0000000 | .0000000 | .5454545 | 30 + 1 | 1 | 1 | 100.0000000 | 1401-05-01 | 100 | .0000000 | .0000000 | .9090909 | 20 + 1 | 1 | 1 | 200.0000000 | 1401-03-01 | 200 | .0000000 | .0000000 | 1.0000000 | 10 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between 8 preceding and current row ); -- mvd 3,4,5,6->2; + vn | to_char | prc | cn | dt | pn +----+-------------------+------+----+------------+----- + 10 | 1.0000000 | 0 | 1 | 1401-03-01 | 200 + 40 | 1.0000000 | 1 | 4 | 1401-06-01 | 800 + 30 | 12.0000000 | 5 | 3 | 1401-06-01 | 600 + 40 | 1.0000000 | 0 | 3 | 1401-04-01 | 200 + 20 | 1.0000000 | 0 | 1 | 1401-05-01 | 100 + 30 | 1.0000000 | 0 | 1 | 1401-05-02 | 300 + 50 | 1.0000000 | 0 | 1 | 1401-06-01 | 400 + 50 | 1.0000000 | 0 | 2 | 1401-06-01 | 400 + 40 | 1.0000000 | 1 | 4 | 1401-06-01 | 700 + 30 | 12.0000000 | 5 | 1 | 1401-06-01 | 500 + 30 | 12.0000000 | 5 | 3 | 1401-06-01 | 500 + 40 | 1100.0000000 | 2400 | 2 | 1401-01-01 | 100 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc rows between 4 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc rows between 4 preceding and current row ), +win2 as (order by ow_sale.cn asc); -- mvd 3,1,4,5->2; 3,1,4,5->6; 3->7; + qty | to_char | cn | vn | pn | to_char | to_char +------+-------------------+----+----+-----+-------------------+------------------- + 1 | 1.0000000 | 1 | 10 | 200 | 1.0000000 | 1.0000000 + 1 | 1.0000000 | 1 | 20 | 100 | 1.0000000 | 1.0000000 + 1 | 1.0000000 | 1 | 30 | 300 | 1.0000000 | 1.0000000 + 12 | 1.0000000 | 1 | 30 | 500 | 1.0000000 | 1.0000000 + 1 | 1.0000000 | 1 | 50 | 400 | 1.0000000 | 1.0000000 + 1100 | 1.0000000 | 2 | 40 | 100 | 2.0000000 | 6.0000000 + 1 | 1.0000000 | 2 | 50 | 400 | 2.0000000 | 6.0000000 + 12 | 1.0000000 | 3 | 30 | 600 | 3.0000000 | 8.0000000 + 1 | 1.0000000 | 3 | 40 | 200 | 3.0000000 | 8.0000000 + 12 | 1.0000000 | 3 | 30 | 500 | 3.0000000 | 8.0000000 + 1 | 1.0000000 | 4 | 40 | 700 | 4.0000000 | 11.0000000 + 1 | 1.0000000 | 4 | 40 | 800 | 4.0000000 | 11.0000000 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc,ow_sale.pn desc rows between floor(ow_sale.prc) preceding and floor(ow_sale.vn*ow_sale.prc) following ); -- mvd 6,3,7,2->5; + prc | pn | cn | qty | to_char | dt | vn +------+-----+----+------+-------------------+------------+---- + 0 | 100 | 1 | 1 | 1.0000000 | 1401-05-01 | 20 + 0 | 400 | 2 | 1 | .0000000 | 1401-06-01 | 50 + 0 | 200 | 3 | 1 | .0000000 | 1401-04-01 | 40 + 1 | 700 | 4 | 1 | .0000000 | 1401-06-01 | 40 + 1 | 800 | 4 | 1 | .0000000 | 1401-06-01 | 40 + 0 | 200 | 1 | 1 | 1.0000000 | 1401-03-01 | 10 + 0 | 300 | 1 | 1 | 1.0000000 | 1401-05-02 | 30 + 0 | 400 | 1 | 1 | 1.0000000 | 1401-06-01 | 50 + 5 | 500 | 1 | 12 | 1.0000000 | 1401-06-01 | 30 + 2400 | 100 | 2 | 1100 | 550.0000000 | 1401-01-01 | 40 + 5 | 500 | 3 | 12 | 4.0000000 | 1401-06-01 | 30 + 5 | 600 | 3 | 12 | 4.0000000 | 1401-06-01 | 30 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.cn) preceding and floor(ow_sale.vn+ow_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.cn) preceding and floor(ow_sale.vn+ow_sale.cn) following ), +win2 as (order by ow_sale.pn asc); -- mvd 4,5->3; 4,5->6; 5->7; + cn | prc | to_char | vn | pn | to_char | to_char +----+------+-------------------+----+-----+-------------------+------------------- + 2 | 2400 | 2.0000000 | 40 | 100 | .0000000 | 1.0000000 + 1 | 0 | 2.0000000 | 20 | 100 | .0000000 | 1.0000000 + 1 | 0 | 2.0000000 | 10 | 200 | .0000000 | 3.0000000 + 3 | 0 | 2.0000000 | 40 | 200 | .0000000 | 3.0000000 + 1 | 0 | 2.0000000 | 30 | 300 | .0000000 | 5.0000000 + 1 | 0 | 2.0000000 | 50 | 400 | .0000000 | 6.0000000 + 2 | 0 | 2.0000000 | 50 | 400 | .0000000 | 6.0000000 + 1 | 5 | 2.0000000 | 30 | 500 | 5.0000000 | 8.0000000 + 3 | 5 | 2.0000000 | 30 | 500 | 5.0000000 | 8.0000000 + 3 | 5 | 6.0000000 | 30 | 600 | 5.0000000 | 10.0000000 + 4 | 1 | 8.0000000 | 40 | 700 | 1.0000000 | 11.0000000 + 4 | 1 | 8.0000000 | 40 | 800 | 1.0000000 | 12.0000000 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.cn desc rows between floor(ow_sale.vn-ow_sale.vn) preceding and unbounded following ); -- mvd 4,2,6->5; + dt | cn | cn | prc | to_char | vn +------------+----+----+------+-------------------+---- + 1401-03-01 | 1 | 1 | 0 | 1.0000000 | 10 + 1401-05-01 | 1 | 1 | 0 | 1.0000000 | 20 + 1401-05-02 | 1 | 1 | 0 | 1.0000000 | 30 + 1401-06-01 | 1 | 1 | 5 | 1.0000000 | 30 + 1401-06-01 | 3 | 3 | 5 | 3.0000000 | 30 + 1401-06-01 | 3 | 3 | 5 | 3.0000000 | 30 + 1401-04-01 | 3 | 3 | 0 | 3.0000000 | 40 + 1401-06-01 | 4 | 4 | 1 | 4.0000000 | 40 + 1401-06-01 | 4 | 4 | 1 | 4.0000000 | 40 + 1401-06-01 | 1 | 1 | 0 | 1.0000000 | 50 + 1401-01-01 | 2 | 2 | 2400 | 2.0000000 | 40 + 1401-06-01 | 2 | 2 | 0 | 2.0000000 | 50 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.cn) as int),cast (floor(ow_sale.vn*ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.qty+ow_sale.vn) preceding and unbounded following ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,4,1->2; 3,4,1->5; 3,4,1->6; 1->7; 3,4->8; + pn | to_char | cn | qty | to_char | to_char | to_char | to_char +-----+-------------------+----+------+-------------------+-------------------+-------------------+------------------- + 800 | 4.0000000 | 4 | 1 | 800.0000000 | 4.0000000 | 1.0000000 | .0000000 + 700 | 4.0000000 | 4 | 1 | 700.0000000 | 4.0000000 | 2.0000000 | .0000000 + 600 | 3.0000000 | 3 | 12 | 600.0000000 | 36.0000000 | 3.0000000 | .0000000 + 500 | 1.0000000 | 1 | 12 | 500.0000000 | 12.0000000 | 4.0000000 | .0000000 + 500 | 3.0000000 | 3 | 12 | 500.0000000 | 36.0000000 | 4.0000000 | .0000000 + 400 | 1.0000000 | 1 | 1 | 400.0000000 | 1.0000000 | 6.0000000 | .0000000 + 400 | 2.0000000 | 2 | 1 | 400.0000000 | 2.0000000 | 6.0000000 | .0000000 + 300 | 1.0000000 | 1 | 1 | 300.0000000 | 1.0000000 | 8.0000000 | .0000000 + 200 | 1.0000000 | 1 | 1 | 200.0000000 | 1.0000000 | 9.0000000 | .0000000 + 200 | 3.0000000 | 3 | 1 | 200.0000000 | 3.0000000 | 9.0000000 | .0000000 + 100 | 1.0000000 | 1 | 1 | 100.0000000 | 1.0000000 | 11.0000000 | .0000000 + 100 | 2.0000000 | 2 | 1100 | 100.0000000 | 2200.0000000 | 11.0000000 | .0000000 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn asc rows between current row and current row ); -- mvd 6,1->5; + qty | vn | pn | prc | to_char | cn +------+----+-----+------+-------------------+---- + 1 | 10 | 200 | 0 | 200.0000000 | 1 + 1 | 40 | 200 | 0 | 200.0000000 | 3 + 1 | 20 | 100 | 0 | 100.0000000 | 1 + 1 | 30 | 300 | 0 | 300.0000000 | 1 + 1 | 50 | 400 | 0 | 400.0000000 | 1 + 1 | 50 | 400 | 0 | 400.0000000 | 2 + 1 | 40 | 700 | 1 | 700.0000000 | 4 + 1 | 40 | 800 | 1 | 800.0000000 | 4 + 12 | 30 | 500 | 5 | 500.0000000 | 1 + 12 | 30 | 500 | 5 | 500.0000000 | 3 + 12 | 30 | 600 | 5 | 600.0000000 | 3 + 1100 | 40 | 100 | 2400 | 100.0000000 | 2 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.prc order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between current row and current row ), +win2 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.cn order by ow_sale.vn desc), +win3 as (partition by ow_sale.pn order by ow_sale.cn asc), +win4 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.prc order by ow_sale.cn desc); -- mvd 6,2->5; 3,6,4->7; 6,2->8; 6,2->9; 11,6,3,4,2->10; 11,6,3,4,2->12; + qty | pn | dt | vn | to_char | cn | to_char | to_char | to_char | to_char | prc | to_char +------+-----+------------+----+-------------------+----+-------------------+-------------------+-------------------+-------------------+------+------------------- + 1 | 300 | 1401-05-02 | 30 | 30.0000000 | 1 | 1.0000000 | 300.0000000 | 1.0000000 | 1.0000000 | 0 | -299.0000000 + 1 | 400 | 1401-06-01 | 50 | 50.0000000 | 1 | 1.0000000 | 400.0000000 | .5000000 | 2.0000000 | 0 | -399.0000000 + 1 | 400 | 1401-06-01 | 50 | 50.0000000 | 2 | 1.0000000 | 400.0000000 | 1.0000000 | 1.0000000 | 0 | -398.0000000 + 12 | 500 | 1401-06-01 | 30 | 30.0000000 | 1 | 1.0000000 | 500.0000000 | .5000000 | 2.0000000 | 5 | -499.0000000 + 12 | 500 | 1401-06-01 | 30 | 30.0000000 | 3 | 1.0000000 | 500.0000000 | 1.0000000 | 1.0000000 | 5 | -497.0000000 + 1 | 800 | 1401-06-01 | 40 | 40.0000000 | 4 | 1.0000000 | 800.0000000 | 1.0000000 | 1.0000000 | 1 | -796.0000000 + 1 | 100 | 1401-05-01 | 20 | 20.0000000 | 1 | 1.0000000 | 100.0000000 | .5000000 | 1.0000000 | 0 | -99.0000000 + 1100 | 100 | 1401-01-01 | 40 | 40.0000000 | 2 | 1.0000000 | 100.0000000 | 1.0000000 | 1.0000000 | 2400 | -98.0000000 + 1 | 200 | 1401-03-01 | 10 | 10.0000000 | 1 | 1.0000000 | 200.0000000 | .5000000 | 1.0000000 | 0 | -199.0000000 + 1 | 200 | 1401-04-01 | 40 | 40.0000000 | 3 | 1.0000000 | 200.0000000 | 1.0000000 | 1.0000000 | 0 | -197.0000000 + 12 | 600 | 1401-06-01 | 30 | 30.0000000 | 3 | 1.0000000 | 600.0000000 | 1.0000000 | 1.0000000 | 5 | -597.0000000 + 1 | 700 | 1401-06-01 | 40 | 40.0000000 | 4 | 1.0000000 | 700.0000000 | 1.0000000 | 1.0000000 | 1 | -696.0000000 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn desc rows between current row and unbounded following ); -- mvd 1,3,4->2; + cn | to_char | vn | pn +----+-------------------+----+----- + 1 | 10.0000000 | 10 | 200 + 1 | 20.0000000 | 20 | 100 + 1 | 30.0000000 | 30 | 300 + 1 | 30.0000000 | 30 | 500 + 1 | 50.0000000 | 50 | 400 + 3 | 30.0000000 | 30 | 500 + 3 | 30.0000000 | 30 | 600 + 3 | 40.0000000 | 40 | 200 + 2 | 40.0000000 | 40 | 100 + 2 | 50.0000000 | 50 | 400 + 4 | 40.0000000 | 40 | 700 + 4 | 40.0000000 | 40 | 800 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.vn asc); -- mvd 4,5,6,7->3; 7->8; 5->9; + prc | dt | to_char | cn | vn | qty | pn | to_char | to_char +------+------------+-------------------+----+----+------+-----+-------------------+------------------- + 2400 | 1401-01-01 | 2.0000000 | 2 | 40 | 1100 | 100 | 1.0000000 | .8333333 + 0 | 1401-05-01 | 5.0000000 | 1 | 20 | 1 | 100 | 2.0000000 | .1666667 + 0 | 1401-03-01 | 20.0000000 | 1 | 10 | 1 | 200 | 3.0000000 | .0833333 + 0 | 1401-04-01 | 5.0000000 | 3 | 40 | 1 | 200 | 4.0000000 | .8333333 + 0 | 1401-05-02 | 10.0000000 | 1 | 30 | 1 | 300 | 5.0000000 | .5000000 + 0 | 1401-06-01 | 8.0000000 | 2 | 50 | 1 | 400 | 6.0000000 | 1.0000000 + 0 | 1401-06-01 | 8.0000000 | 1 | 50 | 1 | 400 | 7.0000000 | 1.0000000 + 5 | 1401-06-01 | 16.0000000 | 3 | 30 | 12 | 500 | 8.0000000 | .5000000 + 5 | 1401-06-01 | 16.0000000 | 1 | 30 | 12 | 500 | 9.0000000 | .5000000 + 5 | 1401-06-01 | 20.0000000 | 3 | 30 | 12 | 600 | 10.0000000 | .5000000 + 1 | 1401-06-01 | 17.0000000 | 4 | 40 | 1 | 700 | 11.0000000 | .8333333 + 1 | 1401-06-01 | 20.0000000 | 4 | 40 | 1 | 800 | 12.0000000 | .8333333 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows between floor(ow_sale.vn) following and 4 following ); -- mvd 3,4,5->2; + dt | to_char | cn | vn | pn +------------+-------------------+----+----+----- + 1401-03-01 | .0000000 | 1 | 10 | 200 + 1401-05-01 | .0000000 | 1 | 20 | 100 + 1401-05-02 | .0000000 | 1 | 30 | 300 + 1401-06-01 | .0000000 | 1 | 30 | 500 + 1401-06-01 | .0000000 | 3 | 30 | 500 + 1401-06-01 | .0000000 | 3 | 30 | 600 + 1401-04-01 | .0000000 | 3 | 40 | 200 + 1401-06-01 | .0000000 | 1 | 50 | 400 + 1401-01-01 | .0000000 | 2 | 40 | 100 + 1401-06-01 | .0000000 | 4 | 40 | 700 + 1401-06-01 | .0000000 | 4 | 40 | 800 + 1401-06-01 | .0000000 | 2 | 50 | 400 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows between 2 following and floor(ow_sale.vn/ow_sale.pn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc+ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows between 2 following and floor(ow_sale.vn/ow_sale.pn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn+ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows between 2 following and floor(ow_sale.vn/ow_sale.pn) following ), +win2 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.vn desc), +win3 as (order by ow_sale.pn asc), +win4 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 5,6,3->4; 5,6,3->7; 6,9,3->8; 5,6,3->10; 3->11; 5->12; + qty | qty | pn | to_char | cn | dt | to_char | to_char | vn | to_char | to_char | to_char +------+------+-----+-------------------+----+------------+-------------------+-------------------+----+-------------------+-------------------+------------------- + 1100 | 1100 | 100 | .0000000 | 2 | 1401-01-01 | .0000000 | 1.0000000 | 40 | .0000000 | 1.0000000 | .0000000 + 1 | 1 | 200 | .0000000 | 1 | 1401-03-01 | .0000000 | 1.0000000 | 10 | .0000000 | 3.0000000 | 1.0000000 + 1 | 1 | 200 | .0000000 | 3 | 1401-04-01 | .0000000 | 1.0000000 | 40 | .0000000 | 3.0000000 | 1.0000000 + 1 | 1 | 100 | .0000000 | 1 | 1401-05-01 | .0000000 | 1.0000000 | 20 | .0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 300 | .0000000 | 1 | 1401-05-02 | .0000000 | 1.0000000 | 30 | .0000000 | 5.0000000 | 1.0000000 + 1 | 1 | 400 | .0000000 | 1 | 1401-06-01 | .0000000 | 1.0000000 | 50 | .0000000 | 6.0000000 | 12.0000000 + 1 | 1 | 400 | .0000000 | 2 | 1401-06-01 | .0000000 | 1.0000000 | 50 | .0000000 | 6.0000000 | 12.0000000 + 12 | 12 | 500 | .0000000 | 1 | 1401-06-01 | .0000000 | 1.0000000 | 30 | .0000000 | 8.0000000 | .0000000 + 12 | 12 | 500 | .0000000 | 3 | 1401-06-01 | .0000000 | 1.0000000 | 30 | .0000000 | 8.0000000 | .0000000 + 12 | 12 | 600 | .0000000 | 3 | 1401-06-01 | .0000000 | 1.0000000 | 30 | .0000000 | 10.0000000 | .0000000 + 1 | 1 | 700 | .0000000 | 4 | 1401-06-01 | .0000000 | 1.0000000 | 40 | .0000000 | 11.0000000 | .0000000 + 1 | 1 | 800 | .0000000 | 4 | 1401-06-01 | .0000000 | 1.0000000 | 40 | .0000000 | 12.0000000 | .0000000 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.pn desc rows between floor(ow_sale.cn*ow_sale.prc) following and unbounded following ); -- mvd 1,7,2,3->6; + cn | qty | pn | prc | cn | to_char | vn +----+------+-----+------+----+-------------------+---- + 1 | 1 | 300 | 0 | 1 | 30.0000000 | 30 + 1 | 1 | 400 | 0 | 1 | 50.0000000 | 50 + 3 | 12 | 600 | 5 | 3 | .0000000 | 30 + 4 | 1 | 700 | 1 | 4 | .0000000 | 40 + 1 | 1 | 100 | 0 | 1 | 20.0000000 | 20 + 1 | 1 | 200 | 0 | 1 | 10.0000000 | 10 + 1 | 12 | 500 | 5 | 1 | .0000000 | 30 + 2 | 1100 | 100 | 2400 | 2 | .0000000 | 40 + 2 | 1 | 400 | 0 | 2 | 50.0000000 | 50 + 3 | 1 | 200 | 0 | 3 | 40.0000000 | 40 + 3 | 12 | 500 | 5 | 3 | .0000000 | 30 + 4 | 1 | 800 | 1 | 4 | .0000000 | 40 +(12 rows) + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between 2 following and unbounded following ), +win2 as (order by ow_sale.vn desc); -- mvd 1,3,4->2; 1,3,4->5; 3->6; + cn | to_char | vn | pn | to_char | to_char +----+-------------------+----+-----+-------------------+------------------- + 2 | .0000000 | 50 | 400 | .0000000 | 1.0000000 + 1 | .0000000 | 50 | 400 | .0000000 | 1.0000000 + 2 | .0000000 | 40 | 100 | .0000000 | 2.0000000 + 4 | .0000000 | 40 | 700 | .0000000 | 2.0000000 + 3 | .0000000 | 40 | 200 | .0000000 | 2.0000000 + 4 | .0000000 | 40 | 800 | .0000000 | 2.0000000 + 3 | .0000000 | 30 | 600 | .0000000 | 3.0000000 + 1 | .0000000 | 30 | 300 | .0000000 | 3.0000000 + 1 | .0000000 | 30 | 500 | .0000000 | 3.0000000 + 3 | .0000000 | 30 | 500 | .0000000 | 3.0000000 + 1 | .0000000 | 20 | 100 | .0000000 | 4.0000000 + 1 | .0000000 | 10 | 200 | .0000000 | 5.0000000 +(12 rows) + +-- STDDEV() function with NULL OVER() clause -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (); -- mvd 6->6; + vn | dt | dt | pn | dt | to_char +----+------------+------------+-----+------------+------------------- + 50 | 1401-06-01 | 1401-06-01 | 400 | 1401-06-01 | 692.3775190 + 40 | 1401-06-01 | 1401-06-01 | 800 | 1401-06-01 | 692.3775190 + 20 | 1401-05-01 | 1401-05-01 | 100 | 1401-05-01 | 692.3775190 + 10 | 1401-03-01 | 1401-03-01 | 200 | 1401-03-01 | 692.3775190 + 40 | 1401-04-01 | 1401-04-01 | 200 | 1401-04-01 | 692.3775190 + 30 | 1401-06-01 | 1401-06-01 | 600 | 1401-06-01 | 692.3775190 + 30 | 1401-05-02 | 1401-05-02 | 300 | 1401-05-02 | 692.3775190 + 50 | 1401-06-01 | 1401-06-01 | 400 | 1401-06-01 | 692.3775190 + 30 | 1401-06-01 | 1401-06-01 | 500 | 1401-06-01 | 692.3775190 + 30 | 1401-06-01 | 1401-06-01 | 500 | 1401-06-01 | 692.3775190 + 40 | 1401-01-01 | 1401-01-01 | 100 | 1401-01-01 | 692.3775190 + 40 | 1401-06-01 | 1401-06-01 | 700 | 1401-06-01 | 692.3775190 +(12 rows) + +-- STDDEV() function with NULL OVER() clause in combination with other window functions -- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.pn asc), +win4 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.pn desc); -- mvd 3->3; 3->4; 6->5; 1->7; 9,10,6,1->8; 1->11; + pn | vn | to_char | to_char | to_char | cn | to_char | to_char | prc | dt | to_char +-----+----+-------------------+-------------------+-------------------+----+-------------------+-------------------+------+------------+------------------- + 100 | 40 | 11.6450015 | 12.0000000 | 2.0000000 | 2 | 1.0000000 | 1.0000000 | 2400 | 1401-01-01 | 2.0000000 + 100 | 20 | 11.6450015 | 12.0000000 | 1.0000000 | 1 | 2.0000000 | 1.0000000 | 0 | 1401-05-01 | 2.0000000 + 200 | 40 | 11.6450015 | 12.0000000 | 3.0000000 | 3 | 3.0000000 | 1.0000000 | 0 | 1401-04-01 | 3.0000000 + 200 | 10 | 11.6450015 | 12.0000000 | 1.0000000 | 1 | 4.0000000 | 1.0000000 | 0 | 1401-03-01 | 3.0000000 + 300 | 30 | 11.6450015 | 12.0000000 | 1.0000000 | 1 | 5.0000000 | 1.0000000 | 0 | 1401-05-02 | 3.0000000 + 400 | 50 | 11.6450015 | 12.0000000 | 2.0000000 | 2 | 6.0000000 | 1.0000000 | 0 | 1401-06-01 | 3.0000000 + 400 | 50 | 11.6450015 | 12.0000000 | 1.0000000 | 1 | 7.0000000 | 1.0000000 | 0 | 1401-06-01 | 3.0000000 + 500 | 30 | 11.6450015 | 12.0000000 | 1.0000000 | 1 | 8.0000000 | 1.0000000 | 5 | 1401-06-01 | 3.0000000 + 500 | 30 | 11.6450015 | 12.0000000 | 3.0000000 | 3 | 9.0000000 | 1.0000000 | 5 | 1401-06-01 | 3.0000000 + 600 | 30 | 11.6450015 | 12.0000000 | 3.0000000 | 3 | 10.0000000 | 1.0000000 | 5 | 1401-06-01 | 3.0000000 + 700 | 40 | 11.6450015 | 12.0000000 | 4.0000000 | 4 | 11.0000000 | 1.0000000 | 1 | 1401-06-01 | 4.0000000 + 800 | 40 | 11.6450015 | 12.0000000 | 4.0000000 | 4 | 12.0000000 | 1.0000000 | 1 | 1401-06-01 | 4.0000000 +(12 rows) + +-- STDDEV() function with OVER() clause having ONLY PARTITION BY -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.cn); -- mvd 2,7->6; + pn | prc | qty | qty | vn | to_char | cn +-----+------+------+------+----+-------------------+---- + 200 | 0 | 1 | 1 | 10 | .0000000 | 1 + 100 | 0 | 1 | 1 | 20 | .0000000 | 1 + 300 | 0 | 1 | 1 | 30 | .0000000 | 1 + 400 | 0 | 1 | 1 | 50 | .0000000 | 1 + 200 | 0 | 1 | 1 | 40 | .0000000 | 3 + 800 | 1 | 1 | 1 | 40 | .0000000 | 4 + 700 | 1 | 1 | 1 | 40 | .0000000 | 4 + 500 | 5 | 12 | 12 | 30 | .0000000 | 1 + 500 | 5 | 12 | 12 | 30 | .0000000 | 3 + 600 | 5 | 12 | 12 | 30 | .0000000 | 3 + 400 | 0 | 1 | 1 | 50 | .0000000 | 2 + 100 | 2400 | 1100 | 1100 | 40 | .0000000 | 2 +(12 rows) + +-- STDDEV() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.qty), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc); -- mvd 5,6,2->4; 6->7; 6,2,9->8; 6,2,9->10; 6->11; + pn | qty | qty | to_char | dt | cn | to_char | to_char | vn | to_char | to_char +-----+------+------+-------------------+------------+----+-------------------+-------------------+----+-------------------+------------------- + 800 | 1 | 1 | .0000000 | 1401-06-01 | 4 | 1.0000000 | .0000000 | 40 | 2.0000000 | .0000000 + 700 | 1 | 1 | .0000000 | 1401-06-01 | 4 | 2.0000000 | .0000000 | 40 | 1.0000000 | .0000000 + 200 | 1 | 1 | .0000000 | 1401-04-01 | 3 | 3.0000000 | .0000000 | 40 | 1.0000000 | .1818182 + 600 | 12 | 12 | .0000000 | 1401-06-01 | 3 | 4.0000000 | .0000000 | 30 | 2.0000000 | .1818182 + 500 | 12 | 12 | .0000000 | 1401-06-01 | 3 | 5.0000000 | .0000000 | 30 | 1.0000000 | .1818182 + 100 | 1100 | 1100 | .0000000 | 1401-01-01 | 2 | 6.0000000 | .0000000 | 40 | 1.0000000 | .4545455 + 400 | 1 | 1 | .0000000 | 1401-06-01 | 2 | 7.0000000 | .0000000 | 50 | 1.0000000 | .4545455 + 500 | 12 | 12 | .0000000 | 1401-06-01 | 1 | 8.0000000 | .0000000 | 30 | 1.0000000 | .6363636 + 100 | 1 | 1 | .0000000 | 1401-05-01 | 1 | 9.0000000 | .0000000 | 20 | 1.0000000 | .6363636 + 200 | 1 | 1 | .0000000 | 1401-03-01 | 1 | 10.0000000 | .0000000 | 10 | 1.0000000 | .6363636 + 300 | 1 | 1 | .0000000 | 1401-05-02 | 1 | 11.0000000 | .0000000 | 30 | 1.0000000 | .6363636 + 400 | 1 | 1 | .0000000 | 1401-06-01 | 1 | 12.0000000 | .0000000 | 50 | 1.0000000 | .6363636 +(12 rows) + +-- STDDEV() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn desc,ow_sale.pn asc,ow_sale.pn asc); -- mvd 4->3; + cn | prc | to_char | pn +----+------+-------------------+----- + 4 | 1 | .0000000 | 800 + 4 | 1 | .0000000 | 700 + 3 | 5 | 6.3508530 | 600 + 1 | 5 | 6.0249481 | 500 + 3 | 5 | 6.0249481 | 500 + 1 | 0 | 5.8797473 | 400 + 2 | 0 | 5.8797473 | 400 + 1 | 0 | 5.6930409 | 300 + 1 | 0 | 5.3135048 | 200 + 3 | 0 | 5.3135048 | 200 + 1 | 0 | 316.4258734 | 100 + 2 | 2400 | 316.4258734 | 100 +(12 rows) + +-- STDDEV() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.pn desc,ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.pn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.pn desc,ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc,ow_sale.vn desc), +win2 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc); -- mvd 2,4->5; 2,4->6; 8,1,3,4->7; 2,4->9; 8,1,3,4->10; + cn | vn | qty | pn | to_char | to_char | to_char | dt | to_char | to_char +----+----+------+-----+-------------------+-------------------+-------------------+------------+-------------------+------------------- + 4 | 40 | 1 | 800 | .0000000 | 1.0000000 | .0000000 | 1401-06-01 | 1.0000000 | 1.0000000 + 4 | 40 | 1 | 700 | .0000000 | 2.0000000 | .0000000 | 1401-06-01 | 2.0000000 | .5000000 + 3 | 30 | 12 | 600 | 6.3508530 | 3.0000000 | .0000000 | 1401-06-01 | 3.0000000 | 1.0000000 + 1 | 30 | 12 | 500 | 6.0249481 | 4.0000000 | .0000000 | 1401-06-01 | 4.0000000 | 1.0000000 + 3 | 30 | 12 | 500 | 6.0249481 | 4.0000000 | .0000000 | 1401-06-01 | 4.0000000 | .5000000 + 2 | 50 | 1 | 400 | 5.8797473 | 5.0000000 | .0000000 | 1401-06-01 | 6.0000000 | 1.0000000 + 1 | 50 | 1 | 400 | 5.8797473 | 5.0000000 | .0000000 | 1401-06-01 | 6.0000000 | 1.0000000 + 1 | 30 | 1 | 300 | 5.6930409 | 6.0000000 | .0000000 | 1401-05-02 | 8.0000000 | 1.0000000 + 3 | 40 | 1 | 200 | 5.5000000 | 7.0000000 | .0000000 | 1401-04-01 | 9.0000000 | 1.0000000 + 1 | 10 | 1 | 200 | 5.3135048 | 8.0000000 | .0000000 | 1401-03-01 | 10.0000000 | 1.0000000 + 2 | 40 | 1100 | 100 | 330.4044354 | 9.0000000 | .0000000 | 1401-01-01 | 11.0000000 | 1.0000000 + 1 | 20 | 1 | 100 | 316.4258734 | 10.0000000 | .0000000 | 1401-05-01 | 12.0000000 | 1.0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.prc) as int),cast (floor(ow_sale.vn/ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range unbounded preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (order by ow_sale.vn desc); -- mvd 3->2; 3->4; 6->5; + qty | to_char | pn | to_char | to_char | vn +------+-------------------+-----+-------------------+-------------------+---- + 1 | 830.9552449 | 400 | .0000000 | .1666667 | 50 + 1 | 830.9552449 | 400 | .0000000 | .1666667 | 50 + 1 | 632.5682320 | 800 | .0000000 | .5000000 | 40 + 1 | 1099.1670710 | 200 | .0000000 | .5000000 | 40 + 1 | 660.5386920 | 700 | .0000000 | .5000000 | 40 + 1100 | 1554.9278118 | 100 | -2360.0000000 | .5000000 | 40 + 12 | 731.0481820 | 500 | 50.0000000 | .8333333 | 30 + 12 | 731.0481820 | 500 | 50.0000000 | .8333333 | 30 + 12 | 692.5771598 | 600 | 25.0000000 | .8333333 | 30 + 1 | 983.1994711 | 300 | .0000000 | .8333333 | 30 + 1 | 1554.9278118 | 100 | .0000000 | .9166667 | 20 + 1 | 1099.1670710 | 200 | .0000000 | 1.0000000 | 10 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn/ow_sale.qty) as int),cast (floor(ow_sale.vn/ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.qty order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range 1 preceding ), +win2 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.pn desc); -- mvd 4->6; 3,8->7; 3,8->9; 3,8->10; 3,8->11; + cn | prc | qty | vn | qty | to_char | to_char | pn | to_char | to_char | to_char +----+------+------+----+------+-------------------+-------------------+-----+-------------------+-------------------+------------------- + 1 | 0 | 1 | 10 | 1 | .0000000 | 200.0000000 | 200 | 1.0000000 | 1.0000000 | .0000000 + 1 | 0 | 1 | 20 | 1 | .0000000 | 100.0000000 | 100 | 3.0000000 | 3.0000000 | .2857143 + 1 | 0 | 1 | 30 | 1 | 1.1547005 | 300.0000000 | 300 | 4.0000000 | 4.0000000 | .4285714 + 1 | 5 | 12 | 30 | 12 | 1.1547005 | 41.0000000 | 500 | 1.0000000 | 1.0000000 | .0000000 + 3 | 5 | 12 | 30 | 12 | 1.1547005 | 41.0000000 | 500 | 2.0000000 | 2.0000000 | .5000000 + 3 | 5 | 12 | 30 | 12 | 1.1547005 | 50.0000000 | 600 | 3.0000000 | 3.0000000 | 1.0000000 + 2 | 2400 | 1100 | 40 | 1100 | .9574271 | .0000000 | 100 | 1.0000000 | 1.0000000 | .0000000 + 4 | 1 | 1 | 40 | 1 | .9574271 | 800.0000000 | 800 | 8.0000000 | 8.0000000 | 1.0000000 + 3 | 0 | 1 | 40 | 1 | .9574271 | 200.0000000 | 200 | 2.0000000 | 2.0000000 | .1428571 + 4 | 1 | 1 | 40 | 1 | .9574271 | 700.0000000 | 700 | 7.0000000 | 7.0000000 | .8571429 + 1 | 0 | 1 | 50 | 1 | .7071068 | 400.0000000 | 400 | 5.0000000 | 5.0000000 | .5714286 + 2 | 0 | 1 | 50 | 1 | .7071068 | 400.0000000 | 400 | 6.0000000 | 6.0000000 | .7142857 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ); -- mvd 6->5; + pn | qty | prc | pn | to_char | cn +-----+------+------+-----+-------------------+---- + 800 | 1 | 1 | 800 | .0000000 | 4 + 700 | 1 | 1 | 700 | .0000000 | 4 + 500 | 12 | 5 | 500 | .0000000 | 3 + 600 | 12 | 5 | 600 | .0000000 | 3 + 200 | 1 | 0 | 200 | .0000000 | 3 + 400 | 1 | 0 | 400 | .0000000 | 2 + 100 | 1100 | 2400 | 100 | .0000000 | 2 + 300 | 1 | 0 | 300 | .0000000 | 1 + 500 | 12 | 5 | 500 | .0000000 | 1 + 400 | 1 | 0 | 400 | .0000000 | 1 + 200 | 1 | 0 | 200 | .0000000 | 1 + 100 | 1 | 0 | 100 | .0000000 | 1 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ), +win2 as (order by ow_sale.pn asc); -- mvd 3->2; 5->4; 5->6; + vn | to_char | cn | to_char | pn | to_char +----+-------------------+----+-------------------+-----+------------------- + 20 | 14.8323970 | 1 | 1.0000000 | 100 | 2.0000000 + 40 | 7.0710678 | 2 | 2.0000000 | 100 | 2.0000000 + 10 | 14.8323970 | 1 | 3.0000000 | 200 | 4.0000000 + 40 | 5.7735027 | 3 | 4.0000000 | 200 | 4.0000000 + 30 | 14.8323970 | 1 | 5.0000000 | 300 | 5.0000000 + 50 | 7.0710678 | 2 | 6.0000000 | 400 | 7.0000000 + 50 | 14.8323970 | 1 | 7.0000000 | 400 | 7.0000000 + 30 | 5.7735027 | 3 | 8.0000000 | 500 | 9.0000000 + 30 | 14.8323970 | 1 | 9.0000000 | 500 | 9.0000000 + 30 | 5.7735027 | 3 | 10.0000000 | 600 | 10.0000000 + 40 | .0000000 | 4 | 11.0000000 | 700 | 11.0000000 + 40 | .0000000 | 4 | 12.0000000 | 800 | 12.0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and 2 preceding ); -- mvd 4->3; + cn | prc | to_char | pn +----+------+-------------------+----- + 1 | 0 | .0000000 | 100 + 2 | 2400 | .0000000 | 100 + 1 | 0 | 777.1103525 | 200 + 3 | 0 | 777.1103525 | 200 + 1 | 0 | 549.5000000 | 300 + 1 | 0 | 491.4877415 | 400 + 2 | 0 | 491.4877415 | 400 + 1 | 5 | 415.3829558 | 500 + 3 | 5 | 415.3829558 | 500 + 3 | 5 | 365.4477087 | 600 + 4 | 1 | 346.4136256 | 700 + 4 | 1 | 330.4044354 | 800 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.prc)) OVER(order by ow_sale.pn asc range between unbounded preceding and 3 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn/ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and 3 preceding ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.cn asc), +win3 as (order by ow_sale.vn desc), +win4 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 4->3; 4->5; 7,1,4->6; 2->8; 7->9; 2->10; + dt | vn | to_char | pn | to_char | to_char | cn | to_char | to_char | to_char +------------+----+-------------------+-----+-------------------+-------------------+----+-------------------+-------------------+------------------- + 1401-01-01 | 40 | .0000000 | 100 | .0000000 | 1.0000000 | 2 | .5000000 | 2400.0000000 | 3.0000000 + 1401-03-01 | 10 | .7071068 | 200 | 20.0000000 | 1.0000000 | 1 | 1.0000000 | .0000000 | 12.0000000 + 1401-04-01 | 40 | .7071068 | 200 | 20.0000000 | 1.0000000 | 3 | .5000000 | .0000000 | 3.0000000 + 1401-05-01 | 20 | .0000000 | 100 | .0000000 | 1.0000000 | 1 | .9166667 | .0000000 | 11.0000000 + 1401-05-02 | 30 | .9574271 | 300 | 10.0000000 | 1.0000000 | 1 | .8333333 | .0000000 | 7.0000000 + 1401-06-01 | 50 | .8944272 | 400 | 10.0000000 | .5000000 | 1 | .1666667 | .0000000 | 1.0000000 + 1401-06-01 | 50 | .8944272 | 400 | 10.0000000 | 1.0000000 | 2 | .1666667 | .0000000 | 1.0000000 + 1401-06-01 | 30 | .7867958 | 500 | 10.0000000 | .5000000 | 1 | .8333333 | 5.0000000 | 7.0000000 + 1401-06-01 | 30 | .7867958 | 500 | 10.0000000 | 1.0000000 | 3 | .8333333 | 5.0000000 | 7.0000000 + 1401-06-01 | 30 | .8660254 | 600 | 10.0000000 | 1.0000000 | 3 | .8333333 | 5.0000000 | 7.0000000 + 1401-06-01 | 40 | .9189366 | 700 | 10.0000000 | 1.0000000 | 4 | .5000000 | 1.0000000 | 3.0000000 + 1401-06-01 | 40 | 1.0954451 | 800 | 10.0000000 | 1.0000000 | 4 | .5000000 | 1.0000000 | 3.0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and current row ); -- mvd 1->5; + pn | qty | prc | prc | to_char +-----+------+------+------+------------------- + 100 | 1 | 0 | 0 | .0000000 + 100 | 1100 | 2400 | 2400 | .0000000 + 200 | 1 | 0 | 0 | 57.7350269 + 200 | 1 | 0 | 0 | 57.7350269 + 300 | 1 | 0 | 0 | 83.6660027 + 400 | 1 | 0 | 0 | 127.2418021 + 400 | 1 | 0 | 0 | 127.2418021 + 500 | 12 | 5 | 5 | 158.1138830 + 500 | 12 | 5 | 5 | 158.1138830 + 600 | 12 | 5 | 5 | 176.6981104 + 700 | 1 | 1 | 1 | 201.3590190 + 800 | 1 | 1 | 1 | 229.6241989 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and 1 following ); -- mvd 3->2; + cn | to_char | pn +----+-------------------+----- + 4 | .0000000 | 800 + 4 | .0000000 | 700 + 3 | .5773503 | 600 + 1 | .5477226 | 500 + 3 | .5477226 | 500 + 1 | .4879500 | 400 + 2 | .4879500 | 400 + 1 | .4629100 | 300 + 1 | .4216370 | 200 + 3 | .4216370 | 200 + 1 | .6513389 | 100 + 2 | .6513389 | 100 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn+ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and 0 following ), +win2 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.dt order by ow_sale.cn desc), +win4 as (order by ow_sale.ord, ow_sale.cn desc), +win5 as (order by ow_sale.vn asc); -- mvd 3->2; 5,3,1,6->4; 3,8,1,9->7; 3->10; 9->11; + qty | to_char | cn | to_char | prc | pn | to_char | dt | vn | to_char | to_char +------+-------------------+----+-------------------+------+-----+-------------------+------------+----+-------------------+------------------- + 1 | 4.9193496 | 1 | .0000000 | 0 | 200 | 1.0000000 | 1401-03-01 | 10 | .0000000 | .0833333 + 1 | 4.9193496 | 1 | .0000000 | 0 | 100 | 1.0000000 | 1401-05-01 | 20 | .0000000 | .1666667 + 12 | 346.4136256 | 3 | .0000000 | 5 | 500 | 1.0000000 | 1401-06-01 | 30 | .0000000 | .5000000 + 12 | 4.9193496 | 1 | .0000000 | 5 | 500 | 2.0000000 | 1401-06-01 | 30 | .0000000 | .5000000 + 1 | 4.9193496 | 1 | .0000000 | 0 | 300 | 1.0000000 | 1401-05-02 | 30 | .0000000 | .5000000 + 12 | 346.4136256 | 3 | .0000000 | 5 | 600 | 1.0000000 | 1401-06-01 | 30 | .0000000 | .5000000 + 1100 | 414.7102833 | 2 | .0000000 | 2400 | 100 | 1.0000000 | 1401-01-01 | 40 | .0000000 | .8333333 + 1 | 346.4136256 | 3 | 2.0000000 | 0 | 200 | 1.0000000 | 1401-04-01 | 40 | .0000000 | .8333333 + 1 | 316.4258734 | 4 | .0000000 | 1 | 700 | 1.0000000 | 1401-06-01 | 40 | .0000000 | .8333333 + 1 | 316.4258734 | 4 | .0000000 | 1 | 800 | 1.0000000 | 1401-06-01 | 40 | .0000000 | .8333333 + 1 | 414.7102833 | 2 | 2.0000000 | 0 | 400 | 1.0000000 | 1401-06-01 | 50 | .0000000 | 1.0000000 + 1 | 4.9193496 | 1 | .0000000 | 0 | 400 | 2.0000000 | 1401-06-01 | 50 | .0000000 | 1.0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and unbounded following ); -- mvd 5->4; + prc | cn | dt | to_char | pn +------+----+------------+-------------------+----- + 1 | 4 | 1401-06-01 | 229.6241989 | 800 + 1 | 4 | 1401-06-01 | 229.6241989 | 700 + 5 | 3 | 1401-06-01 | 229.6241989 | 600 + 5 | 1 | 1401-06-01 | 229.6241989 | 500 + 5 | 3 | 1401-06-01 | 229.6241989 | 500 + 0 | 1 | 1401-06-01 | 229.6241989 | 400 + 0 | 2 | 1401-06-01 | 229.6241989 | 400 + 0 | 1 | 1401-05-02 | 229.6241989 | 300 + 0 | 1 | 1401-03-01 | 229.6241989 | 200 + 0 | 3 | 1401-04-01 | 229.6241989 | 200 + 0 | 1 | 1401-05-01 | 229.6241989 | 100 + 2400 | 2 | 1401-01-01 | 229.6241989 | 100 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc); -- mvd 1->4; 6,7,8,1,9->5; 1->10; 6,7,8,1,9->11; + vn | qty | vn | to_char | to_char | prc | dt | cn | pn | to_char | to_char +----+------+----+-------------------+-------------------+------+------------+----+-----+-------------------+------------------- + 10 | 1 | 10 | 316.4258734 | .0000000 | 0 | 1401-03-01 | 1 | 200 | 1.0000000 | .0000000 + 20 | 1 | 20 | 316.4258734 | .0000000 | 0 | 1401-05-01 | 1 | 100 | 1.0000000 | .0000000 + 30 | 12 | 30 | 316.4258734 | .0000000 | 5 | 1401-06-01 | 3 | 600 | 1.0000000 | .0000000 + 30 | 1 | 30 | 316.4258734 | .0000000 | 0 | 1401-05-02 | 1 | 300 | 1.0000000 | .0000000 + 30 | 12 | 30 | 316.4258734 | .0000000 | 5 | 1401-06-01 | 1 | 500 | 1.0000000 | .0000000 + 30 | 12 | 30 | 316.4258734 | .0000000 | 5 | 1401-06-01 | 3 | 500 | 1.0000000 | .0000000 + 40 | 1 | 40 | 316.4258734 | .0000000 | 1 | 1401-06-01 | 4 | 700 | 1.0000000 | .0000000 + 40 | 1100 | 40 | 316.4258734 | .0000000 | 2400 | 1401-01-01 | 2 | 100 | 1.0000000 | .0000000 + 40 | 1 | 40 | 316.4258734 | .0000000 | 0 | 1401-04-01 | 3 | 200 | 1.0000000 | .0000000 + 40 | 1 | 40 | 316.4258734 | .0000000 | 1 | 1401-06-01 | 4 | 800 | 1.0000000 | .0000000 + 50 | 1 | 50 | 316.4258734 | .0000000 | 0 | 1401-06-01 | 2 | 400 | 1.0000000 | .0000000 + 50 | 1 | 50 | 316.4258734 | .0000000 | 0 | 1401-06-01 | 1 | 400 | 1.0000000 | .0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 0 preceding and floor(ow_sale.qty) preceding ); -- mvd 4->3; + prc | vn | to_char | cn +------+----+-------------------+---- + 0 | 20 | .0000000 | 1 + 0 | 10 | .0000000 | 1 + 0 | 30 | .0000000 | 1 + 0 | 50 | .0000000 | 1 + 5 | 30 | .0000000 | 1 + 2400 | 40 | .0000000 | 2 + 0 | 50 | .0000000 | 2 + 0 | 40 | .0000000 | 3 + 5 | 30 | .0000000 | 3 + 5 | 30 | .0000000 | 3 + 1 | 40 | .0000000 | 4 + 1 | 40 | .0000000 | 4 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.pn+ow_sale.cn) preceding and 0 preceding ), +win2 as (order by ow_sale.vn asc); -- mvd 1->4; 1->5; 1->6; 1->7; 1->8; 1->9; + vn | dt | qty | to_char | to_char | to_char | to_char | to_char | to_char +----+------------+------+-------------------+-------------------+-------------------+-------------------+-------------------+------------------- + 10 | 1401-03-01 | 1 | .0000000 | 2000.0000000 | 1.0000000 | 1.0000000 | 10.0000000 | 1.0000000 + 20 | 1401-05-01 | 1 | .0000000 | 2000.0000000 | 2.0000000 | 2.0000000 | 20.0000000 | 2.0000000 + 30 | 1401-06-01 | 12 | 1.0327956 | 2000.0000000 | 3.0000000 | 3.0000000 | 90.0000000 | 3.0000000 + 30 | 1401-05-02 | 1 | 1.0327956 | 2000.0000000 | 3.0000000 | 4.0000000 | 90.0000000 | 4.0000000 + 30 | 1401-06-01 | 12 | 1.0327956 | 2000.0000000 | 3.0000000 | 5.0000000 | 90.0000000 | 5.0000000 + 30 | 1401-06-01 | 12 | 1.0327956 | 2000.0000000 | 3.0000000 | 6.0000000 | 90.0000000 | 6.0000000 + 40 | 1401-01-01 | 1100 | 1.2516656 | 2000.0000000 | 7.0000000 | 7.0000000 | 160.0000000 | 7.0000000 + 40 | 1401-06-01 | 1 | 1.2516656 | 2000.0000000 | 7.0000000 | 8.0000000 | 160.0000000 | 8.0000000 + 40 | 1401-04-01 | 1 | 1.2516656 | 2000.0000000 | 7.0000000 | 9.0000000 | 160.0000000 | 9.0000000 + 40 | 1401-06-01 | 1 | 1.2516656 | 2000.0000000 | 7.0000000 | 10.0000000 | 160.0000000 | 10.0000000 + 50 | 1401-06-01 | 1 | 1.1934163 | 2000.0000000 | 11.0000000 | 11.0000000 | 160.0000000 | 11.0000000 + 50 | 1401-06-01 | 1 | 1.1934163 | 2000.0000000 | 11.0000000 | 12.0000000 | 160.0000000 | 12.0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.vn*ow_sale.vn) preceding and current row ); -- mvd 7->6; + prc | pn | cn | cn | pn | to_char | vn +------+-----+----+----+-----+-------------------+---- + 0 | 400 | 2 | 2 | 400 | .7071068 | 50 + 0 | 400 | 1 | 1 | 400 | .7071068 | 50 + 2400 | 100 | 2 | 2 | 100 | 979.9595230 | 40 + 1 | 700 | 4 | 4 | 700 | 979.9595230 | 40 + 0 | 200 | 3 | 3 | 200 | 979.9595230 | 40 + 1 | 800 | 4 | 4 | 800 | 979.9595230 | 40 + 5 | 600 | 3 | 3 | 600 | 758.4938365 | 30 + 0 | 300 | 1 | 1 | 300 | 758.4938365 | 30 + 5 | 500 | 1 | 1 | 500 | 758.4938365 | 30 + 5 | 500 | 3 | 3 | 500 | 758.4938365 | 30 + 0 | 100 | 1 | 1 | 100 | 723.2088721 | 20 + 0 | 200 | 1 | 1 | 200 | 692.4302558 | 10 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(order by ow_sale.vn desc range between 2 preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 2 preceding and current row ), +win2 as (order by ow_sale.vn asc); -- mvd 2->3; 2->4; 2->5; + qty | vn | to_char | to_char | to_char +------+----+-------------------+-------------------+------------------- + 1 | 50 | .0000000 | 1.0000000 | 2.0000000 + 1 | 50 | .0000000 | 1.0000000 | 2.0000000 + 1100 | 40 | 1199.6667593 | .8333333 | 4.0000000 + 1 | 40 | 1199.6667593 | .8333333 | 4.0000000 + 1 | 40 | 1199.6667593 | .8333333 | 4.0000000 + 1 | 40 | 1199.6667593 | .8333333 | 4.0000000 + 12 | 30 | 2.5000000 | .5000000 | 3.0000000 + 1 | 30 | 2.5000000 | .5000000 | 3.0000000 + 12 | 30 | 2.5000000 | .5000000 | 3.0000000 + 12 | 30 | 2.5000000 | .5000000 | 3.0000000 + 1 | 20 | .0000000 | .1666667 | 1.0000000 + 1 | 10 | .0000000 | .0833333 | 1.0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 2 preceding and 2 following ), +win2 as (order by ow_sale.cn desc); -- mvd 4->3; 4->5; + vn | vn | to_char | cn | to_char +----+----+-------------------+----+------------------- + 40 | 40 | 906.3613807 | 4 | .1666667 + 40 | 40 | 906.3613807 | 4 | .1666667 + 40 | 40 | 692.3775190 | 3 | .4166667 + 30 | 30 | 692.3775190 | 3 | .4166667 + 30 | 30 | 692.3775190 | 3 | .4166667 + 50 | 50 | 692.3775190 | 2 | .5833333 + 40 | 40 | 692.3775190 | 2 | .5833333 + 10 | 10 | 758.4232547 | 1 | 1.0000000 + 30 | 30 | 758.4232547 | 1 | 1.0000000 + 50 | 50 | 758.4232547 | 1 | 1.0000000 + 30 | 30 | 758.4232547 | 1 | 1.0000000 + 20 | 20 | 758.4232547 | 1 | 1.0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.cn) preceding and unbounded following ); -- mvd 1->5; + vn | pn | qty | pn | to_char +----+-----+------+-----+------------------- + 10 | 200 | 1 | 200 | 226.3327532 + 20 | 100 | 1 | 100 | 230.1659480 + 30 | 600 | 12 | 600 | 218.4694232 + 30 | 300 | 1 | 300 | 218.4694232 + 30 | 500 | 12 | 500 | 218.4694232 + 30 | 500 | 12 | 500 | 218.4694232 + 40 | 100 | 1100 | 100 | 273.7882393 + 40 | 700 | 1 | 700 | 273.7882393 + 40 | 200 | 1 | 200 | 273.7882393 + 40 | 800 | 1 | 800 | 273.7882393 + 50 | 400 | 1 | 400 | .0000000 + 50 | 400 | 1 | 400 | .0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and current row ); -- mvd 3->6; + qty | qty | cn | prc | vn | to_char +------+------+----+------+----+------------------- + 1 | 1 | 4 | 1 | 40 | .0000000 + 1 | 1 | 4 | 1 | 40 | .0000000 + 12 | 12 | 3 | 5 | 30 | 9.2376043 + 12 | 12 | 3 | 5 | 30 | 9.2376043 + 1 | 1 | 3 | 0 | 40 | 9.2376043 + 1 | 1 | 2 | 0 | 50 | 2474.1666274 + 1100 | 1100 | 2 | 2400 | 40 | 2474.1666274 + 1 | 1 | 1 | 0 | 30 | 7.1554175 + 12 | 12 | 1 | 5 | 30 | 7.1554175 + 1 | 1 | 1 | 0 | 50 | 7.1554175 + 1 | 1 | 1 | 0 | 10 | 7.1554175 + 1 | 1 | 1 | 0 | 20 | 7.1554175 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and current row ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 6->5; 1,6->7; 1,6->8; 1,6->9; 1,6->10; + cn | qty | prc | pn | to_char | vn | to_char | to_char | to_char | to_char +----+------+------+-----+-------------------+----+-------------------+-------------------+-------------------+------------------- + 1 | 1 | 0 | 200 | .0000000 | 10 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 0 | 100 | .0000000 | 20 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 0 | 300 | 1.1547005 | 30 | -29.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 12 | 5 | 500 | 1.1547005 | 30 | .0000000 | 2.0000000 | 2.0000000 | 2.0000000 + 3 | 12 | 5 | 500 | 1.1547005 | 30 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 3 | 12 | 5 | 600 | 1.1547005 | 30 | .0000000 | 2.0000000 | 2.0000000 | 2.0000000 + 3 | 1 | 0 | 200 | .9574271 | 40 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 2 | 1100 | 2400 | 100 | .9574271 | 40 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 4 | 1 | 1 | 700 | .9574271 | 40 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 4 | 1 | 1 | 800 | .9574271 | 40 | .0000000 | 2.0000000 | 2.0000000 | 2.0000000 + 2 | 1 | 0 | 400 | .7071068 | 50 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 0 | 400 | .7071068 | 50 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and floor(ow_sale.prc) following ); -- mvd 3->2; + dt | to_char | vn +------------+-------------------+---- + 1401-03-01 | .0000000 | 10 + 1401-05-01 | .0000000 | 20 + 1401-06-01 | 1.1547005 | 30 + 1401-05-02 | 1.1547005 | 30 + 1401-06-01 | 1.1547005 | 30 + 1401-06-01 | 1.1547005 | 30 + 1401-01-01 | 1.2110601 | 40 + 1401-06-01 | .9574271 | 40 + 1401-04-01 | .9574271 | 40 + 1401-06-01 | .9574271 | 40 + 1401-06-01 | .7071068 | 50 + 1401-06-01 | .7071068 | 50 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.vn)) OVER(order by ow_sale.vn desc range between current row and floor(ow_sale.cn+ow_sale.vn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and floor(ow_sale.cn+ow_sale.vn) following ); -- mvd 2->5; 2->6; + dt | vn | vn | pn | to_char | to_char +------------+----+----+-----+-------------------+------------------- + 1401-06-01 | 50 | 50 | 400 | 692.3775190 | 12.0000000 + 1401-06-01 | 50 | 50 | 400 | 692.3775190 | 12.0000000 + 1401-01-01 | 40 | 40 | 100 | 758.3526078 | 10.0000000 + 1401-06-01 | 40 | 40 | 700 | 758.3526078 | 10.0000000 + 1401-04-01 | 40 | 40 | 200 | 758.3526078 | 10.0000000 + 1401-06-01 | 40 | 40 | 800 | 758.3526078 | 10.0000000 + 1401-06-01 | 30 | 30 | 600 | 2.7386128 | 6.0000000 + 1401-05-02 | 30 | 30 | 300 | 2.7386128 | 6.0000000 + 1401-06-01 | 30 | 30 | 500 | 2.7386128 | 6.0000000 + 1401-06-01 | 30 | 30 | 500 | 2.7386128 | 6.0000000 + 1401-05-01 | 20 | 20 | 100 | .0000000 | 2.0000000 + 1401-03-01 | 10 | 10 | 200 | .0000000 | 1.0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and unbounded following ); -- mvd 2->3; + qty | pn | to_char +------+-----+------------------- + 1 | 100 | 1.1934163 + 1100 | 100 | 1.1934163 + 1 | 200 | 1.2516656 + 1 | 200 | 1.2516656 + 1 | 300 | 1.3024702 + 1 | 400 | 1.2724180 + 1 | 400 | 1.2724180 + 12 | 500 | 1.2247449 + 12 | 500 | 1.2247449 + 12 | 600 | .5773503 + 1 | 700 | .0000000 + 1 | 800 | .0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and unbounded following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.vn asc); -- mvd 1->3; 2->4; 6,2,7->5; 2->8; 2->9; 2->10; + cn | vn | to_char | to_char | to_char | dt | pn | to_char | to_char | to_char +----+----+-------------------+-------------------+-------------------+------------+-----+-------------------+-------------------+------------------- + 1 | 10 | 229.6241989 | .0000000 | 1.0000000 | 1401-03-01 | 200 | .0000000 | .0833333 | .0833333 + 1 | 20 | 229.6241989 | .0909091 | 1.0000000 | 1401-05-01 | 100 | .0909091 | .1666667 | .1666667 + 1 | 30 | 229.6241989 | .1818182 | 1.0000000 | 1401-05-02 | 300 | .1818182 | .5000000 | .5000000 + 3 | 30 | 230.2172887 | .1818182 | 1.0000000 | 1401-06-01 | 500 | .1818182 | .5000000 | .5000000 + 1 | 30 | 229.6241989 | .1818182 | 1.0000000 | 1401-06-01 | 500 | .1818182 | .5000000 | .5000000 + 3 | 30 | 230.2172887 | .1818182 | 1.0000000 | 1401-06-01 | 600 | .1818182 | .5000000 | .5000000 + 4 | 40 | 70.7106781 | .5454545 | 1.0000000 | 1401-06-01 | 800 | .5454545 | .8333333 | .8333333 + 2 | 40 | 256.3479778 | .5454545 | 1.0000000 | 1401-01-01 | 100 | .5454545 | .8333333 | .8333333 + 3 | 40 | 230.2172887 | .5454545 | 1.0000000 | 1401-04-01 | 200 | .5454545 | .8333333 | .8333333 + 4 | 40 | 70.7106781 | .5454545 | 1.0000000 | 1401-06-01 | 700 | .5454545 | .8333333 | .8333333 + 1 | 50 | 229.6241989 | .9090909 | 1.0000000 | 1401-06-01 | 400 | .9090909 | 1.0000000 | 1.0000000 + 2 | 50 | 256.3479778 | .9090909 | 1.0000000 | 1401-06-01 | 400 | .9090909 | 1.0000000 | 1.0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 0 following and 0 following ); -- mvd 3->2; + vn | to_char | cn +----+-------------------+---- + 40 | .0000000 | 4 + 40 | .0000000 | 4 + 30 | .0000000 | 3 + 40 | .0000000 | 3 + 30 | .0000000 | 3 + 40 | .0000000 | 2 + 50 | .0000000 | 2 + 30 | .0000000 | 1 + 50 | .0000000 | 1 + 30 | .0000000 | 1 + 10 | .0000000 | 1 + 20 | .0000000 | 1 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 3 following and floor(ow_sale.vn+ow_sale.qty) following ), +win2 as (order by ow_sale.pn asc); -- mvd 5->4; 1->6; + pn | qty | dt | to_char | vn | to_char +-----+------+------------+-------------------+----+------------------- + 100 | 1 | 1401-05-01 | .0000000 | 20 | 1.0000000 + 100 | 1100 | 1401-01-01 | 2.7386128 | 40 | 1.0000000 + 200 | 1 | 1401-03-01 | .0000000 | 10 | 2.0000000 + 200 | 1 | 1401-04-01 | 2.7386128 | 40 | 2.0000000 + 300 | 1 | 1401-05-02 | .0000000 | 30 | 3.0000000 + 400 | 1 | 1401-06-01 | 758.3526078 | 50 | 4.0000000 + 400 | 1 | 1401-06-01 | 758.3526078 | 50 | 4.0000000 + 500 | 12 | 1401-06-01 | .0000000 | 30 | 5.0000000 + 500 | 12 | 1401-06-01 | .0000000 | 30 | 5.0000000 + 600 | 12 | 1401-06-01 | .0000000 | 30 | 6.0000000 + 700 | 1 | 1401-06-01 | 2.7386128 | 40 | 7.0000000 + 800 | 1 | 1401-06-01 | 2.7386128 | 40 | 8.0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.qty/ow_sale.cn) following and unbounded following ); -- mvd 8->7; + pn | dt | cn | pn | cn | qty | to_char | vn +-----+------------+----+-----+----+------+-------------------+---- + 200 | 1401-03-01 | 1 | 200 | 1 | 1 | 32617.5245703 | 10 + 100 | 1401-05-01 | 1 | 100 | 1 | 1 | 34128.8734065 | 20 + 600 | 1401-06-01 | 3 | 600 | 3 | 12 | 44703.7246770 | 30 + 300 | 1401-05-02 | 1 | 300 | 1 | 1 | 44703.7246770 | 30 + 500 | 1401-06-01 | 1 | 500 | 1 | 12 | .0000000 | 30 + 500 | 1401-06-01 | 3 | 500 | 3 | 12 | 44703.7246770 | 30 + 100 | 1401-01-01 | 2 | 100 | 2 | 1100 | .0000000 | 40 + 700 | 1401-06-01 | 4 | 700 | 4 | 1 | 44703.7246770 | 40 + 200 | 1401-04-01 | 3 | 200 | 3 | 1 | 44703.7246770 | 40 + 800 | 1401-06-01 | 4 | 800 | 4 | 1 | 44703.7246770 | 40 + 400 | 1401-06-01 | 2 | 400 | 2 | 1 | .0000000 | 50 + 400 | 1401-06-01 | 1 | 400 | 1 | 1 | .0000000 | 50 +(12 rows) + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn+ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn-ow_sale.qty) as int),cast (floor(ow_sale.pn+ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.cn) following and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 4->3; 4,6,2,1->5; 2->7; 2->8; 4->9; + qty | vn | to_char | cn | to_char | dt | to_char | to_char | to_char +------+----+-------------------+----+-------------------+------------+-------------------+-------------------+------------------- + 1100 | 40 | .0000000 | 2 | .0000000 | 1401-01-01 | .0000000 | .0833333 | 8.0000000 + 1 | 10 | 906.3613807 | 1 | .0000000 | 1401-03-01 | .0000000 | .1666667 | 8.0000000 + 1 | 40 | .0000000 | 3 | .0000000 | 1401-04-01 | .0000000 | .2500000 | .0000000 + 1 | 20 | 906.3613807 | 1 | .0000000 | 1401-05-01 | .0000000 | .3333333 | 8.0000000 + 1 | 30 | 906.3613807 | 1 | .0000000 | 1401-05-02 | .0000000 | .4166667 | 8.0000000 + 1 | 50 | 906.3613807 | 1 | .0000000 | 1401-06-01 | .0000000 | .5000000 | 8.0000000 + 1 | 50 | .0000000 | 2 | .0000000 | 1401-06-01 | .0000000 | .5833333 | 8.0000000 + 12 | 30 | 906.3613807 | 1 | .0000000 | 1401-06-01 | .0000000 | .6666667 | 8.0000000 + 12 | 30 | .0000000 | 3 | .0000000 | 1401-06-01 | .0000000 | .7500000 | .0000000 + 12 | 30 | .0000000 | 3 | .0000000 | 1401-06-01 | .0000000 | .8333333 | .0000000 + 1 | 40 | .0000000 | 4 | .0000000 | 1401-06-01 | .0000000 | .9166667 | .0000000 + 1 | 40 | .0000000 | 4 | .0000000 | 1401-06-01 | .0000000 | 1.0000000 | .0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc rows unbounded preceding ); -- mvd 5,1->4; + pn | dt | qty | to_char | vn +-----+------------+------+-------------------+---- + 100 | 1401-01-01 | 1100 | .0000000 | 40 + 200 | 1401-03-01 | 1 | 21.2132034 | 10 + 200 | 1401-04-01 | 1 | 17.3205081 | 40 + 100 | 1401-05-01 | 1 | 15.0000000 | 20 + 300 | 1401-05-02 | 1 | 13.0384048 | 30 + 400 | 1401-06-01 | 1 | 14.7196014 | 50 + 400 | 1401-06-01 | 1 | 15.1185789 | 50 + 500 | 1401-06-01 | 12 | 14.0788595 | 30 + 500 | 1401-06-01 | 12 | 13.2287566 | 30 + 600 | 1401-06-01 | 12 | 12.5166556 | 30 + 700 | 1401-06-01 | 1 | 12.0604538 | 40 + 800 | 1401-06-01 | 1 | 11.6450015 | 40 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn asc rows unbounded preceding ), +win2 as (order by ow_sale.cn asc); -- mvd 3,4->2; 3->5; 3->6; + qty | to_char | cn | pn | to_char | to_char +------+-------------------+----+-----+-------------------+------------------- + 1 | 14.7196014 | 1 | 400 | 1.0000000 | 1.0000000 + 1 | 21.2132034 | 1 | 200 | 2.0000000 | 1.0000000 + 12 | 14.0788595 | 1 | 500 | 3.0000000 | 1.0000000 + 1 | 15.0000000 | 1 | 100 | 4.0000000 | 1.0000000 + 1 | 13.0384048 | 1 | 300 | 5.0000000 | 1.0000000 + 1100 | .0000000 | 2 | 100 | 6.0000000 | 1.0000000 + 1 | 15.1185789 | 2 | 400 | 7.0000000 | 1.0000000 + 1 | 17.3205081 | 3 | 200 | 8.0000000 | 1.0000000 + 12 | 13.2287566 | 3 | 500 | 9.0000000 | 1.0000000 + 12 | 12.5166556 | 3 | 600 | 10.0000000 | 1.0000000 + 1 | 12.0604538 | 4 | 700 | 11.0000000 | 1.0000000 + 1 | 11.6450015 | 4 | 800 | 12.0000000 | 1.0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc rows 4 preceding ); -- mvd 3,4->2; + qty | to_char | cn | pn +------+-------------------+----+----- + 1100 | .0000000 | 2 | 100 + 1 | .7071068 | 1 | 200 + 1 | 1.0000000 | 3 | 200 + 1 | .9574271 | 1 | 100 + 1 | .8944272 | 1 | 300 + 1 | .8944272 | 1 | 400 + 1 | .8944272 | 2 | 400 + 12 | .4472136 | 1 | 500 + 12 | .8944272 | 3 | 500 + 12 | 1.0000000 | 3 | 600 + 1 | 1.1401754 | 4 | 700 + 1 | 1.2247449 | 4 | 800 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn+ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn*ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.cn asc rows 1 preceding ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.pn asc), +win4 as (partition by ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc); -- mvd 2,4->3; 2,4->5; 7->6; 9,10,7,4->8; 7->11; 9,7,4->12; + qty | cn | to_char | pn | to_char | to_char | vn | to_char | prc | dt | to_char | to_char +------+----+-------------------+-----+-------------------+-------------------+----+-------------------+------+------------+-------------------+------------------- + 1 | 1 | 31105.6273044 | 200 | 10.0000000 | 1.0000000 | 10 | .0000000 | 0 | 1401-03-01 | 1.0000000 | .0000000 + 1 | 1 | 14.1421356 | 100 | 20.0000000 | 2.0000000 | 20 | .0000000 | 0 | 1401-05-01 | 2.0000000 | .0000000 + 12 | 3 | .0000000 | 500 | 30.0000000 | 3.0000000 | 30 | .0000000 | 5 | 1401-06-01 | 6.0000000 | .0000000 + 12 | 1 | 219.2031022 | 500 | 30.0000000 | 3.0000000 | 30 | .0000000 | 5 | 1401-06-01 | 6.0000000 | .0000000 + 1 | 1 | 7.0710678 | 300 | 20.0000000 | 3.0000000 | 30 | .0000000 | 0 | 1401-05-02 | 6.0000000 | .0000000 + 12 | 3 | .0000000 | 600 | 30.0000000 | 3.0000000 | 30 | 1.0000000 | 5 | 1401-06-01 | 6.0000000 | .0000000 + 1100 | 2 | .0000000 | 100 | 40.0000000 | 4.0000000 | 40 | .0000000 | 2400 | 1401-01-01 | 10.0000000 | .0000000 + 1 | 3 | 21.2132034 | 200 | 10.0000000 | 4.0000000 | 40 | .0000000 | 0 | 1401-04-01 | 10.0000000 | .0000000 + 1 | 4 | 226.2741700 | 700 | 30.0000000 | 4.0000000 | 40 | .0000000 | 1 | 1401-06-01 | 10.0000000 | .0000000 + 1 | 4 | .0000000 | 800 | 40.0000000 | 4.0000000 | 40 | 1.0000000 | 1 | 1401-06-01 | 10.0000000 | .0000000 + 1 | 2 | .0000000 | 400 | 50.0000000 | 5.0000000 | 50 | .0000000 | 0 | 1401-06-01 | 12.0000000 | .0000000 + 1 | 1 | 14.1421356 | 400 | 30.0000000 | 5.0000000 | 50 | .0000000 | 0 | 1401-06-01 | 12.0000000 | .0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows current row ); -- mvd 4->3; + cn | prc | to_char | vn +----+------+-------------------+---- + 2 | 2400 | .0000000 | 40 + 1 | 0 | .0000000 | 10 + 3 | 0 | .0000000 | 40 + 1 | 0 | .0000000 | 20 + 1 | 0 | .0000000 | 30 + 1 | 0 | .0000000 | 50 + 2 | 0 | .0000000 | 50 + 1 | 5 | .0000000 | 30 + 3 | 5 | .0000000 | 30 + 3 | 5 | .0000000 | 30 + 4 | 1 | .0000000 | 40 + 4 | 1 | .0000000 | 40 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.pn asc rows current row ), +win2 as (order by ow_sale.cn desc); -- mvd 7,1,2->6; 7->8; 7,1,2->9; + vn | pn | pn | qty | dt | to_char | cn | to_char | to_char +----+-----+-----+------+------------+-------------------+----+-------------------+------------------- + 40 | 800 | 800 | 1 | 1401-06-01 | .0000000 | 4 | .0000000 | 800.0000000 + 40 | 700 | 700 | 1 | 1401-06-01 | .0000000 | 4 | .0000000 | 700.0000000 + 30 | 500 | 500 | 12 | 1401-06-01 | .0000000 | 3 | .1818182 | 500.0000000 + 40 | 200 | 200 | 1 | 1401-04-01 | .0000000 | 3 | .1818182 | 200.0000000 + 30 | 600 | 600 | 12 | 1401-06-01 | .0000000 | 3 | .1818182 | 600.0000000 + 50 | 400 | 400 | 1 | 1401-06-01 | .0000000 | 2 | .4545455 | 400.0000000 + 40 | 100 | 100 | 1100 | 1401-01-01 | .0000000 | 2 | .4545455 | 100.0000000 + 30 | 500 | 500 | 12 | 1401-06-01 | .0000000 | 1 | .6363636 | 500.0000000 + 50 | 400 | 400 | 1 | 1401-06-01 | .0000000 | 1 | .6363636 | 400.0000000 + 30 | 300 | 300 | 1 | 1401-05-02 | .0000000 | 1 | .6363636 | 300.0000000 + 20 | 100 | 100 | 1 | 1401-05-01 | .0000000 | 1 | .6363636 | 100.0000000 + 10 | 200 | 200 | 1 | 1401-03-01 | .0000000 | 1 | .6363636 | 200.0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.vn asc rows between unbounded preceding and floor(ow_sale.pn) preceding ); -- mvd 4,1->3; + pn | qty | to_char | vn +-----+------+-------------------+---- + 100 | 1100 | .0000000 | 40 + 200 | 1 | .0000000 | 10 + 200 | 1 | .0000000 | 40 + 100 | 1 | .0000000 | 20 + 300 | 1 | .0000000 | 30 + 400 | 1 | .0000000 | 50 + 400 | 1 | .0000000 | 50 + 500 | 12 | .0000000 | 30 + 500 | 12 | .0000000 | 30 + 600 | 12 | .0000000 | 30 + 700 | 1 | .0000000 | 40 + 800 | 1 | .0000000 | 40 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc*ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and 4 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and 4 preceding ), +win2 as (order by ow_sale.vn desc); -- mvd 1->2; 1->3; 1->4; 6->5; + cn | to_char | to_char | to_char | to_char | vn +----+-------------------+-------------------+-------------------+-------------------+---- + 2 | 57.7436865 | .0000000 | 102.0000000 | .1666667 | 50 + 1 | 70.0035713 | .0000000 | 102.0000000 | .1666667 | 50 + 4 | 148.6145542 | .0000000 | 101.0000000 | .5000000 | 40 + 3 | .0000000 | .0000000 | .0000000 | .5000000 | 40 + 4 | 127.1506418 | .0000000 | 101.0000000 | .5000000 | 40 + 2 | .0000000 | .0000000 | .0000000 | .5000000 | 40 + 1 | 58.0308826 | .0000000 | 101.0000000 | .8333333 | 30 + 3 | 83.5511819 | .0000000 | 101.0000000 | .8333333 | 30 + 3 | 116.6506179 | .0000000 | 101.0000000 | .8333333 | 30 + 1 | .0000000 | 2640000.0000000 | 102.0000000 | .8333333 | 30 + 1 | .0000000 | .0000000 | .0000000 | .9166667 | 20 + 1 | .0000000 | .0000000 | .0000000 | 1.0000000 | 10 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and current row ); -- mvd 5->4; + dt | qty | cn | to_char | vn +------------+------+----+-------------------+---- + 1401-01-01 | 1100 | 2 | .0000000 | 40 + 1401-03-01 | 1 | 1 | 1626.3455967 | 10 + 1401-04-01 | 1 | 3 | 1327.9056191 | 40 + 1401-05-01 | 1 | 1 | 1167.6186592 | 20 + 1401-05-02 | 1 | 1 | 1031.0189135 | 30 + 1401-06-01 | 1 | 1 | 928.2600210 | 50 + 1401-06-01 | 1 | 2 | 851.3294925 | 50 + 1401-06-01 | 12 | 1 | 788.6943890 | 30 + 1401-06-01 | 12 | 3 | 738.1315563 | 30 + 1401-06-01 | 12 | 3 | 696.0166425 | 30 + 1401-06-01 | 1 | 4 | 661.4528087 | 40 + 1401-06-01 | 1 | 4 | 633.7946984 | 40 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.pn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.vn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc); -- mvd 6,1->5; 8,6,1,9,2->7; 6,1->10; 8,6,1,9,2->11; + vn | pn | pn | pn | to_char | cn | to_char | dt | qty | to_char | to_char +----+-----+-----+-----+-------------------+----+-------------------+------------+------+-------------------+------------------- + 40 | 100 | 100 | 100 | .0000000 | 2 | .0000000 | 1401-01-01 | 1100 | 1100.0000000 | 1.0000000 + 10 | 200 | 200 | 200 | .7071068 | 1 | .0000000 | 1401-03-01 | 1 | 1100.0000000 | 1.0000000 + 40 | 200 | 200 | 200 | 1.0000000 | 3 | .0000000 | 1401-04-01 | 1 | 1100.0000000 | 1.0000000 + 20 | 100 | 100 | 100 | .9574271 | 1 | .0000000 | 1401-05-01 | 1 | 1100.0000000 | 1.0000000 + 30 | 300 | 300 | 300 | .8944272 | 1 | .0000000 | 1401-05-02 | 1 | 1100.0000000 | 1.0000000 + 50 | 400 | 400 | 400 | .8366600 | 1 | .0000000 | 1401-06-01 | 1 | 1100.0000000 | 1.0000000 + 50 | 400 | 400 | 400 | .7867958 | 2 | .0000000 | 1401-06-01 | 1 | 1100.0000000 | 1.0000000 + 30 | 500 | 500 | 500 | .7559289 | 1 | .0000000 | 1401-06-01 | 12 | 1100.0000000 | 1.0000000 + 30 | 500 | 500 | 500 | .8660254 | 3 | .0000000 | 1401-06-01 | 12 | 1100.0000000 | 1.0000000 + 30 | 600 | 600 | 600 | .9189366 | 3 | .0000000 | 1401-06-01 | 12 | 1100.0000000 | 2.0000000 + 40 | 700 | 700 | 700 | 1.0954451 | 4 | .0000000 | 1401-06-01 | 1 | 1100.0000000 | 1.0000000 + 40 | 800 | 800 | 800 | 1.1934163 | 4 | .0000000 | 1401-06-01 | 1 | 1100.0000000 | 2.0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows between unbounded preceding and 4 following ); -- mvd 3,4->2; + qty | to_char | cn | vn +------+-------------------+----+---- + 1100 | 491.4877415 | 2 | 40 + 1 | 448.6648712 | 1 | 10 + 1 | 415.3829558 | 3 | 40 + 1 | 388.0186851 | 1 | 20 + 1 | 365.4477087 | 1 | 30 + 1 | 346.4136256 | 1 | 50 + 1 | 330.4044354 | 2 | 50 + 12 | 316.4258734 | 1 | 30 + 12 | 316.4258734 | 3 | 30 + 12 | 316.4258734 | 3 | 30 + 1 | 316.4258734 | 4 | 40 + 1 | 316.4258734 | 4 | 40 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 4 following ), +win2 as (partition by ow_sale.qty order by ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc); -- mvd 3->2; 5,1->4; 5,1->6; 3,1->7; 3,1->8; + pn | to_char | vn | to_char | qty | to_char | to_char | to_char +-----+-------------------+----+-------------------+------+-------------------+-------------------+------------------- + 100 | 1073.3126292 | 40 | 1.0000000 | 1100 | .0000000 | .0000000 | 1.0000000 + 200 | 979.7958971 | 10 | 6.0000000 | 1 | .7142857 | .0000000 | 1.0000000 + 200 | 907.1147352 | 40 | 7.0000000 | 1 | .7142857 | .0000000 | 1.0000000 + 100 | 848.2774037 | 20 | 8.0000000 | 1 | 1.0000000 | .0000000 | 1.0000000 + 300 | 799.5862645 | 30 | 5.0000000 | 1 | .5714286 | .0000000 | 1.0000000 + 400 | 758.4232547 | 50 | 4.0000000 | 1 | .2857143 | .0000000 | .5000000 + 400 | 723.1482936 | 50 | 3.0000000 | 1 | .2857143 | .0000000 | 1.0000000 + 500 | 692.3775190 | 30 | 2.0000000 | 12 | .5000000 | .0000000 | .5000000 + 500 | 692.3775190 | 30 | 3.0000000 | 12 | .5000000 | .0000000 | 1.0000000 + 600 | 692.3775190 | 30 | 1.0000000 | 12 | .0000000 | .0000000 | 1.0000000 + 700 | 692.3775190 | 40 | 2.0000000 | 1 | .1428571 | .0000000 | 1.0000000 + 800 | 692.3775190 | 40 | 1.0000000 | 1 | .0000000 | .0000000 | 1.0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between unbounded preceding and unbounded following ); -- mvd 2->4; + cn | vn | qty | to_char +----+----+------+------------------- + 2 | 40 | 1100 | 1.1934163 + 1 | 10 | 1 | 1.1934163 + 3 | 40 | 1 | 1.1934163 + 1 | 20 | 1 | 1.1934163 + 1 | 30 | 1 | 1.1934163 + 1 | 50 | 1 | 1.1934163 + 2 | 50 | 1 | 1.1934163 + 1 | 30 | 12 | 1.1934163 + 3 | 30 | 12 | 1.1934163 + 3 | 30 | 12 | 1.1934163 + 4 | 40 | 1 | 1.1934163 + 4 | 40 | 1 | 1.1934163 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc rows between unbounded preceding and unbounded following ); -- mvd 2,5->4; 2,5->6; + qty | cn | vn | to_char | pn | to_char +------+----+----+-------------------+-----+------------------- + 1100 | 2 | 40 | 316.3770765 | 100 | 1.0000000 + 1 | 1 | 10 | 316.3770765 | 200 | 1.0000000 + 1 | 3 | 40 | 316.3770765 | 200 | 1.0000000 + 1 | 1 | 20 | 316.3770765 | 100 | 1.0000000 + 1 | 1 | 30 | 316.3770765 | 300 | 1.0000000 + 1 | 1 | 50 | 316.3770765 | 400 | 1.0000000 + 1 | 2 | 50 | 316.3770765 | 400 | 1.0000000 + 12 | 1 | 30 | 316.3770765 | 500 | 1.0000000 + 12 | 3 | 30 | 316.3770765 | 500 | 1.0000000 + 12 | 3 | 30 | 316.3770765 | 600 | 1.0000000 + 1 | 4 | 40 | 316.3770765 | 700 | 1.0000000 + 1 | 4 | 40 | 316.3770765 | 800 | 1.0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.pn-ow_sale.cn) preceding and 4 preceding ); -- mvd 2->5; + dt | pn | pn | vn | to_char +------------+-----+-----+----+------------------- + 1401-01-01 | 100 | 100 | 40 | .0000000 + 1401-03-01 | 200 | 200 | 10 | .0000000 + 1401-04-01 | 200 | 200 | 40 | .0000000 + 1401-05-01 | 100 | 100 | 20 | .0000000 + 1401-05-02 | 300 | 300 | 30 | .0000000 + 1401-06-01 | 400 | 400 | 50 | 77640.3245743 + 1401-06-01 | 400 | 400 | 50 | 63393.0595570 + 1401-06-01 | 500 | 500 | 30 | 54916.6868993 + 1401-06-01 | 500 | 500 | 30 | 49104.1036982 + 1401-06-01 | 600 | 600 | 30 | 44809.4484084 + 1401-06-01 | 700 | 700 | 40 | 41475.4488480 + 1401-06-01 | 800 | 800 | 40 | 38559.3790703 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty*ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win5),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.vn desc rows between 0 preceding and 3 preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc), +win4 as (order by ow_sale.ord, ow_sale.cn asc), +win5 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.qty order by ow_sale.cn asc); -- mvd 3,4,1->2; 4->5; 4->6; 3->7; 4->8; 3,10,11->9; + pn | to_char | cn | vn | to_char | to_char | to_char | to_char | to_char | dt | qty +-----+-------------------+----+----+-------------------+-------------------+-------------------+-------------------+-------------------+------------+------ + 400 | .0000000 | 2 | 50 | 1.0000000 | .0000000 | 360.0000000 | 2.0000000 | 2.0000000 | 1401-06-01 | 1 + 400 | .0000000 | 1 | 50 | 1.0000000 | .0000000 | 50.0000000 | 2.0000000 | 1.0000000 | 1401-06-01 | 1 + 800 | .0000000 | 4 | 40 | 2.0000000 | .0000000 | .0000000 | 6.0000000 | 3.0000000 | 1401-06-01 | 1 + 200 | .0000000 | 3 | 40 | 2.0000000 | .0000000 | 20.0000000 | 6.0000000 | 1.0000000 | 1401-04-01 | 1 + 700 | .0000000 | 4 | 40 | 2.0000000 | .0000000 | 40.0000000 | 6.0000000 | 3.0000000 | 1401-06-01 | 1 + 100 | .0000000 | 2 | 40 | 2.0000000 | .0000000 | .0000000 | 6.0000000 | 1.0000000 | 1401-01-01 | 1100 + 500 | .0000000 | 1 | 30 | 3.0000000 | .0000000 | .0000000 | 10.0000000 | 1.0000000 | 1401-06-01 | 12 + 500 | .0000000 | 3 | 30 | 3.0000000 | .0000000 | .0000000 | 10.0000000 | 2.0000000 | 1401-06-01 | 12 + 600 | .0000000 | 3 | 30 | 3.0000000 | .0000000 | .0000000 | 10.0000000 | 2.0000000 | 1401-06-01 | 12 + 300 | .0000000 | 1 | 30 | 3.0000000 | .0000000 | 50.0000000 | 10.0000000 | 1.0000000 | 1401-05-02 | 1 + 100 | .0000000 | 1 | 20 | 4.0000000 | .0000000 | 30.0000000 | 11.0000000 | 1.0000000 | 1401-05-01 | 1 + 200 | .0000000 | 1 | 10 | 5.0000000 | .0000000 | 40.0000000 | 12.0000000 | 1.0000000 | 1401-03-01 | 1 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between floor(ow_sale.vn-ow_sale.vn) preceding and current row ); -- mvd 5,1->4; + vn | dt | dt | to_char | cn +----+------------+------------+-------------------+---- + 40 | 1401-01-01 | 1401-01-01 | .0000000 | 2 + 10 | 1401-03-01 | 1401-03-01 | .0000000 | 1 + 40 | 1401-04-01 | 1401-04-01 | .0000000 | 3 + 20 | 1401-05-01 | 1401-05-01 | .0000000 | 1 + 30 | 1401-05-02 | 1401-05-02 | .0000000 | 1 + 50 | 1401-06-01 | 1401-06-01 | .0000000 | 1 + 50 | 1401-06-01 | 1401-06-01 | .0000000 | 2 + 30 | 1401-06-01 | 1401-06-01 | .0000000 | 1 + 30 | 1401-06-01 | 1401-06-01 | .0000000 | 3 + 30 | 1401-06-01 | 1401-06-01 | .0000000 | 3 + 40 | 1401-06-01 | 1401-06-01 | .0000000 | 4 + 40 | 1401-06-01 | 1401-06-01 | .0000000 | 4 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between 2 preceding and current row ), +win2 as (partition by ow_sale.cn,ow_sale.prc order by ow_sale.pn asc), +win3 as (order by ow_sale.cn desc); -- mvd 3->5; 7,8,3->6; 8->9; + vn | qty | pn | qty | to_char | to_char | prc | cn | to_char +----+------+-----+------+-------------------+-------------------+------+----+------------------- + 40 | 1 | 800 | 1 | .0000000 | 2.0000000 | 1 | 4 | 1.0000000 + 40 | 1 | 700 | 1 | .0000000 | 1.0000000 | 1 | 4 | 1.0000000 + 30 | 12 | 500 | 12 | .0000000 | 1.0000000 | 5 | 3 | 3.0000000 + 40 | 1 | 200 | 1 | .0000000 | 1.0000000 | 0 | 3 | 3.0000000 + 30 | 12 | 600 | 12 | .0000000 | 2.0000000 | 5 | 3 | 3.0000000 + 50 | 1 | 400 | 1 | .0000000 | 1.0000000 | 0 | 2 | 6.0000000 + 40 | 1100 | 100 | 1100 | .0000000 | 1.0000000 | 2400 | 2 | 6.0000000 + 30 | 12 | 500 | 12 | .0000000 | 1.0000000 | 5 | 1 | 8.0000000 + 50 | 1 | 400 | 1 | .0000000 | 4.0000000 | 0 | 1 | 8.0000000 + 30 | 1 | 300 | 1 | .0000000 | 3.0000000 | 0 | 1 | 8.0000000 + 20 | 1 | 100 | 1 | .0000000 | 1.0000000 | 0 | 1 | 8.0000000 + 10 | 1 | 200 | 1 | .0000000 | 2.0000000 | 0 | 1 | 8.0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.vn asc rows between floor(ow_sale.pn-ow_sale.cn) preceding and floor(ow_sale.vn) following ); -- mvd 3,4->2; + qty | to_char | cn | vn +------+-------------------+----+---- + 1100 | 692.3775190 | 2 | 40 + 1 | 692.3775190 | 1 | 10 + 1 | 692.3775190 | 3 | 40 + 1 | 692.3775190 | 1 | 20 + 1 | 692.3775190 | 1 | 30 + 1 | 692.3775190 | 1 | 50 + 1 | 692.3775190 | 2 | 50 + 12 | 692.3775190 | 1 | 30 + 12 | 692.3775190 | 3 | 30 + 12 | 692.3775190 | 3 | 30 + 1 | 692.3775190 | 4 | 40 + 1 | 692.3775190 | 4 | 40 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.prc) preceding and 1 following ), +win2 as (order by ow_sale.vn asc); -- mvd 1->5; 1->6; 1->7; 2->8; 2->9; + pn | vn | pn | prc | to_char | to_char | to_char | to_char | to_char +-----+----+-----+------+-------------------+-------------------+-------------------+-------------------+------------------- + 200 | 10 | 200 | 0 | 1.4142136 | 2.0000000 | 3.0000000 | 1.0000000 | 1.0000000 + 100 | 20 | 100 | 0 | .0000000 | 2.0000000 | 1.0000000 | 2.0000000 | 2.0000000 + 500 | 30 | 500 | 5 | .9511897 | 7.0000000 | 3.0000000 | 3.0000000 | 3.0000000 + 500 | 30 | 500 | 5 | .9511897 | 7.0000000 | 3.0000000 | 4.0000000 | 4.0000000 + 300 | 30 | 300 | 0 | .0000000 | 2.0000000 | 1.0000000 | 5.0000000 | 5.0000000 + 600 | 30 | 600 | 5 | 1.2149858 | 7.0000000 | 4.0000000 | 6.0000000 | 6.0000000 + 100 | 40 | 100 | 2400 | .7071068 | 2.0000000 | 2.0000000 | 7.0000000 | 7.0000000 + 200 | 40 | 200 | 0 | 1.4142136 | 2.0000000 | 3.0000000 | 8.0000000 | 8.0000000 + 700 | 40 | 700 | 1 | .5773503 | 3.0000000 | 4.0000000 | 9.0000000 | 9.0000000 + 800 | 40 | 800 | 1 | .0000000 | 2.0000000 | 4.0000000 | 10.0000000 | 10.0000000 + 400 | 50 | 400 | 0 | .7071068 | 2.0000000 | 2.0000000 | 11.0000000 | 11.0000000 + 400 | 50 | 400 | 0 | .7071068 | 2.0000000 | 2.0000000 | 12.0000000 | 12.0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows between 0 preceding and unbounded following ); -- mvd 4->6; + cn | cn | prc | pn | cn | to_char +----+----+------+-----+----+------------------- + 2 | 2 | 2400 | 100 | 2 | 229.6241989 + 1 | 1 | 0 | 200 | 1 | 219.5035721 + 3 | 3 | 0 | 200 | 3 | 217.3067468 + 1 | 1 | 0 | 100 | 1 | 210.8185107 + 1 | 1 | 0 | 300 | 1 | 166.9045921 + 1 | 1 | 0 | 400 | 1 | 151.1857892 + 2 | 2 | 0 | 400 | 2 | 147.1960144 + 1 | 1 | 5 | 500 | 1 | 130.3840481 + 3 | 3 | 5 | 500 | 3 | 129.0994449 + 3 | 3 | 5 | 600 | 3 | 100.0000000 + 4 | 4 | 1 | 700 | 4 | 70.7106781 + 4 | 4 | 1 | 800 | 4 | .0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.cn asc rows between 4 preceding and unbounded following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.pn asc); -- mvd 3->2; 1->4; 6,7->5; 3->8; + vn | to_char | cn | to_char | to_char | qty | pn | to_char +----+-------------------+----+-------------------+-------------------+------+-----+------------------- + 10 | 230.4177366 | 1 | 1.0000000 | 203.0000000 | 1 | 200 | -60.0000000 + 20 | 230.4177366 | 1 | 2.0000000 | 301.0000000 | 1 | 100 | -60.0000000 + 30 | 168.0399081 | 3 | 3.0000000 | .0000000 | 12 | 500 | -270.0000000 + 30 | 211.9133077 | 1 | 3.0000000 | .0000000 | 12 | 500 | -80.0000000 + 30 | 230.4177366 | 1 | 3.0000000 | 401.0000000 | 1 | 300 | -60.0000000 + 30 | 152.2582393 | 3 | 3.0000000 | .0000000 | 12 | 600 | -350.0000000 + 40 | 230.4177366 | 2 | 4.0000000 | .0000000 | 1100 | 100 | -60.0000000 + 40 | 230.4177366 | 3 | 4.0000000 | 101.0000000 | 1 | 200 | -60.0000000 + 40 | 148.1261849 | 4 | 4.0000000 | 804.0000000 | 1 | 700 | -350.0000000 + 40 | 131.3449656 | 4 | 4.0000000 | .0000000 | 1 | 800 | -470.0000000 + 50 | 218.1523678 | 2 | 5.0000000 | 704.0000000 | 1 | 400 | -80.0000000 + 50 | 220.3916349 | 1 | 5.0000000 | 402.0000000 | 1 | 400 | -80.0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between current row and current row ); -- mvd 3->7; + qty | dt | vn | vn | qty | prc | to_char +------+------------+----+----+------+------+------------------- + 1100 | 1401-01-01 | 40 | 40 | 1100 | 2400 | .0000000 + 1 | 1401-03-01 | 10 | 10 | 1 | 0 | .0000000 + 1 | 1401-04-01 | 40 | 40 | 1 | 0 | .0000000 + 1 | 1401-05-01 | 20 | 20 | 1 | 0 | .0000000 + 1 | 1401-05-02 | 30 | 30 | 1 | 0 | .0000000 + 1 | 1401-06-01 | 50 | 50 | 1 | 0 | .0000000 + 1 | 1401-06-01 | 50 | 50 | 1 | 0 | .0000000 + 12 | 1401-06-01 | 30 | 30 | 12 | 5 | .0000000 + 12 | 1401-06-01 | 30 | 30 | 12 | 5 | .0000000 + 12 | 1401-06-01 | 30 | 30 | 12 | 5 | .0000000 + 1 | 1401-06-01 | 40 | 40 | 1 | 1 | .0000000 + 1 | 1401-06-01 | 40 | 40 | 1 | 1 | .0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.pn) as int),cast (floor(ow_sale.cn*ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between current row and current row ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc); -- mvd 1->5; 2->6; 8,1,3,9,2->7; 2->10; + cn | pn | dt | vn | to_char | to_char | to_char | prc | qty | to_char +----+-----+------------+----+-------------------+-------------------+-------------------+------+------+------------------- + 2 | 100 | 1401-01-01 | 40 | .0000000 | .0000000 | .0000000 | 2400 | 1100 | 1.0000000 + 1 | 200 | 1401-03-01 | 10 | .0000000 | 200.0000000 | .0000000 | 0 | 1 | 2.0000000 + 3 | 200 | 1401-04-01 | 40 | .0000000 | 200.0000000 | .0000000 | 0 | 1 | 3.0000000 + 1 | 100 | 1401-05-01 | 20 | .0000000 | 100.0000000 | .0000000 | 0 | 1 | 4.0000000 + 1 | 300 | 1401-05-02 | 30 | .0000000 | 300.0000000 | .0000000 | 0 | 1 | 5.0000000 + 1 | 400 | 1401-06-01 | 50 | .0000000 | 400.0000000 | .0000000 | 0 | 1 | 6.0000000 + 2 | 400 | 1401-06-01 | 50 | .0000000 | 400.0000000 | .0000000 | 0 | 1 | 7.0000000 + 1 | 500 | 1401-06-01 | 30 | .0000000 | .0000000 | .0000000 | 5 | 12 | 8.0000000 + 3 | 500 | 1401-06-01 | 30 | .0000000 | .0000000 | .0000000 | 5 | 12 | 9.0000000 + 3 | 600 | 1401-06-01 | 30 | .0000000 | .0000000 | .0000000 | 5 | 12 | 10.0000000 + 4 | 700 | 1401-06-01 | 40 | .0000000 | 800.0000000 | .0000000 | 1 | 1 | 11.0000000 + 4 | 800 | 1401-06-01 | 40 | .0000000 | .0000000 | .0000000 | 1 | 1 | 12.0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between current row and 8 following ); -- mvd 3->2; + pn | to_char | cn +-----+-------------------+---- + 100 | 365.4477087 | 2 + 200 | 5.5000000 | 1 + 200 | 5.5000000 | 3 + 100 | 5.5000000 | 1 + 300 | 5.6930409 | 1 + 400 | 5.8797473 | 1 + 400 | 6.0249481 | 2 + 500 | 6.0249481 | 1 + 500 | 6.3508530 | 3 + 600 | 6.3508530 | 3 + 700 | .0000000 | 4 + 800 | .0000000 | 4 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between current row and unbounded following ); -- mvd 1->7; + vn | cn | vn | pn | qty | dt | to_char +----+----+----+-----+------+------------+------------------- + 40 | 2 | 40 | 100 | 1100 | 1401-01-01 | 316.4258734 + 10 | 1 | 10 | 200 | 1 | 1401-03-01 | 5.1380930 + 40 | 3 | 40 | 200 | 1 | 1401-04-01 | 5.3135048 + 20 | 1 | 20 | 100 | 1 | 1401-05-01 | 5.5000000 + 30 | 1 | 30 | 300 | 1 | 1401-05-02 | 5.6930409 + 50 | 1 | 50 | 400 | 1 | 1401-06-01 | 5.8797473 + 50 | 2 | 50 | 400 | 1 | 1401-06-01 | 6.0249481 + 30 | 1 | 30 | 500 | 12 | 1401-06-01 | 6.0249481 + 30 | 3 | 30 | 500 | 12 | 1401-06-01 | 6.3508530 + 30 | 3 | 30 | 600 | 12 | 1401-06-01 | 6.3508530 + 40 | 4 | 40 | 700 | 1 | 1401-06-01 | .0000000 + 40 | 4 | 40 | 800 | 1 | 1401-06-01 | .0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc); -- mvd 2->4; 3->5; 3,7,2->6; 3->8; 3,7,2->9; + dt | pn | cn | to_char | to_char | to_char | vn | to_char | to_char +------------+-----+----+-------------------+-------------------+-------------------+----+-------------------+------------------- + 1401-01-01 | 100 | 2 | 316.4258734 | .0000000 | .0000000 | 40 | .0000000 | 40.0000000 + 1401-03-01 | 200 | 1 | 5.1380930 | 1100.0000000 | .0000000 | 10 | .0909091 | 10.0000000 + 1401-04-01 | 200 | 3 | 5.3135048 | .0000000 | .0000000 | 40 | .1818182 | 40.0000000 + 1401-05-01 | 100 | 1 | 5.5000000 | 1.0000000 | .0000000 | 20 | .2727273 | 20.0000000 + 1401-05-02 | 300 | 1 | 5.6930409 | 1.0000000 | .0000000 | 30 | .3636364 | 30.0000000 + 1401-06-01 | 400 | 1 | 5.8797473 | 1.0000000 | .0000000 | 50 | .4545455 | 50.0000000 + 1401-06-01 | 400 | 2 | 6.0249481 | 1.0000000 | .0000000 | 50 | .5454545 | 50.0000000 + 1401-06-01 | 500 | 1 | 6.0249481 | 1.0000000 | .0000000 | 30 | .6363636 | 30.0000000 + 1401-06-01 | 500 | 3 | 6.3508530 | 1.0000000 | .0000000 | 30 | .7272727 | 30.0000000 + 1401-06-01 | 600 | 3 | 6.3508530 | 1.0000000 | .0000000 | 30 | .8181818 | 30.0000000 + 1401-06-01 | 700 | 4 | .0000000 | 1.0000000 | .0000000 | 40 | .9090909 | 40.0000000 + 1401-06-01 | 800 | 4 | .0000000 | 12.0000000 | .0000000 | 40 | 1.0000000 | 40.0000000 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between floor(ow_sale.prc) following and 7 following ); -- mvd 7->6; + vn | pn | pn | prc | prc | to_char | cn +----+-----+-----+------+------+-------------------+---- + 40 | 100 | 100 | 2400 | 2400 | .0000000 | 2 + 10 | 200 | 200 | 0 | 0 | 2.7774603 | 1 + 40 | 200 | 200 | 0 | 0 | 3.1052950 | 3 + 20 | 100 | 100 | 0 | 0 | 3.2265639 | 1 + 30 | 300 | 300 | 0 | 0 | 3.3380918 | 1 + 50 | 400 | 400 | 0 | 0 | 3.4982989 | 1 + 50 | 400 | 400 | 0 | 0 | 3.6696957 | 2 + 30 | 500 | 500 | 5 | 5 | .0000000 | 1 + 30 | 500 | 500 | 5 | 5 | .0000000 | 3 + 30 | 600 | 600 | 5 | 5 | .0000000 | 3 + 40 | 700 | 700 | 1 | 1 | .0000000 | 4 + 40 | 800 | 800 | 1 | 1 | .0000000 | 4 +(12 rows) + +-- STDDEV() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between floor(ow_sale.pn) following and unbounded following ); -- mvd 6,3->5; + pn | dt | vn | qty | to_char | cn +-----+------------+----+------+-------------------+---- + 100 | 1401-01-01 | 40 | 1100 | .0000000 | 2 + 200 | 1401-03-01 | 10 | 1 | .0000000 | 1 + 200 | 1401-04-01 | 40 | 1 | .0000000 | 3 + 100 | 1401-05-01 | 20 | 1 | .0000000 | 1 + 300 | 1401-05-02 | 30 | 1 | .0000000 | 1 + 400 | 1401-06-01 | 50 | 1 | .0000000 | 1 + 400 | 1401-06-01 | 50 | 1 | .0000000 | 2 + 500 | 1401-06-01 | 30 | 12 | .0000000 | 1 + 500 | 1401-06-01 | 30 | 12 | .0000000 | 3 + 600 | 1401-06-01 | 30 | 12 | .0000000 | 3 + 700 | 1401-06-01 | 40 | 1 | .0000000 | 4 + 800 | 1401-06-01 | 40 | 1 | .0000000 | 4 +(12 rows) + +-- STDDEV() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.pn order by ow_sale.vn asc,ow_sale.vn asc,ow_sale.cn asc); -- mvd 5,1,6,7->4; + dt | qty | prc | to_char | cn | vn | pn +------------+------+------+-------------------+----+----+----- + 1401-01-01 | 1100 | 2400 | .0000000 | 2 | 40 | 100 + 1401-05-01 | 1 | 0 | .0000000 | 1 | 20 | 100 + 1401-04-01 | 1 | 0 | .0000000 | 3 | 40 | 200 + 1401-05-02 | 1 | 0 | .0000000 | 1 | 30 | 300 + 1401-06-01 | 1 | 0 | .0000000 | 1 | 50 | 400 + 1401-06-01 | 1 | 0 | .7071068 | 2 | 50 | 400 + 1401-06-01 | 12 | 5 | .0000000 | 1 | 30 | 500 + 1401-06-01 | 12 | 5 | 1.4142136 | 3 | 30 | 500 + 1401-06-01 | 1 | 1 | .0000000 | 4 | 40 | 800 + 1401-03-01 | 1 | 0 | .0000000 | 1 | 10 | 200 + 1401-06-01 | 12 | 5 | .0000000 | 3 | 30 | 600 + 1401-06-01 | 1 | 1 | .0000000 | 4 | 40 | 700 +(12 rows) + +-- STDDEV() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty +, +TO_CHAR(COALESCE(RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.vn)) OVER(partition by ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.cn order by ow_sale.cn asc,ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.cn order by ow_sale.cn asc,ow_sale.vn desc); -- mvd 4,1,5,2,6->3; 4,1,5,2,6->7; 4,1,5,2,6->8; + cn | vn | to_char | prc | dt | qty | to_char | to_char +----+----+-------------------+------+------------+------+-------------------+------------------- + 1 | 20 | .0000000 | 0 | 1401-05-01 | 1 | 1.0000000 | -19.0000000 + 3 | 40 | .0000000 | 0 | 1401-04-01 | 1 | 1.0000000 | -37.0000000 + 2 | 50 | .0000000 | 0 | 1401-06-01 | 1 | 1.0000000 | -48.0000000 + 1 | 30 | .0000000 | 5 | 1401-06-01 | 12 | 1.0000000 | -29.0000000 + 3 | 30 | 70.7106781 | 5 | 1401-06-01 | 12 | 1.0000000 | -27.0000000 + 3 | 30 | 70.7106781 | 5 | 1401-06-01 | 12 | 1.0000000 | -27.0000000 + 2 | 40 | .0000000 | 2400 | 1401-01-01 | 1100 | 1.0000000 | -38.0000000 + 1 | 10 | .0000000 | 0 | 1401-03-01 | 1 | 1.0000000 | -9.0000000 + 1 | 30 | .0000000 | 0 | 1401-05-02 | 1 | 1.0000000 | -29.0000000 + 1 | 50 | .0000000 | 0 | 1401-06-01 | 1 | 1.0000000 | -49.0000000 + 4 | 40 | 70.7106781 | 1 | 1401-06-01 | 1 | 1.0000000 | -36.0000000 + 4 | 40 | 70.7106781 | 1 | 1401-06-01 | 1 | 1.0000000 | -36.0000000 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.cn asc range unbounded preceding ); -- mvd 1,2,5->4; + cn | vn | qty | to_char | pn +----+----+------+-------------------+----- + 1 | 30 | 1 | .0000000 | 300 + 1 | 30 | 12 | .0000000 | 500 + 3 | 30 | 12 | .0000000 | 500 + 2 | 40 | 1100 | .0000000 | 100 + 4 | 40 | 1 | .0000000 | 700 + 1 | 50 | 1 | .0000000 | 400 + 1 | 10 | 1 | .0000000 | 200 + 1 | 20 | 1 | .0000000 | 100 + 3 | 30 | 12 | .0000000 | 600 + 3 | 40 | 1 | .0000000 | 200 + 4 | 40 | 1 | .0000000 | 800 + 2 | 50 | 1 | .0000000 | 400 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(partition by ow_sale.pn order by ow_sale.cn asc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(partition by ow_sale.pn order by ow_sale.cn asc range unbounded preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn asc range unbounded preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,3->5; 4->6; 4,3->7; 4,3->8; 4,3->9; 4,3->10; + vn | qty | pn | cn | to_char | to_char | to_char | to_char | to_char | to_char +----+------+-----+----+-------------------+-------------------+-------------------+-------------------+-------------------+------------------- + 40 | 1100 | 100 | 2 | .7071068 | .0000000 | 1.0000000 | .0000000 | 2.0000000 | 2.0000000 + 10 | 1 | 200 | 1 | .0000000 | 80.0000000 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 40 | 1 | 200 | 3 | 1.4142136 | .0000000 | 1.0000000 | .0000000 | 2.0000000 | 2.0000000 + 20 | 1 | 100 | 1 | .0000000 | 80.0000000 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 30 | 1 | 300 | 1 | .0000000 | 40.0000000 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 50 | 1 | 400 | 1 | .0000000 | 60.0000000 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 50 | 1 | 400 | 2 | .7071068 | 60.0000000 | 1.0000000 | .0000000 | 2.0000000 | 2.0000000 + 30 | 12 | 500 | 1 | .0000000 | 100.0000000 | 12.0000000 | .0000000 | 1.0000000 | 1.0000000 + 30 | 12 | 500 | 3 | 1.4142136 | 100.0000000 | 12.0000000 | .0000000 | 2.0000000 | 2.0000000 + 30 | 12 | 600 | 3 | .0000000 | 100.0000000 | 12.0000000 | .0000000 | 1.0000000 | 1.0000000 + 40 | 1 | 700 | 4 | .0000000 | 100.0000000 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 40 | 1 | 800 | 4 | .0000000 | 60.0000000 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.pn order by ow_sale.pn desc range floor(ow_sale.vn) preceding ); -- mvd 3,4,1,5->2; + vn | to_char | cn | dt | pn +----+-------------------+----+------------+----- + 10 | .0000000 | 1 | 1401-03-01 | 200 + 20 | .0000000 | 1 | 1401-05-01 | 100 + 30 | .0000000 | 3 | 1401-06-01 | 600 + 40 | .0000000 | 3 | 1401-04-01 | 200 + 40 | .0000000 | 4 | 1401-06-01 | 800 + 50 | .0000000 | 2 | 1401-06-01 | 400 + 30 | .0000000 | 1 | 1401-05-02 | 300 + 30 | .0000000 | 1 | 1401-06-01 | 500 + 30 | .0000000 | 3 | 1401-06-01 | 500 + 40 | .0000000 | 2 | 1401-01-01 | 100 + 40 | .0000000 | 4 | 1401-06-01 | 700 + 50 | .0000000 | 1 | 1401-06-01 | 400 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.cn asc range 4 preceding ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.cn desc); -- mvd 1,2->5; 1->6; 1->7; 1->8; + cn | vn | cn | qty | to_char | to_char | to_char | to_char +----+----+----+------+-------------------+-------------------+-------------------+------------------- + 4 | 40 | 4 | 1 | .0000000 | .0000000 | 1.0000000 | .1666667 + 4 | 40 | 4 | 1 | .0000000 | .0000000 | 1.0000000 | .1666667 + 3 | 30 | 3 | 12 | .0000000 | .1818182 | 3.0000000 | .4166667 + 3 | 30 | 3 | 12 | .0000000 | .1818182 | 3.0000000 | .4166667 + 3 | 40 | 3 | 1 | .0000000 | .1818182 | 3.0000000 | .4166667 + 2 | 40 | 2 | 1100 | .0000000 | .4545455 | 6.0000000 | .5833333 + 2 | 50 | 2 | 1 | .0000000 | .4545455 | 6.0000000 | .5833333 + 1 | 30 | 1 | 12 | 3.5355339 | .6363636 | 8.0000000 | 1.0000000 + 1 | 10 | 1 | 1 | .0000000 | .6363636 | 8.0000000 | 1.0000000 + 1 | 50 | 1 | 1 | .0000000 | .6363636 | 8.0000000 | 1.0000000 + 1 | 20 | 1 | 1 | .0000000 | .6363636 | 8.0000000 | 1.0000000 + 1 | 30 | 1 | 1 | 3.5355339 | .6363636 | 8.0000000 | 1.0000000 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.cn desc range current row ); -- mvd 3,4,5->2; + vn | to_char | cn | dt | pn +----+-------------------+----+------------+----- + 10 | .0000000 | 1 | 1401-03-01 | 200 + 30 | .0000000 | 3 | 1401-06-01 | 600 + 40 | .0000000 | 4 | 1401-06-01 | 700 + 40 | .0000000 | 2 | 1401-01-01 | 100 + 40 | .0000000 | 3 | 1401-04-01 | 200 + 20 | .0000000 | 1 | 1401-05-01 | 100 + 30 | .0000000 | 1 | 1401-05-02 | 300 + 50 | .0000000 | 2 | 1401-06-01 | 400 + 50 | .0000000 | 1 | 1401-06-01 | 400 + 30 | .0000000 | 3 | 1401-06-01 | 500 + 30 | .0000000 | 1 | 1401-06-01 | 500 + 40 | .0000000 | 4 | 1401-06-01 | 800 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.cn desc range current row ), +win2 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.cn asc); -- mvd 3,4->2; 3,6->5; 3,6->7; 3->8; 3->9; + vn | to_char | cn | dt | to_char | pn | to_char | to_char | to_char +----+-------------------+----+------------+-------------------+-----+-------------------+-------------------+------------------- + 10 | .0000000 | 1 | 1401-03-01 | .0000000 | 200 | 1.0000000 | .4166667 | 1.0000000 + 30 | .0000000 | 1 | 1401-05-02 | .0000000 | 300 | 1.0000000 | .4166667 | 1.0000000 + 50 | 70.7106781 | 1 | 1401-06-01 | .0000000 | 400 | 1.0000000 | .4166667 | 1.0000000 + 30 | 70.7106781 | 1 | 1401-06-01 | .0000000 | 500 | 1.0000000 | .4166667 | 1.0000000 + 20 | .0000000 | 1 | 1401-05-01 | .0000000 | 100 | 2.0000000 | .4166667 | 1.0000000 + 40 | .0000000 | 2 | 1401-01-01 | .0000000 | 100 | 1.0000000 | .5833333 | 2.0000000 + 50 | .0000000 | 2 | 1401-06-01 | .0000000 | 400 | 2.0000000 | .5833333 | 2.0000000 + 30 | 70.7106781 | 3 | 1401-06-01 | .0000000 | 500 | 2.0000000 | .8333333 | 3.0000000 + 30 | 70.7106781 | 3 | 1401-06-01 | .0000000 | 600 | 1.0000000 | .8333333 | 3.0000000 + 40 | .0000000 | 3 | 1401-04-01 | .0000000 | 200 | 2.0000000 | .8333333 | 3.0000000 + 40 | 70.7106781 | 4 | 1401-06-01 | .0000000 | 700 | 1.0000000 | 1.0000000 | 4.0000000 + 40 | 70.7106781 | 4 | 1401-06-01 | .0000000 | 800 | 1.0000000 | 1.0000000 | 4.0000000 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.prc,ow_sale.vn order by ow_sale.pn asc range between unbounded preceding and floor(ow_sale.cn) preceding ); -- mvd 6,7,1,8->5; + vn | cn | qty | qty | to_char | prc | dt | pn +----+----+------+------+-------------------+------+------------+----- + 10 | 1 | 1 | 1 | .0000000 | 0 | 1401-03-01 | 200 + 30 | 1 | 1 | 1 | .0000000 | 0 | 1401-05-02 | 300 + 50 | 2 | 1 | 1 | .0000000 | 0 | 1401-06-01 | 400 + 50 | 1 | 1 | 1 | .0000000 | 0 | 1401-06-01 | 400 + 30 | 1 | 12 | 12 | .0000000 | 5 | 1401-06-01 | 500 + 30 | 3 | 12 | 12 | .0000000 | 5 | 1401-06-01 | 500 + 30 | 3 | 12 | 12 | .0000000 | 5 | 1401-06-01 | 600 + 40 | 2 | 1100 | 1100 | .0000000 | 2400 | 1401-01-01 | 100 + 40 | 3 | 1 | 1 | .0000000 | 0 | 1401-04-01 | 200 + 20 | 1 | 1 | 1 | .0000000 | 0 | 1401-05-01 | 100 + 40 | 4 | 1 | 1 | .0000000 | 1 | 1401-06-01 | 700 + 40 | 4 | 1 | 1 | .0000000 | 1 | 1401-06-01 | 800 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.vn asc range between unbounded preceding and 4 preceding ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.vn asc), +win4 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc); -- mvd 4,5,1,6->3; 5->7; 1->8; 10,5,4,1,6->9; + vn | qty | to_char | dt | cn | pn | to_char | to_char | to_char | prc +----+------+-------------------+------------+----+-----+-------------------+-------------------+-------------------+------ + 40 | 1100 | .0000000 | 1401-01-01 | 2 | 100 | .4545455 | 200.0000000 | .0000000 | 2400 + 10 | 1 | .0000000 | 1401-03-01 | 1 | 200 | .0000000 | 200.0000000 | 200.0000000 | 0 + 40 | 1 | .0000000 | 1401-04-01 | 3 | 200 | .6363636 | 400.0000000 | 200.0000000 | 0 + 20 | 1 | .0000000 | 1401-05-01 | 1 | 100 | .0000000 | 300.0000000 | 100.0000000 | 0 + 30 | 1 | .0000000 | 1401-05-02 | 1 | 300 | .0000000 | 400.0000000 | 300.0000000 | 0 + 50 | 1 | .0000000 | 1401-06-01 | 1 | 400 | .0000000 | 400.0000000 | 400.0000000 | 0 + 50 | 1 | .0000000 | 1401-06-01 | 2 | 400 | .4545455 | 505.0000000 | 400.0000000 | 0 + 30 | 12 | .0000000 | 1401-06-01 | 1 | 500 | .0000000 | 505.0000000 | .0000000 | 5 + 30 | 12 | .0000000 | 1401-06-01 | 3 | 500 | .6363636 | 801.0000000 | .0000000 | 5 + 30 | 12 | .0000000 | 1401-06-01 | 3 | 600 | .6363636 | .0000000 | .0000000 | 5 + 40 | 1 | .0000000 | 1401-06-01 | 4 | 700 | .9090909 | .0000000 | .0000000 | 1 + 40 | 1 | .0000000 | 1401-06-01 | 4 | 800 | .9090909 | .0000000 | .0000000 | 1 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 2,6->5; + pn | cn | qty | vn | to_char | dt +-----+----+------+----+-------------------+------------ + 200 | 1 | 1 | 10 | .0000000 | 1401-03-01 + 300 | 1 | 1 | 30 | .0000000 | 1401-05-02 + 700 | 4 | 1 | 40 | 70.7106781 | 1401-06-01 + 800 | 4 | 1 | 40 | 70.7106781 | 1401-06-01 + 600 | 3 | 12 | 30 | 134.2882472 | 1401-06-01 + 500 | 3 | 12 | 30 | 134.2882472 | 1401-06-01 + 400 | 2 | 1 | 50 | 156.7482057 | 1401-06-01 + 400 | 1 | 1 | 50 | 148.7567525 | 1401-06-01 + 500 | 1 | 12 | 30 | 148.7567525 | 1401-06-01 + 100 | 2 | 1100 | 40 | .0000000 | 1401-01-01 + 200 | 3 | 1 | 40 | .0000000 | 1401-04-01 + 100 | 1 | 1 | 20 | .0000000 | 1401-05-01 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.cn) following ), +win2 as (order by ow_sale.cn asc); -- mvd 5,6->4; 5->7; + pn | qty | prc | to_char | cn | vn | to_char +-----+------+------+-------------------+----+----+------------------- + 200 | 1 | 0 | .0000000 | 1 | 10 | .4166667 + 100 | 1 | 0 | .0000000 | 1 | 20 | .4166667 + 300 | 1 | 0 | 7.7781746 | 1 | 30 | .4166667 + 500 | 12 | 5 | 7.7781746 | 1 | 30 | .4166667 + 400 | 1 | 0 | .0000000 | 1 | 50 | .4166667 + 100 | 1100 | 2400 | .0000000 | 2 | 40 | .5833333 + 400 | 1 | 0 | .0000000 | 2 | 50 | .5833333 + 500 | 12 | 5 | .0000000 | 3 | 30 | .8333333 + 600 | 12 | 5 | .0000000 | 3 | 30 | .8333333 + 200 | 1 | 0 | .0000000 | 3 | 40 | .8333333 + 800 | 1 | 1 | .0000000 | 4 | 40 | 1.0000000 + 700 | 1 | 1 | .0000000 | 4 | 40 | 1.0000000 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.pn desc range between unbounded preceding and unbounded following ); -- mvd 4,7,2->6; + vn | pn | qty | dt | qty | to_char | cn +----+-----+------+------------+------+-------------------+---- + 20 | 100 | 1 | 1401-05-01 | 1 | .0000000 | 1 + 50 | 400 | 1 | 1401-06-01 | 1 | .0000000 | 2 + 40 | 200 | 1 | 1401-04-01 | 1 | .0000000 | 3 + 40 | 800 | 1 | 1401-06-01 | 1 | .0000000 | 4 + 40 | 700 | 1 | 1401-06-01 | 1 | .0000000 | 4 + 10 | 200 | 1 | 1401-03-01 | 1 | .0000000 | 1 + 30 | 300 | 1 | 1401-05-02 | 1 | .0000000 | 1 + 30 | 500 | 12 | 1401-06-01 | 12 | 17.6776695 | 1 + 50 | 400 | 1 | 1401-06-01 | 1 | 17.6776695 | 1 + 40 | 100 | 1100 | 1401-01-01 | 1100 | .0000000 | 2 + 30 | 600 | 12 | 1401-06-01 | 12 | .0000000 | 3 + 30 | 500 | 12 | 1401-06-01 | 12 | .0000000 | 3 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.cn asc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.cn order by ow_sale.vn desc), +win3 as (order by ow_sale.pn asc); -- mvd 7,8->6; 8,10->9; 7,8->11; 3->12; + dt | dt | pn | qty | pn | to_char | prc | cn | to_char | vn | to_char | to_char +------------+------------+-----+------+-----+-------------------+------+----+-------------------+----+-------------------+------------------- + 1401-05-01 | 1401-05-01 | 100 | 1 | 100 | .8366600 | 0 | 1 | 3.0000000 | 20 | 6.0000000 | .0000000 + 1401-01-01 | 1401-01-01 | 100 | 1100 | 100 | .0000000 | 2400 | 2 | 2.0000000 | 40 | 1.0000000 | .0000000 + 1401-04-01 | 1401-04-01 | 200 | 1 | 200 | .8366600 | 0 | 3 | 1.0000000 | 40 | 6.0000000 | .1818182 + 1401-03-01 | 1401-03-01 | 200 | 1 | 200 | .8366600 | 0 | 1 | 4.0000000 | 10 | 6.0000000 | .1818182 + 1401-05-02 | 1401-05-02 | 300 | 1 | 300 | .8366600 | 0 | 1 | 2.0000000 | 30 | 6.0000000 | .3636364 + 1401-06-01 | 1401-06-01 | 400 | 1 | 400 | .8366600 | 0 | 2 | 1.0000000 | 50 | 6.0000000 | .4545455 + 1401-06-01 | 1401-06-01 | 400 | 1 | 400 | .8366600 | 0 | 1 | 1.0000000 | 50 | 6.0000000 | .4545455 + 1401-06-01 | 1401-06-01 | 500 | 12 | 500 | .0000000 | 5 | 1 | 2.0000000 | 30 | 3.0000000 | .6363636 + 1401-06-01 | 1401-06-01 | 500 | 12 | 500 | .0000000 | 5 | 3 | 2.0000000 | 30 | 3.0000000 | .6363636 + 1401-06-01 | 1401-06-01 | 600 | 12 | 600 | .0000000 | 5 | 3 | 2.0000000 | 30 | 3.0000000 | .8181818 + 1401-06-01 | 1401-06-01 | 700 | 1 | 700 | .0000000 | 1 | 4 | 1.0000000 | 40 | 2.0000000 | .9090909 + 1401-06-01 | 1401-06-01 | 800 | 1 | 800 | .0000000 | 1 | 4 | 1.0000000 | 40 | 2.0000000 | 1.0000000 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.dt,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.pn asc range between floor(ow_sale.vn+ow_sale.cn) preceding and 0 preceding ); -- mvd 1,6->5; + prc | dt | prc | qty | to_char | pn +------+------------+------+------+-------------------+----- + 1 | 1401-06-01 | 1 | 1 | .0000000 | 700 + 1 | 1401-06-01 | 1 | 1 | .0000000 | 800 + 0 | 1401-05-01 | 0 | 1 | .0000000 | 100 + 0 | 1401-03-01 | 0 | 1 | 21.2132034 | 200 + 0 | 1401-04-01 | 0 | 1 | 21.2132034 | 200 + 0 | 1401-05-02 | 0 | 1 | .0000000 | 300 + 0 | 1401-06-01 | 0 | 1 | .0000000 | 400 + 0 | 1401-06-01 | 0 | 1 | .0000000 | 400 + 5 | 1401-06-01 | 5 | 12 | .0000000 | 500 + 5 | 1401-06-01 | 5 | 12 | .0000000 | 500 + 5 | 1401-06-01 | 5 | 12 | .0000000 | 600 + 2400 | 1401-01-01 | 2400 | 1100 | .0000000 | 100 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.vn order by ow_sale.vn desc range between 1 preceding and floor(ow_sale.prc+ow_sale.vn) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.vn desc range between 1 preceding and floor(ow_sale.prc+ow_sale.vn) preceding ); -- mvd 2->4; 2->5; 2->6; + dt | vn | vn | to_char | to_char | to_char +------------+----+----+-------------------+-------------------+------------------- + 1401-03-01 | 10 | 10 | .0000000 | .0000000 | .0000000 + 1401-05-01 | 20 | 20 | .0000000 | .0000000 | .0000000 + 1401-05-02 | 30 | 30 | .0000000 | .0000000 | .0000000 + 1401-06-01 | 30 | 30 | .0000000 | .0000000 | .0000000 + 1401-06-01 | 30 | 30 | .0000000 | .0000000 | .0000000 + 1401-06-01 | 30 | 30 | .0000000 | .0000000 | .0000000 + 1401-06-01 | 40 | 40 | .0000000 | .0000000 | .0000000 + 1401-04-01 | 40 | 40 | .0000000 | .0000000 | .0000000 + 1401-06-01 | 40 | 40 | .0000000 | .0000000 | .0000000 + 1401-01-01 | 40 | 40 | .0000000 | .0000000 | .0000000 + 1401-06-01 | 50 | 50 | .0000000 | .0000000 | .0000000 + 1401-06-01 | 50 | 50 | .0000000 | .0000000 | .0000000 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.vn asc range between floor(ow_sale.cn-ow_sale.cn) preceding and current row ); -- mvd 8,5,2,3->7; + cn | vn | pn | cn | dt | dt | to_char | prc +----+----+-----+----+------------+------------+-------------------+------ + 1 | 10 | 200 | 1 | 1401-03-01 | 1401-03-01 | .0000000 | 0 + 4 | 40 | 800 | 4 | 1401-06-01 | 1401-06-01 | .0000000 | 1 + 3 | 30 | 600 | 3 | 1401-06-01 | 1401-06-01 | .0000000 | 5 + 2 | 40 | 100 | 2 | 1401-01-01 | 1401-01-01 | .0000000 | 2400 + 3 | 40 | 200 | 3 | 1401-04-01 | 1401-04-01 | .0000000 | 0 + 1 | 20 | 100 | 1 | 1401-05-01 | 1401-05-01 | .0000000 | 0 + 1 | 30 | 300 | 1 | 1401-05-02 | 1401-05-02 | .0000000 | 0 + 2 | 50 | 400 | 2 | 1401-06-01 | 1401-06-01 | 282.8427125 | 0 + 1 | 50 | 400 | 1 | 1401-06-01 | 1401-06-01 | 282.8427125 | 0 + 4 | 40 | 700 | 4 | 1401-06-01 | 1401-06-01 | .0000000 | 1 + 1 | 30 | 500 | 1 | 1401-06-01 | 1401-06-01 | 707.1067812 | 5 + 3 | 30 | 500 | 3 | 1401-06-01 | 1401-06-01 | 707.1067812 | 5 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(partition by ow_sale.prc order by ow_sale.cn asc range between floor(ow_sale.cn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.cn asc range between floor(ow_sale.cn) preceding and current row ), +win2 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.cn desc); -- mvd 3,4->2; 3,4->5; 3,4->6; 3,4->7; 4,9,1->8; 4,9,1->10; + qty | to_char | prc | cn | to_char | to_char | to_char | to_char | vn | to_char +------+-------------------+------+----+-------------------+-------------------+-------------------+-------------------+----+------------------- + 1 | .0000000 | 1 | 4 | 1.0000000 | 2.0000000 | 700.0000000 | 1.0000000 | 40 | 1.0000000 + 1 | .0000000 | 1 | 4 | 1.0000000 | 2.0000000 | 700.0000000 | 2.0000000 | 40 | 1.0000000 + 1 | .0000000 | 0 | 1 | .0000000 | 4.0000000 | 100.0000000 | 1.0000000 | 20 | 1.0000000 + 1 | .0000000 | 0 | 1 | .0000000 | 4.0000000 | 100.0000000 | 1.0000000 | 50 | 1.0000000 + 1 | .0000000 | 0 | 1 | .0000000 | 4.0000000 | 100.0000000 | 1.0000000 | 30 | 1.0000000 + 1 | .0000000 | 0 | 1 | .0000000 | 4.0000000 | 100.0000000 | 1.0000000 | 10 | 1.0000000 + 1 | .0000000 | 0 | 2 | .0000000 | 5.0000000 | 100.0000000 | 1.0000000 | 50 | 1.0000000 + 1 | .0000000 | 0 | 3 | .0000000 | 6.0000000 | 100.0000000 | 1.0000000 | 40 | 1.0000000 + 12 | .0000000 | 5 | 1 | 5.0000000 | 1.0000000 | 500.0000000 | 1.0000000 | 30 | 1.0000000 + 12 | .0000000 | 5 | 3 | 5.0000000 | 3.0000000 | 500.0000000 | 2.0000000 | 30 | 1.0000000 + 12 | .0000000 | 5 | 3 | 5.0000000 | 3.0000000 | 500.0000000 | 1.0000000 | 30 | 1.0000000 + 1100 | .0000000 | 2400 | 2 | 2400.0000000 | 1.0000000 | 100.0000000 | 1.0000000 | 40 | 1.0000000 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn desc range between 4 preceding and floor(ow_sale.vn*ow_sale.cn) following ); -- mvd 3,4->2; + dt | to_char | cn | vn +------------+-------------------+----+---- + 1401-03-01 | .0000000 | 1 | 10 + 1401-05-01 | .0000000 | 1 | 20 + 1401-06-01 | 1.1547005 | 3 | 30 + 1401-06-01 | 1.1547005 | 3 | 30 + 1401-05-02 | 1.1547005 | 1 | 30 + 1401-06-01 | 1.1547005 | 1 | 30 + 1401-06-01 | .9574271 | 4 | 40 + 1401-06-01 | .9574271 | 4 | 40 + 1401-04-01 | .9574271 | 3 | 40 + 1401-01-01 | .9574271 | 2 | 40 + 1401-06-01 | .7071068 | 2 | 50 + 1401-06-01 | .7071068 | 1 | 50 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.dt order by ow_sale.pn desc range between 0 preceding and 3 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.pn desc range between 0 preceding and 3 following ), +win2 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc), +win3 as (order by ow_sale.vn desc); -- mvd 6,7,8->5; 10,1,7->9; 10,1,7->11; 10,1,7->12; 7->13; 6,7,8->14; + cn | cn | cn | qty | to_char | dt | vn | pn | to_char | prc | to_char | to_char | to_char | to_char +----+----+----+------+-------------------+------------+----+-----+-------------------+------+-------------------+-------------------+-------------------+------------------- + 2 | 2 | 2 | 1 | .0000000 | 1401-06-01 | 50 | 400 | 1.0000000 | 0 | 1.0000000 | 1.0000000 | .0000000 | -399.0000000 + 1 | 1 | 1 | 1 | .0000000 | 1401-06-01 | 50 | 400 | 1.0000000 | 0 | 1.0000000 | 1.0000000 | .0000000 | -399.0000000 + 4 | 4 | 4 | 1 | .0000000 | 1401-06-01 | 40 | 800 | 1.0000000 | 1 | 2.0000000 | 2.0000000 | .1818182 | -796.0000000 + 4 | 4 | 4 | 1 | .0000000 | 1401-06-01 | 40 | 700 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | .1818182 | -696.0000000 + 2 | 2 | 2 | 1100 | .0000000 | 1401-01-01 | 40 | 100 | 1.0000000 | 2400 | 1.0000000 | 1.0000000 | .1818182 | -98.0000000 + 3 | 3 | 3 | 1 | .0000000 | 1401-04-01 | 40 | 200 | 1.0000000 | 0 | 1.0000000 | 1.0000000 | .1818182 | -197.0000000 + 1 | 1 | 1 | 12 | .0000000 | 1401-06-01 | 30 | 500 | 1.0000000 | 5 | 1.0000000 | 1.0000000 | .5454545 | -499.0000000 + 1 | 1 | 1 | 1 | .0000000 | 1401-05-02 | 30 | 300 | 1.0000000 | 0 | 1.0000000 | 1.0000000 | .5454545 | -299.0000000 + 3 | 3 | 3 | 12 | .0000000 | 1401-06-01 | 30 | 600 | 1.0000000 | 5 | 1.0000000 | 1.0000000 | .5454545 | -597.0000000 + 3 | 3 | 3 | 12 | .0000000 | 1401-06-01 | 30 | 500 | 1.0000000 | 5 | 2.0000000 | 2.0000000 | .5454545 | -499.0000000 + 1 | 1 | 1 | 1 | .0000000 | 1401-05-01 | 20 | 100 | 1.0000000 | 0 | 1.0000000 | 1.0000000 | .9090909 | -99.0000000 + 1 | 1 | 1 | 1 | .0000000 | 1401-03-01 | 10 | 200 | 1.0000000 | 0 | 1.0000000 | 1.0000000 | 1.0000000 | -199.0000000 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.vn desc range between 1 preceding and unbounded following ); -- mvd 2,1,4,5->3; + cn | prc | to_char | vn | pn +----+------+-------------------+----+----- + 1 | 0 | .0000000 | 20 | 100 + 1 | 0 | .0000000 | 10 | 200 + 3 | 0 | .0000000 | 40 | 200 + 2 | 0 | .0000000 | 50 | 400 + 4 | 1 | .0000000 | 40 | 700 + 3 | 5 | .0000000 | 30 | 600 + 1 | 0 | .0000000 | 30 | 300 + 1 | 0 | .0000000 | 50 | 400 + 4 | 1 | .0000000 | 40 | 800 + 1 | 5 | .0000000 | 30 | 500 + 3 | 5 | .0000000 | 30 | 500 + 2 | 2400 | .0000000 | 40 | 100 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.pn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.pn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.cn asc range between 3 preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.cn asc range between 3 preceding and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.pn order by ow_sale.pn desc); -- mvd 6,1,7,2->5; 6,4,2->8; 6,4,2->9; 6,4,2->10; 6,4,2->11; 6,1,7,2->12; + cn | pn | prc | qty | to_char | dt | vn | to_char | to_char | to_char | to_char | to_char +----+-----+------+------+-------------------+------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | 100 | 0 | 1 | .0000000 | 1401-05-01 | 20 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 2.0000000 + 1 | 300 | 0 | 1 | .0000000 | 1401-05-02 | 30 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 2.0000000 + 1 | 500 | 5 | 12 | .0000000 | 1401-06-01 | 30 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 13.0000000 + 3 | 500 | 5 | 12 | .0000000 | 1401-06-01 | 30 | .0000000 | 1.0000000 | .0000000 | 2.0000000 | 15.0000000 + 3 | 200 | 0 | 1 | .0000000 | 1401-04-01 | 40 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 4.0000000 + 4 | 700 | 1 | 1 | .0000000 | 1401-06-01 | 40 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 5.0000000 + 1 | 400 | 0 | 1 | .0000000 | 1401-06-01 | 50 | .0000000 | 1.0000000 | .0000000 | 2.0000000 | 2.0000000 + 1 | 200 | 0 | 1 | .0000000 | 1401-03-01 | 10 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 2.0000000 + 3 | 600 | 5 | 12 | .0000000 | 1401-06-01 | 30 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 15.0000000 + 2 | 100 | 2400 | 1100 | .0000000 | 1401-01-01 | 40 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 1102.0000000 + 4 | 800 | 1 | 1 | .0000000 | 1401-06-01 | 40 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 5.0000000 + 2 | 400 | 0 | 1 | .0000000 | 1401-06-01 | 50 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 3.0000000 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.pn desc range between current row and current row ); -- mvd 3,4,5,1->2; + pn | to_char | dt | cn | vn +-----+-------------------+------------+----+---- + 100 | .0000000 | 1401-01-01 | 2 | 40 + 300 | .0000000 | 1401-05-02 | 1 | 30 + 400 | .0000000 | 1401-06-01 | 1 | 50 + 500 | .0000000 | 1401-06-01 | 1 | 30 + 500 | .0000000 | 1401-06-01 | 3 | 30 + 700 | .0000000 | 1401-06-01 | 4 | 40 + 100 | .0000000 | 1401-05-01 | 1 | 20 + 200 | .0000000 | 1401-03-01 | 1 | 10 + 200 | .0000000 | 1401-04-01 | 3 | 40 + 400 | .0000000 | 1401-06-01 | 2 | 50 + 600 | .0000000 | 1401-06-01 | 3 | 30 + 800 | .0000000 | 1401-06-01 | 4 | 40 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn+ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.vn order by ow_sale.cn asc range between current row and current row ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,1,4,5->2; 3->6; 1->7; 3->8; + vn | to_char | cn | qty | pn | to_char | to_char | to_char +----+-------------------+----+------+-----+-------------------+-------------------+------------------- + 40 | .0000000 | 2 | 1100 | 100 | .4545455 | .0000000 | .5833333 + 10 | .0000000 | 1 | 1 | 200 | .6363636 | .0000000 | 1.0000000 + 40 | .0000000 | 3 | 1 | 200 | .1818182 | .0000000 | .4166667 + 20 | .0000000 | 1 | 1 | 100 | .6363636 | .0000000 | 1.0000000 + 30 | .0000000 | 1 | 1 | 300 | .6363636 | .0000000 | 1.0000000 + 50 | .0000000 | 1 | 1 | 400 | .6363636 | .0000000 | 1.0000000 + 50 | .0000000 | 2 | 1 | 400 | .4545455 | .0000000 | .5833333 + 30 | .0000000 | 1 | 12 | 500 | .6363636 | .0000000 | 1.0000000 + 30 | .0000000 | 3 | 12 | 500 | .1818182 | .0000000 | .4166667 + 30 | .0000000 | 3 | 12 | 600 | .1818182 | .0000000 | .4166667 + 40 | .0000000 | 4 | 1 | 700 | .0000000 | .0000000 | .1666667 + 40 | .0000000 | 4 | 1 | 800 | .0000000 | .0000000 | .1666667 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.cn asc range between current row and 1 following ); -- mvd 5,6,3->4; + prc | vn | pn | to_char | cn | dt +------+----+-----+-------------------+----+------------ + 0 | 10 | 200 | .0000000 | 1 | 1401-03-01 + 5 | 30 | 600 | .0000000 | 3 | 1401-06-01 + 1 | 40 | 700 | .0000000 | 4 | 1401-06-01 + 2400 | 40 | 100 | .0000000 | 2 | 1401-01-01 + 0 | 40 | 200 | .0000000 | 3 | 1401-04-01 + 0 | 20 | 100 | .0000000 | 1 | 1401-05-01 + 0 | 30 | 300 | .0000000 | 1 | 1401-05-02 + 0 | 50 | 400 | .0000000 | 1 | 1401-06-01 + 0 | 50 | 400 | .0000000 | 2 | 1401-06-01 + 5 | 30 | 500 | .0000000 | 1 | 1401-06-01 + 5 | 30 | 500 | .0000000 | 3 | 1401-06-01 + 1 | 40 | 800 | .0000000 | 4 | 1401-06-01 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.vn desc range between current row and floor(ow_sale.pn) following ), +win2 as (order by ow_sale.vn asc); -- mvd 3,1->4; 1->5; + vn | vn | cn | to_char | to_char +----+----+----+-------------------+------------------- + 10 | 10 | 1 | .0000000 | 1.0000000 + 20 | 20 | 1 | .0000000 | 2.0000000 + 30 | 30 | 1 | .0000000 | 3.0000000 + 30 | 30 | 3 | .0000000 | 3.0000000 + 30 | 30 | 1 | .0000000 | 3.0000000 + 30 | 30 | 3 | .0000000 | 3.0000000 + 40 | 40 | 3 | .0000000 | 7.0000000 + 40 | 40 | 2 | .0000000 | 7.0000000 + 40 | 40 | 4 | .0000000 | 7.0000000 + 40 | 40 | 4 | .0000000 | 7.0000000 + 50 | 50 | 2 | .0000000 | 11.0000000 + 50 | 50 | 1 | .0000000 | 11.0000000 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.dt order by ow_sale.vn desc range between current row and unbounded following ); -- mvd 5,3,6->4; + prc | cn | qty | to_char | dt | vn +------+----+------+-------------------+------------+---- + 0 | 1 | 1 | .0000000 | 1401-05-01 | 20 + 5 | 3 | 12 | .0000000 | 1401-06-01 | 30 + 5 | 1 | 12 | .0000000 | 1401-06-01 | 30 + 5 | 3 | 12 | .0000000 | 1401-06-01 | 30 + 0 | 3 | 1 | .0000000 | 1401-04-01 | 40 + 0 | 1 | 1 | .0000000 | 1401-03-01 | 10 + 0 | 1 | 1 | .0000000 | 1401-05-02 | 30 + 1 | 4 | 1 | .0000000 | 1401-06-01 | 40 + 1 | 4 | 1 | .0000000 | 1401-06-01 | 40 + 2400 | 2 | 1100 | .0000000 | 1401-01-01 | 40 + 0 | 2 | 1 | .0000000 | 1401-06-01 | 50 + 0 | 1 | 1 | .0000000 | 1401-06-01 | 50 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.cn desc range between current row and unbounded following ); -- mvd 1,3,4->2; 1,3,4->5; + prc | to_char | cn | vn | to_char +------+-------------------+----+----+------------------- + 1 | .0000000 | 4 | 40 | 4.0000000 + 1 | .0000000 | 4 | 40 | 4.0000000 + 0 | .0000000 | 1 | 10 | 1.0000000 + 0 | .0000000 | 1 | 20 | 1.0000000 + 0 | .0000000 | 1 | 30 | 1.0000000 + 5 | .0000000 | 3 | 30 | 12.0000000 + 5 | .0000000 | 3 | 30 | 12.0000000 + 5 | .0000000 | 1 | 30 | 12.0000000 + 0 | .0000000 | 3 | 40 | 3.0000000 + 2400 | .0000000 | 2 | 40 | 2200.0000000 + 0 | .0000000 | 2 | 50 | 1.0000000 + 0 | .0000000 | 1 | 50 | 1.0000000 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.pn asc range between 0 following and floor(ow_sale.vn+ow_sale.qty) following ); -- mvd 1,3,4->2; + cn | to_char | qty | pn +----+-------------------+------+----- + 2 | .0000000 | 1 | 400 + 4 | .0000000 | 1 | 700 + 4 | .0000000 | 1 | 800 + 1 | .0000000 | 12 | 500 + 3 | .0000000 | 12 | 500 + 3 | .0000000 | 12 | 600 + 1 | .0000000 | 1 | 100 + 1 | .0000000 | 1 | 200 + 1 | .0000000 | 1 | 300 + 1 | .0000000 | 1 | 400 + 3 | .0000000 | 1 | 200 + 2 | .0000000 | 1100 | 100 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.vn asc range between floor(ow_sale.vn) following and floor(ow_sale.qty) following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 6,7,1->5; 2->8; 2->9; 7->10; 2->11; + pn | cn | prc | pn | to_char | dt | vn | to_char | to_char | to_char | to_char +-----+----+------+-----+-------------------+------------+----+-------------------+-------------------+-------------------+------------------- + 100 | 2 | 2400 | 100 | .0000000 | 1401-01-01 | 40 | 3.0000000 | 7.0000000 | .0000000 | .5833333 + 200 | 1 | 0 | 200 | .0000000 | 1401-03-01 | 10 | 4.0000000 | 12.0000000 | 1.0000000 | 1.0000000 + 200 | 3 | 0 | 200 | .0000000 | 1401-04-01 | 40 | 2.0000000 | 5.0000000 | 1.0000000 | .4166667 + 100 | 1 | 0 | 100 | .0000000 | 1401-05-01 | 20 | 4.0000000 | 12.0000000 | 1.0000000 | 1.0000000 + 300 | 1 | 0 | 300 | .0000000 | 1401-05-02 | 30 | 4.0000000 | 12.0000000 | 1.0000000 | 1.0000000 + 400 | 1 | 0 | 400 | .0000000 | 1401-06-01 | 50 | 4.0000000 | 12.0000000 | 1.0000000 | 1.0000000 + 400 | 2 | 0 | 400 | .0000000 | 1401-06-01 | 50 | 3.0000000 | 7.0000000 | 1.0000000 | .5833333 + 500 | 1 | 5 | 500 | .0000000 | 1401-06-01 | 30 | 4.0000000 | 12.0000000 | .0000000 | 1.0000000 + 500 | 3 | 5 | 500 | .0000000 | 1401-06-01 | 30 | 2.0000000 | 5.0000000 | .0000000 | .4166667 + 600 | 3 | 5 | 600 | .0000000 | 1401-06-01 | 30 | 2.0000000 | 5.0000000 | .0000000 | .4166667 + 700 | 4 | 1 | 700 | .0000000 | 1401-06-01 | 40 | 1.0000000 | 2.0000000 | 1.0000000 | .1666667 + 800 | 4 | 1 | 800 | .0000000 | 1401-06-01 | 40 | 1.0000000 | 2.0000000 | .0000000 | .1666667 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.vn desc range between floor(ow_sale.vn) following and unbounded following ); -- mvd 4,5->3; + qty | pn | to_char | dt | vn +------+-----+-------------------+------------+---- + 1 | 200 | .0000000 | 1401-03-01 | 10 + 1 | 300 | .0000000 | 1401-05-02 | 30 + 12 | 500 | .0000000 | 1401-06-01 | 30 + 12 | 500 | .0000000 | 1401-06-01 | 30 + 12 | 600 | .0000000 | 1401-06-01 | 30 + 1 | 700 | .0000000 | 1401-06-01 | 40 + 1 | 800 | .0000000 | 1401-06-01 | 40 + 1 | 400 | .0000000 | 1401-06-01 | 50 + 1 | 400 | .0000000 | 1401-06-01 | 50 + 1 | 100 | .0000000 | 1401-05-01 | 20 + 1100 | 100 | .0000000 | 1401-01-01 | 40 + 1 | 200 | .0000000 | 1401-04-01 | 40 +(12 rows) + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.cn order by ow_sale.cn desc range between 1 following and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 4,5,2->3; 4->6; 1->7; + pn | qty | to_char | cn | dt | to_char | to_char +-----+------+-------------------+----+------------+-------------------+------------------- + 100 | 1100 | .0000000 | 2 | 1401-01-01 | .4545455 | .0000000 + 200 | 1 | .0000000 | 1 | 1401-03-01 | .6363636 | .0000000 + 200 | 1 | .0000000 | 3 | 1401-04-01 | .1818182 | .0000000 + 100 | 1 | .0000000 | 1 | 1401-05-01 | .6363636 | .0000000 + 300 | 1 | .0000000 | 1 | 1401-05-02 | .6363636 | .0000000 + 400 | 1 | .0000000 | 1 | 1401-06-01 | .6363636 | .0000000 + 400 | 1 | .0000000 | 2 | 1401-06-01 | .4545455 | .0000000 + 500 | 12 | .0000000 | 1 | 1401-06-01 | .6363636 | .0000000 + 500 | 12 | .0000000 | 3 | 1401-06-01 | .1818182 | .0000000 + 600 | 12 | .0000000 | 3 | 1401-06-01 | .1818182 | .0000000 + 700 | 1 | .0000000 | 4 | 1401-06-01 | .0000000 | .0000000 + 800 | 1 | .0000000 | 4 | 1401-06-01 | .0000000 | .0000000 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows unbounded preceding ); -- mvd 4,5,6->3; + qty | pn | to_char | cn | dt | vn +------+-----+-------------------+----+------------+---- + 1 | 200 | .0000000 | 1 | 1401-03-01 | 10 + 1 | 300 | .0000000 | 1 | 1401-05-02 | 30 + 12 | 500 | .0000000 | 1 | 1401-06-01 | 30 + 12 | 500 | 1.4142136 | 3 | 1401-06-01 | 30 + 12 | 600 | 1.1547005 | 3 | 1401-06-01 | 30 + 1 | 700 | .0000000 | 4 | 1401-06-01 | 40 + 1 | 800 | .0000000 | 4 | 1401-06-01 | 40 + 1 | 400 | .0000000 | 1 | 1401-06-01 | 50 + 1 | 400 | .7071068 | 2 | 1401-06-01 | 50 + 1 | 100 | .0000000 | 1 | 1401-05-01 | 20 + 1100 | 100 | .0000000 | 2 | 1401-01-01 | 40 + 1 | 200 | .0000000 | 3 | 1401-04-01 | 40 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.prc)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows unbounded preceding ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.vn desc); -- mvd 2,4,5,1,6->3; 2,4,5,1,6->7; 2,5,4,1,9->8; 2,5,4,1,9->10; 2,5,4,1,9->11; 2,5,4,1,9->12; + vn | prc | to_char | cn | dt | qty | to_char | to_char | pn | to_char | to_char | to_char +----+------+-------------------+----+------------+------+-------------------+-------------------+-----+-------------------+-------------------+------------------- + 20 | 0 | .0000000 | 1 | 1401-05-01 | 1 | 1.0000000 | 1.0000000 | 100 | 20.0000000 | 1.0000000 | 1.0000000 + 40 | 0 | .0000000 | 3 | 1401-04-01 | 1 | 3.0000000 | 1.0000000 | 200 | 40.0000000 | 1.0000000 | 3.0000000 + 40 | 1 | .0000000 | 4 | 1401-06-01 | 1 | 4.0000000 | 1.0000000 | 700 | 40.0000000 | 1.0000000 | 3.0000000 + 40 | 1 | .0000000 | 4 | 1401-06-01 | 1 | 4.0000000 | 1.0000000 | 800 | 40.0000000 | 1.0000000 | 3.0000000 + 30 | 5 | .0000000 | 1 | 1401-06-01 | 12 | 1.0000000 | 1.0000000 | 500 | 30.0000000 | 1.0000000 | -4.0000000 + 30 | 5 | 5.6568542 | 3 | 1401-06-01 | 12 | 3.0000000 | 1.0000000 | 500 | 30.0000000 | 1.0000000 | -2.0000000 + 30 | 5 | 4.6188022 | 3 | 1401-06-01 | 12 | 3.0000000 | 1.0000000 | 600 | 30.0000000 | 1.0000000 | -2.0000000 + 10 | 0 | .0000000 | 1 | 1401-03-01 | 1 | 1.0000000 | 1.0000000 | 200 | 10.0000000 | 1.0000000 | 1.0000000 + 30 | 0 | .0000000 | 1 | 1401-05-02 | 1 | 1.0000000 | 1.0000000 | 300 | 30.0000000 | 1.0000000 | 1.0000000 + 50 | 0 | .0000000 | 1 | 1401-06-01 | 1 | 1.0000000 | 1.0000000 | 400 | 50.0000000 | 1.0000000 | 1.0000000 + 50 | 0 | 2.1213203 | 2 | 1401-06-01 | 1 | 2.0000000 | 1.0000000 | 400 | 50.0000000 | 1.0000000 | 2.0000000 + 40 | 2400 | .0000000 | 2 | 1401-01-01 | 1100 | 2.0000000 | 1.0000000 | 100 | 40.0000000 | 1.0000000 | -2398.0000000 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows floor(ow_sale.pn) preceding ); -- mvd 3,4->2; + prc | to_char | dt | cn +------+-------------------+------------+---- + 0 | .0000000 | 1401-05-01 | 1 + 0 | .0000000 | 1401-06-01 | 2 + 0 | .0000000 | 1401-04-01 | 3 + 1 | .0000000 | 1401-06-01 | 4 + 1 | .0000000 | 1401-06-01 | 4 + 0 | .0000000 | 1401-03-01 | 1 + 0 | .0000000 | 1401-05-02 | 1 + 0 | .0000000 | 1401-06-01 | 1 + 5 | .0000000 | 1401-06-01 | 1 + 2400 | .0000000 | 1401-01-01 | 2 + 5 | .0000000 | 1401-06-01 | 3 + 5 | .0000000 | 1401-06-01 | 3 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows 4 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn+ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows 4 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows 4 preceding ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.pn desc), +win3 as (partition by ow_sale.dt order by ow_sale.vn desc); -- mvd 4,2,1,3,7->6; 4,2,1,3,7->8; 2,5,7->9; 4,2,1,3,7->10; 5,3->11; + qty | cn | vn | prc | dt | to_char | pn | to_char | to_char | to_char | to_char +------+----+----+------+------------+-------------------+-----+-------------------+-------------------+-------------------+------------------- + 1 | 1 | 10 | 0 | 1401-03-01 | .0000000 | 200 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 20 | 0 | 1401-05-01 | .0000000 | 100 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 12 | 1 | 30 | 5 | 1401-06-01 | .0000000 | 500 | 12.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 12 | 3 | 30 | 5 | 1401-06-01 | .0000000 | 500 | 12.0000000 | 1.0000000 | 2.0000000 | 1.0000000 + 1 | 3 | 40 | 0 | 1401-04-01 | .0000000 | 200 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 4 | 40 | 1 | 1401-06-01 | .0000000 | 800 | 1.0000000 | 1.0000000 | 1.0000000 | .5714286 + 1 | 1 | 30 | 0 | 1401-05-02 | .0000000 | 300 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 12 | 3 | 30 | 5 | 1401-06-01 | .0000000 | 600 | 12.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1100 | 2 | 40 | 2400 | 1401-01-01 | .0000000 | 100 | 1100.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 4 | 40 | 1 | 1401-06-01 | .0000000 | 700 | 1.0000000 | 1.0000000 | 1.0000000 | .5714286 + 1 | 1 | 50 | 0 | 1401-06-01 | .0000000 | 400 | 1.0000000 | 1.0000000 | 1.0000000 | .2857143 + 1 | 2 | 50 | 0 | 1401-06-01 | .0000000 | 400 | 1.0000000 | 1.0000000 | 2.0000000 | .2857143 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows current row ); -- mvd 1,4,5->7; + cn | qty | cn | dt | pn | cn | to_char +----+------+----+------------+-----+----+------------------- + 3 | 1 | 3 | 1401-04-01 | 200 | 3 | .0000000 + 1 | 1 | 1 | 1401-05-01 | 100 | 1 | .0000000 + 2 | 1 | 2 | 1401-06-01 | 400 | 2 | .0000000 + 4 | 1 | 4 | 1401-06-01 | 700 | 4 | .0000000 + 4 | 1 | 4 | 1401-06-01 | 800 | 4 | .0000000 + 2 | 1100 | 2 | 1401-01-01 | 100 | 2 | .0000000 + 1 | 1 | 1 | 1401-03-01 | 200 | 1 | .0000000 + 1 | 1 | 1 | 1401-05-02 | 300 | 1 | .0000000 + 1 | 1 | 1 | 1401-06-01 | 400 | 1 | .0000000 + 1 | 12 | 1 | 1401-06-01 | 500 | 1 | .0000000 + 3 | 12 | 3 | 1401-06-01 | 500 | 3 | .0000000 + 3 | 12 | 3 | 1401-06-01 | 600 | 3 | .0000000 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn-ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc rows current row ), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 6,7,1->5; 1->8; + pn | pn | qty | pn | to_char | prc | dt | to_char +-----+-----+------+-----+-------------------+------+------------+------------------- + 100 | 100 | 1100 | 100 | .0000000 | 2400 | 1401-01-01 | .0000000 + 200 | 200 | 1 | 200 | .0000000 | 0 | 1401-03-01 | -199.0000000 + 200 | 200 | 1 | 200 | .0000000 | 0 | 1401-04-01 | -197.0000000 + 100 | 100 | 1 | 100 | .0000000 | 0 | 1401-05-01 | -99.0000000 + 300 | 300 | 1 | 300 | .0000000 | 0 | 1401-05-02 | -299.0000000 + 400 | 400 | 1 | 400 | .0000000 | 0 | 1401-06-01 | -399.0000000 + 400 | 400 | 1 | 400 | .0000000 | 0 | 1401-06-01 | -398.0000000 + 500 | 500 | 12 | 500 | .0000000 | 5 | 1401-06-01 | -197.0000000 + 500 | 500 | 12 | 500 | .0000000 | 5 | 1401-06-01 | -99.0000000 + 600 | 600 | 12 | 600 | .0000000 | 5 | 1401-06-01 | -299.0000000 + 700 | 700 | 1 | 700 | .0000000 | 1 | 1401-06-01 | -597.0000000 + 800 | 800 | 1 | 800 | .0000000 | 1 | 1401-06-01 | -696.0000000 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc,ow_sale.vn desc rows between unbounded preceding and 2 preceding ); -- mvd 1,5,3,2->6; + prc | pn | vn | vn | dt | to_char +------+-----+----+----+------------+------------------- + 0 | 200 | 10 | 10 | 1401-03-01 | .0000000 + 5 | 600 | 30 | 30 | 1401-06-01 | .0000000 + 1 | 800 | 40 | 40 | 1401-06-01 | .0000000 + 0 | 100 | 20 | 20 | 1401-05-01 | .0000000 + 2400 | 100 | 40 | 40 | 1401-01-01 | .0000000 + 0 | 200 | 40 | 40 | 1401-04-01 | .0000000 + 0 | 300 | 30 | 30 | 1401-05-02 | .0000000 + 0 | 400 | 50 | 50 | 1401-06-01 | .0000000 + 0 | 400 | 50 | 50 | 1401-06-01 | .0000000 + 5 | 500 | 30 | 30 | 1401-06-01 | .0000000 + 5 | 500 | 30 | 30 | 1401-06-01 | .0000000 + 1 | 700 | 40 | 40 | 1401-06-01 | .0000000 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and current row ); -- mvd 3,5->4; + qty | pn | dt | to_char | vn +------+-----+------------+-------------------+---- + 1 | 200 | 1401-03-01 | .0000000 | 10 + 1 | 300 | 1401-05-02 | .0000000 | 30 + 12 | 500 | 1401-06-01 | .0000000 | 30 + 12 | 500 | 1401-06-01 | .0000000 | 30 + 12 | 600 | 1401-06-01 | .0000000 | 30 + 1 | 700 | 1401-06-01 | .0000000 | 40 + 1 | 800 | 1401-06-01 | .0000000 | 40 + 1 | 400 | 1401-06-01 | .0000000 | 50 + 1 | 400 | 1401-06-01 | .0000000 | 50 + 1 | 100 | 1401-05-01 | .0000000 | 20 + 1100 | 100 | 1401-01-01 | .0000000 | 40 + 1 | 200 | 1401-04-01 | .0000000 | 40 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc), +win3 as (order by ow_sale.cn desc), +win4 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.pn asc), +win5 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.cn asc); -- mvd 5,6,3->4; 2,1,3->7; 5->8; 10,5,1,6,3->9; 2,1,3->11; 5,10->12; + vn | prc | pn | to_char | cn | qty | to_char | to_char | to_char | dt | to_char | to_char +----+------+-----+-------------------+----+------+-------------------+-------------------+-------------------+------------+-------------------+------------------- + 40 | 1 | 700 | .0000000 | 4 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1401-06-01 | .0000000 | 1.0000000 + 40 | 1 | 800 | .0000000 | 4 | 1 | 1.0000000 | 1.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 + 40 | 0 | 200 | .0000000 | 3 | 1 | .0000000 | 3.0000000 | 1.0000000 | 1401-04-01 | .0000000 | 1.0000000 + 30 | 5 | 500 | .0000000 | 3 | 12 | .0000000 | 3.0000000 | 1.0000000 | 1401-06-01 | .5000000 | .7142857 + 30 | 5 | 600 | .0000000 | 3 | 12 | .0000000 | 3.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | .7142857 + 50 | 0 | 400 | .0000000 | 2 | 1 | .0000000 | 6.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | .4285714 + 40 | 2400 | 100 | .0000000 | 2 | 1100 | .0000000 | 6.0000000 | 1.0000000 | 1401-01-01 | .0000000 | 1.0000000 + 20 | 0 | 100 | .0000000 | 1 | 1 | .0000000 | 8.0000000 | 1.0000000 | 1401-05-01 | .0000000 | 1.0000000 + 30 | 5 | 500 | .0000000 | 1 | 12 | .0000000 | 8.0000000 | 1.0000000 | 1401-06-01 | .0000000 | .2857143 + 10 | 0 | 200 | .0000000 | 1 | 1 | .0000000 | 8.0000000 | 1.0000000 | 1401-03-01 | .0000000 | 1.0000000 + 30 | 0 | 300 | .0000000 | 1 | 1 | .0000000 | 8.0000000 | 1.0000000 | 1401-05-02 | .0000000 | 1.0000000 + 50 | 0 | 400 | .0000000 | 1 | 1 | .0000000 | 8.0000000 | 1.0000000 | 1401-06-01 | .0000000 | .2857143 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and 6 following ); -- mvd 7,1,2,5->6; + dt | vn | vn | cn | pn | to_char | prc +------------+----+----+----+-----+-------------------+------ + 1401-03-01 | 10 | 10 | 1 | 200 | .0000000 | 0 + 1401-06-01 | 30 | 30 | 3 | 600 | .0000000 | 5 + 1401-06-01 | 40 | 40 | 4 | 800 | .0000000 | 1 + 1401-05-01 | 20 | 20 | 1 | 100 | .0000000 | 0 + 1401-01-01 | 40 | 40 | 2 | 100 | .0000000 | 2400 + 1401-04-01 | 40 | 40 | 3 | 200 | .0000000 | 0 + 1401-05-02 | 30 | 30 | 1 | 300 | .0000000 | 0 + 1401-06-01 | 50 | 50 | 1 | 400 | .0000000 | 0 + 1401-06-01 | 50 | 50 | 2 | 400 | .0000000 | 0 + 1401-06-01 | 30 | 30 | 1 | 500 | .0000000 | 5 + 1401-06-01 | 30 | 30 | 3 | 500 | .0000000 | 5 + 1401-06-01 | 40 | 40 | 4 | 700 | .0000000 | 1 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.prc order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.cn asc rows between unbounded preceding and 1 following ), +win2 as (partition by ow_sale.prc order by ow_sale.vn desc); -- mvd 1,4,2->3; 6,4->5; 6,4->7; 6,4->8; + cn | pn | to_char | vn | to_char | prc | to_char | to_char +----+-----+-------------------+----+-------------------+------+-------------------+------------------- + 1 | 200 | .0000000 | 10 | 6.0000000 | 0 | 6.0000000 | 6.0000000 + 1 | 100 | .0000000 | 20 | 5.0000000 | 0 | 5.0000000 | 5.0000000 + 1 | 300 | .0000000 | 30 | 4.0000000 | 0 | 4.0000000 | 4.0000000 + 1 | 400 | .0000000 | 50 | 1.0000000 | 0 | 1.0000000 | 1.0000000 + 1 | 500 | .0000000 | 30 | 1.0000000 | 5 | 2.0000000 | 2.0000000 + 3 | 200 | .0000000 | 40 | 3.0000000 | 0 | 3.0000000 | 3.0000000 + 3 | 500 | .0000000 | 30 | 1.0000000 | 5 | 3.0000000 | 3.0000000 + 3 | 600 | .0000000 | 30 | 1.0000000 | 5 | 1.0000000 | 1.0000000 + 2 | 100 | .0000000 | 40 | 1.0000000 | 2400 | 1.0000000 | 1.0000000 + 2 | 400 | .0000000 | 50 | 1.0000000 | 0 | 2.0000000 | 2.0000000 + 4 | 700 | .0000000 | 40 | 1.0000000 | 1 | 2.0000000 | 2.0000000 + 4 | 800 | .0000000 | 40 | 1.0000000 | 1 | 1.0000000 | 1.0000000 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc,ow_sale.pn desc rows between unbounded preceding and unbounded following ); -- mvd 3,1->2; + pn | to_char | vn +-----+-------------------+---- + 300 | .0000000 | 30 + 400 | .0000000 | 50 + 400 | .0000000 | 50 + 500 | .0000000 | 30 + 500 | .0000000 | 30 + 800 | .0000000 | 40 + 100 | 855598.4981289 | 40 + 100 | 855598.4981289 | 20 + 200 | .0000000 | 10 + 200 | .0000000 | 40 + 600 | .0000000 | 30 + 700 | .0000000 | 40 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc,ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 6,2,1,4->5; 6,2,1,4->7; + qty | vn | dt | pn | to_char | cn | to_char +------+----+------------+-----+-------------------+----+------------------- + 1 | 30 | 1401-05-02 | 300 | .0000000 | 1 | .0000000 + 1 | 50 | 1401-06-01 | 400 | .0000000 | 1 | .0000000 + 12 | 30 | 1401-06-01 | 600 | .0000000 | 3 | .0000000 + 1 | 40 | 1401-06-01 | 700 | .0000000 | 4 | .0000000 + 1 | 20 | 1401-05-01 | 100 | .0000000 | 1 | .0000000 + 1 | 10 | 1401-03-01 | 200 | .0000000 | 1 | .0000000 + 12 | 30 | 1401-06-01 | 500 | .0000000 | 1 | .0000000 + 1 | 50 | 1401-06-01 | 400 | .0000000 | 2 | .0000000 + 1100 | 40 | 1401-01-01 | 100 | .0000000 | 2 | 60.0000000 + 1 | 40 | 1401-04-01 | 200 | .0000000 | 3 | .0000000 + 12 | 30 | 1401-06-01 | 500 | .0000000 | 3 | .0000000 + 1 | 40 | 1401-06-01 | 800 | .0000000 | 4 | .0000000 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between 2 preceding and 9 preceding ); -- mvd 1,4,2->3; + cn | vn | to_char | qty +----+----+-------------------+------ + 1 | 30 | .0000000 | 12 + 2 | 50 | .0000000 | 1 + 3 | 30 | .0000000 | 12 + 3 | 30 | .0000000 | 12 + 4 | 40 | .0000000 | 1 + 4 | 40 | .0000000 | 1 + 1 | 10 | .0000000 | 1 + 1 | 20 | .0000000 | 1 + 1 | 30 | .0000000 | 1 + 1 | 50 | .0000000 | 1 + 2 | 40 | .0000000 | 1100 + 3 | 40 | .0000000 | 1 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.vn*ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.cn asc rows between 4 preceding and floor(ow_sale.qty) preceding ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.pn desc), +win3 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,4->2; 6,1,4->5; 1,4->7; + vn | to_char | cn | pn | to_char | dt | to_char +----+-------------------+----+-----+-------------------+------------+------------------- + 30 | .0000000 | 1 | 300 | 1.0000000 | 1401-05-02 | .0000000 + 50 | .0000000 | 1 | 400 | 1.0000000 | 1401-06-01 | .0000000 + 50 | .0000000 | 2 | 400 | 1.0000000 | 1401-06-01 | .0000000 + 30 | .0000000 | 1 | 500 | 1.0000000 | 1401-06-01 | .0000000 + 30 | .0000000 | 3 | 500 | 1.0000000 | 1401-06-01 | .0000000 + 40 | .0000000 | 4 | 800 | 1.0000000 | 1401-06-01 | .0000000 + 40 | .0000000 | 2 | 100 | 1.0000000 | 1401-01-01 | .0000000 + 20 | .0000000 | 1 | 100 | 1.0000000 | 1401-05-01 | .0000000 + 10 | .0000000 | 1 | 200 | 1.0000000 | 1401-03-01 | .0000000 + 40 | .0000000 | 3 | 200 | 1.0000000 | 1401-04-01 | .0000000 + 30 | .0000000 | 3 | 600 | 1.0000000 | 1401-06-01 | .0000000 + 40 | .0000000 | 4 | 700 | 1.0000000 | 1401-06-01 | .0000000 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.qty/ow_sale.qty) preceding and current row ); -- mvd 5,2,3->4; + qty | cn | pn | to_char | dt +------+----+-----+-------------------+------------ + 1 | 1 | 100 | .0000000 | 1401-05-01 + 1 | 3 | 200 | .0000000 | 1401-04-01 + 1 | 1 | 300 | .0000000 | 1401-05-02 + 1 | 1 | 400 | .0000000 | 1401-06-01 + 12 | 1 | 500 | .0000000 | 1401-06-01 + 12 | 3 | 500 | .0000000 | 1401-06-01 + 1 | 4 | 700 | .0000000 | 1401-06-01 + 1100 | 2 | 100 | .0000000 | 1401-01-01 + 1 | 1 | 200 | .0000000 | 1401-03-01 + 1 | 2 | 400 | .0000000 | 1401-06-01 + 12 | 3 | 600 | .0000000 | 1401-06-01 + 1 | 4 | 800 | .0000000 | 1401-06-01 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between 1 preceding and floor(ow_sale.prc+ow_sale.vn) following ); -- mvd 2,6,7->5; + pn | prc | prc | pn | to_char | cn | vn +-----+------+------+-----+-------------------+----+---- + 200 | 0 | 0 | 200 | .0000000 | 1 | 10 + 100 | 0 | 0 | 100 | .0000000 | 1 | 20 + 300 | 0 | 0 | 300 | .0000000 | 1 | 30 + 200 | 0 | 0 | 200 | .0000000 | 3 | 40 + 400 | 0 | 0 | 400 | .0000000 | 1 | 50 + 700 | 1 | 1 | 700 | .0000000 | 4 | 40 + 800 | 1 | 1 | 800 | .0000000 | 4 | 40 + 500 | 5 | 5 | 500 | .0000000 | 1 | 30 + 500 | 5 | 5 | 500 | .0000000 | 3 | 30 + 600 | 5 | 5 | 600 | .0000000 | 3 | 30 + 400 | 0 | 0 | 400 | .0000000 | 2 | 50 + 100 | 2400 | 2400 | 100 | .0000000 | 2 | 40 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between 2 preceding and 4 following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.prc order by ow_sale.cn desc), +win4 as (order by ow_sale.cn asc); -- mvd 1,4,5,6,7->3; 5->8; 10,1,5->9; 1->11; 5->12; 1->13; + cn | cn | to_char | dt | vn | qty | pn | to_char | to_char | prc | to_char | to_char | to_char +----+----+-------------------+------------+----+------+-----+-------------------+-------------------+------+-------------------+-------------------+------------------- + 1 | 1 | .0000000 | 1401-03-01 | 10 | 1 | 200 | .0833333 | 1.0000000 | 0 | 1.0000000 | .0000000 | 1.0000000 + 1 | 1 | .0000000 | 1401-05-01 | 20 | 1 | 100 | .1666667 | 1.0000000 | 0 | 4.0000000 | .0000000 | 1.0000000 + 3 | 3 | .0000000 | 1401-06-01 | 30 | 12 | 600 | .5000000 | 1.0000000 | 5 | 9.0000000 | .0000000 | 3.0000000 + 3 | 3 | .0000000 | 1401-06-01 | 30 | 12 | 500 | .5000000 | 1.0000000 | 5 | 8.0000000 | .0000000 | 3.0000000 + 1 | 1 | .0000000 | 1401-05-02 | 30 | 1 | 300 | .5000000 | 1.0000000 | 0 | 3.0000000 | .0000000 | 1.0000000 + 1 | 1 | .0000000 | 1401-06-01 | 30 | 12 | 500 | .5000000 | 1.0000000 | 5 | 2.0000000 | .0000000 | 1.0000000 + 4 | 4 | .0000000 | 1401-06-01 | 40 | 1 | 800 | .8333333 | 1.0000000 | 1 | 12.0000000 | .0000000 | 4.0000000 + 2 | 2 | .0000000 | 1401-01-01 | 40 | 1100 | 100 | .8333333 | 1.0000000 | 2400 | 6.0000000 | .0000000 | 2.0000000 + 3 | 3 | .0000000 | 1401-04-01 | 40 | 1 | 200 | .8333333 | 1.0000000 | 0 | 10.0000000 | .0000000 | 3.0000000 + 4 | 4 | .0000000 | 1401-06-01 | 40 | 1 | 700 | .8333333 | 1.0000000 | 1 | 11.0000000 | .0000000 | 4.0000000 + 2 | 2 | .0000000 | 1401-06-01 | 50 | 1 | 400 | 1.0000000 | 1.0000000 | 0 | 7.0000000 | .0000000 | 2.0000000 + 1 | 1 | .0000000 | 1401-06-01 | 50 | 1 | 400 | 1.0000000 | 1.0000000 | 0 | 5.0000000 | .0000000 | 1.0000000 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.vn desc rows between floor(ow_sale.pn) preceding and unbounded following ); -- mvd 1,3,4,5,6->2; + prc | to_char | cn | dt | vn | pn +------+-------------------+----+------------+----+----- + 0 | .0000000 | 1 | 1401-03-01 | 10 | 200 + 1 | .0000000 | 4 | 1401-06-01 | 40 | 800 + 5 | .0000000 | 3 | 1401-06-01 | 30 | 600 + 2400 | .0000000 | 2 | 1401-01-01 | 40 | 100 + 0 | .0000000 | 3 | 1401-04-01 | 40 | 200 + 0 | .0000000 | 1 | 1401-05-01 | 20 | 100 + 0 | .0000000 | 1 | 1401-05-02 | 30 | 300 + 0 | .0000000 | 1 | 1401-06-01 | 50 | 400 + 0 | .0000000 | 2 | 1401-06-01 | 50 | 400 + 1 | .0000000 | 4 | 1401-06-01 | 40 | 700 + 5 | .0000000 | 1 | 1401-06-01 | 30 | 500 + 5 | .0000000 | 3 | 1401-06-01 | 30 | 500 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.cn)) OVER(partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn desc rows between 1 preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.pn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn desc rows between 1 preceding and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.pn order by ow_sale.cn asc), +win3 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.cn order by ow_sale.vn asc); -- mvd 3,4,5->2; 7,3,4,5->6; 3,4,5->8; 7,3,4,5->9; 7,3,11,4,5->10; 7,3,11,4,5->12; + qty | to_char | cn | vn | pn | to_char | prc | to_char | to_char | to_char | dt | to_char +------+-------------------+----+----+-----+-------------------+------+-------------------+-------------------+-------------------+------------+------------------- + 1 | .0000000 | 1 | 10 | 200 | 1.0000000 | 0 | 199.0000000 | 1.0000000 | 1.0000000 | 1401-03-01 | 1.0000000 + 1 | .0000000 | 1 | 20 | 100 | 1.0000000 | 0 | 99.0000000 | 1.0000000 | 1.0000000 | 1401-05-01 | 1.0000000 + 1 | 2.0615528 | 1 | 30 | 300 | 1.0000000 | 0 | 299.0000000 | 1.0000000 | 1.0000000 | 1401-05-02 | 1.0000000 + 12 | 2.0615528 | 1 | 30 | 500 | 1.0000000 | 5 | 299.0000000 | 1.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 12 | 1.1547005 | 3 | 30 | 500 | 1.0000000 | 5 | 497.0000000 | 1.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 12 | .0000000 | 3 | 30 | 600 | 1.0000000 | 5 | 497.0000000 | 1.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 1100 | 1200.5000000 | 2 | 40 | 100 | 1.0000000 | 2400 | 98.0000000 | 1.0000000 | 1.0000000 | 1401-01-01 | 1.0000000 + 1 | 1200.5000000 | 3 | 40 | 200 | 1.0000000 | 0 | 98.0000000 | 1.0000000 | 1.0000000 | 1401-04-01 | 1.0000000 + 1 | .0000000 | 4 | 40 | 700 | 1.0000000 | 1 | 197.0000000 | 1.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 1 | .0000000 | 4 | 40 | 800 | 1.0000000 | 1 | 696.0000000 | 1.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 1 | .7071068 | 1 | 50 | 400 | 1.0000000 | 0 | 398.0000000 | 1.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 1 | .7071068 | 2 | 50 | 400 | 1.0000000 | 0 | 398.0000000 | 1.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between current row and current row ); -- mvd 1,6->5; + cn | qty | dt | vn | to_char | pn +----+------+------------+----+-------------------+----- + 1 | 1 | 1401-05-02 | 30 | .0000000 | 300 + 1 | 1 | 1401-06-01 | 50 | .0000000 | 400 + 2 | 1 | 1401-06-01 | 50 | .0000000 | 400 + 1 | 12 | 1401-06-01 | 30 | .0000000 | 500 + 3 | 12 | 1401-06-01 | 30 | .0000000 | 500 + 4 | 1 | 1401-06-01 | 40 | .0000000 | 800 + 2 | 1100 | 1401-01-01 | 40 | .0000000 | 100 + 1 | 1 | 1401-05-01 | 20 | .0000000 | 100 + 1 | 1 | 1401-03-01 | 10 | .0000000 | 200 + 3 | 1 | 1401-04-01 | 40 | .0000000 | 200 + 3 | 12 | 1401-06-01 | 30 | .0000000 | 600 + 4 | 1 | 1401-06-01 | 40 | .0000000 | 700 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc rows between current row and current row ), +win2 as (order by ow_sale.pn asc); -- mvd 4,5,2,1->3; 4,5,2,1->6; 1->7; + pn | vn | to_char | dt | cn | to_char | to_char +-----+----+-------------------+------------+----+-------------------+------------------- + 100 | 20 | .0000000 | 1401-05-01 | 1 | 1.0000000 | .1666667 + 100 | 40 | .0000000 | 1401-01-01 | 2 | 1.0000000 | .1666667 + 200 | 10 | .0000000 | 1401-03-01 | 1 | 1.0000000 | .3333333 + 200 | 40 | .0000000 | 1401-04-01 | 3 | 1.0000000 | .3333333 + 300 | 30 | .0000000 | 1401-05-02 | 1 | 1.0000000 | .4166667 + 400 | 50 | .0000000 | 1401-06-01 | 1 | 1.0000000 | .5833333 + 400 | 50 | .0000000 | 1401-06-01 | 2 | 1.0000000 | .5833333 + 500 | 30 | .0000000 | 1401-06-01 | 1 | 1.0000000 | .7500000 + 500 | 30 | .0000000 | 1401-06-01 | 3 | 1.0000000 | .7500000 + 600 | 30 | .0000000 | 1401-06-01 | 3 | 1.0000000 | .8333333 + 700 | 40 | .0000000 | 1401-06-01 | 4 | 1.0000000 | .9166667 + 800 | 40 | .0000000 | 1401-06-01 | 4 | 1.0000000 | 1.0000000 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc rows between current row and floor(ow_sale.qty+ow_sale.pn) following ); -- mvd 4,5,1->3; + pn | vn | to_char | prc | dt +-----+----+-------------------+------+------------ + 200 | 10 | .0000000 | 0 | 1401-03-01 + 800 | 40 | .0000000 | 1 | 1401-06-01 + 600 | 30 | .0000000 | 5 | 1401-06-01 + 200 | 40 | .0000000 | 0 | 1401-04-01 + 100 | 20 | .0000000 | 0 | 1401-05-01 + 300 | 30 | .0000000 | 0 | 1401-05-02 + 400 | 50 | .0000000 | 0 | 1401-06-01 + 400 | 50 | .0000000 | 0 | 1401-06-01 + 700 | 40 | .0000000 | 1 | 1401-06-01 + 500 | 30 | .0000000 | 5 | 1401-06-01 + 500 | 30 | .0000000 | 5 | 1401-06-01 + 100 | 40 | .0000000 | 2400 | 1401-01-01 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows between current row and unbounded following ); -- mvd 3,4,5->2; + vn | to_char | cn | qty | pn +----+-------------------+----+------+----- + 30 | .0000000 | 1 | 1 | 300 + 50 | .0000000 | 1 | 1 | 400 + 30 | .0000000 | 3 | 12 | 600 + 40 | .0000000 | 4 | 1 | 700 + 20 | .0000000 | 1 | 1 | 100 + 40 | .0000000 | 2 | 1100 | 100 + 10 | .0000000 | 1 | 1 | 200 + 40 | .0000000 | 3 | 1 | 200 + 50 | .0000000 | 2 | 1 | 400 + 30 | .0000000 | 1 | 12 | 500 + 30 | .0000000 | 3 | 12 | 500 + 40 | .0000000 | 4 | 1 | 800 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.cn desc rows between current row and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.vn desc), +win3 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn asc), +win4 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.pn asc); -- mvd 2,4,5->3; 4,1,5->6; 2,5->7; 9,10,4,5->8; + qty | cn | to_char | vn | pn | to_char | to_char | to_char | prc | dt +------+----+-------------------+----+-----+-------------------+-------------------+-------------------+------+------------ + 1 | 1 | .0000000 | 30 | 300 | 1.0000000 | 400.0000000 | 1.0000000 | 0 | 1401-05-02 + 12 | 1 | .0000000 | 30 | 500 | 1.0000000 | .0000000 | 1.0000000 | 5 | 1401-06-01 + 12 | 3 | .0000000 | 30 | 500 | 1.0000000 | .0000000 | 1.0000000 | 5 | 1401-06-01 + 1 | 4 | .0000000 | 40 | 800 | 1.0000000 | .0000000 | 2.0000000 | 1 | 1401-06-01 + 1 | 1 | .0000000 | 50 | 400 | 1.0000000 | 500.0000000 | 1.0000000 | 0 | 1401-06-01 + 1 | 2 | .0000000 | 50 | 400 | 1.0000000 | .0000000 | 1.0000000 | 0 | 1401-06-01 + 1 | 1 | .0000000 | 10 | 200 | 2.0000000 | 100.0000000 | 1.0000000 | 0 | 1401-03-01 + 1 | 1 | .0000000 | 20 | 100 | 1.0000000 | 300.0000000 | 1.0000000 | 0 | 1401-05-01 + 12 | 3 | .0000000 | 30 | 600 | 1.0000000 | .0000000 | 2.0000000 | 5 | 1401-06-01 + 1100 | 2 | .0000000 | 40 | 100 | 1.0000000 | .0000000 | 1.0000000 | 2400 | 1401-01-01 + 1 | 3 | .0000000 | 40 | 200 | 1.0000000 | 500.0000000 | 1.0000000 | 0 | 1401-04-01 + 1 | 4 | .0000000 | 40 | 700 | 1.0000000 | 800.0000000 | 1.0000000 | 1 | 1401-06-01 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between 3 following and floor(ow_sale.qty) following ); -- mvd 5,1,6->4; + vn | prc | prc | to_char | cn | pn +----+------+------+-------------------+----+----- + 10 | 0 | 0 | .0000000 | 1 | 200 + 20 | 0 | 0 | .0000000 | 1 | 100 + 30 | 5 | 5 | .0000000 | 3 | 600 + 40 | 0 | 0 | .0000000 | 3 | 200 + 40 | 1 | 1 | .0000000 | 4 | 800 + 50 | 0 | 0 | .0000000 | 2 | 400 + 30 | 0 | 0 | .0000000 | 1 | 300 + 30 | 5 | 5 | .0000000 | 1 | 500 + 30 | 5 | 5 | .0000000 | 3 | 500 + 40 | 2400 | 2400 | .0000000 | 2 | 100 + 40 | 1 | 1 | .0000000 | 4 | 700 + 50 | 0 | 0 | .0000000 | 1 | 400 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc rows between floor(ow_sale.cn) following and floor(ow_sale.cn) following ), +win2 as (order by ow_sale.vn asc); -- mvd 4,5->3; 5->6; 5->7; 5->8; + qty | qty | to_char | cn | vn | to_char | to_char | to_char +------+------+-------------------+----+----+-------------------+-------------------+------------------- + 1 | 1 | .0000000 | 1 | 10 | 1.0000000 | 1.0000000 | .0000000 + 1 | 1 | .0000000 | 1 | 20 | 2.0000000 | 2.0000000 | .0909091 + 1 | 1 | .0000000 | 1 | 30 | 3.0000000 | 6.0000000 | .1818182 + 12 | 12 | .0000000 | 1 | 30 | 3.0000000 | 6.0000000 | .1818182 + 12 | 12 | .0000000 | 3 | 30 | 3.0000000 | 6.0000000 | .1818182 + 12 | 12 | .0000000 | 3 | 30 | 3.0000000 | 6.0000000 | .1818182 + 1100 | 1100 | .0000000 | 2 | 40 | 7.0000000 | 10.0000000 | .5454545 + 1 | 1 | .0000000 | 3 | 40 | 7.0000000 | 10.0000000 | .5454545 + 1 | 1 | .0000000 | 4 | 40 | 7.0000000 | 10.0000000 | .5454545 + 1 | 1 | .0000000 | 4 | 40 | 7.0000000 | 10.0000000 | .5454545 + 1 | 1 | .0000000 | 1 | 50 | 11.0000000 | 12.0000000 | .9090909 + 1 | 1 | .0000000 | 2 | 50 | 11.0000000 | 12.0000000 | .9090909 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between 3 following and unbounded following ); -- mvd 3,1->2; + vn | to_char | cn +----+-------------------+---- + 10 | .0000000 | 1 + 20 | .0000000 | 1 + 30 | .0000000 | 1 + 30 | .0000000 | 1 + 30 | .0000000 | 3 + 30 | .0000000 | 3 + 40 | .0000000 | 2 + 40 | .0000000 | 3 + 40 | .0000000 | 4 + 40 | .0000000 | 4 + 50 | .0000000 | 1 + 50 | .0000000 | 2 +(12 rows) + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.vn desc rows between floor(ow_sale.cn/ow_sale.pn) following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn-ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn/ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.vn desc rows between floor(ow_sale.cn/ow_sale.pn) following and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.vn desc rows between floor(ow_sale.cn/ow_sale.pn) following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc); -- mvd 6,7,4->5; 6,7,4->8; 7->9; 7->10; 3,6,2,7,4->11; 6,7,4->12; + prc | qty | dt | pn | to_char | cn | vn | to_char | to_char | to_char | to_char | to_char +------+------+------------+-----+-------------------+----+----+-------------------+-------------------+-------------------+-------------------+------------------- + 2400 | 1100 | 1401-01-01 | 100 | .0000000 | 2 | 40 | -2300.0000000 | .0000000 | 1.0000000 | .0000000 | 1.0000000 + 0 | 1 | 1401-03-01 | 200 | .0000000 | 1 | 10 | 200.0000000 | -38.0000000 | 2.0000000 | .0000000 | 1.0000000 + 0 | 1 | 1401-04-01 | 200 | .0000000 | 3 | 40 | 200.0000000 | .0000000 | 3.0000000 | .0000000 | 1.0000000 + 0 | 1 | 1401-05-01 | 100 | .0000000 | 1 | 20 | 100.0000000 | -37.0000000 | 4.0000000 | .0000000 | 1.0000000 + 0 | 1 | 1401-05-02 | 300 | .0000000 | 1 | 30 | 300.0000000 | -19.0000000 | 5.0000000 | .0000000 | 1.0000000 + 0 | 1 | 1401-06-01 | 400 | .0000000 | 1 | 50 | 400.0000000 | -29.0000000 | 6.0000000 | .0000000 | 1.0000000 + 0 | 1 | 1401-06-01 | 400 | .0000000 | 2 | 50 | 400.0000000 | -29.0000000 | 7.0000000 | .0000000 | 1.0000000 + 5 | 12 | 1401-06-01 | 500 | .0000000 | 1 | 30 | 495.0000000 | -48.0000000 | 8.0000000 | .0000000 | 1.0000000 + 5 | 12 | 1401-06-01 | 500 | .0000000 | 3 | 30 | 495.0000000 | -49.0000000 | 9.0000000 | .0000000 | 1.0000000 + 5 | 12 | 1401-06-01 | 600 | .0000000 | 3 | 30 | 595.0000000 | -48.0000000 | 10.0000000 | .0000000 | 1.0000000 + 1 | 1 | 1401-06-01 | 700 | .0000000 | 4 | 40 | 699.0000000 | -48.0000000 | 11.0000000 | .0000000 | 1.0000000 + 1 | 1 | 1401-06-01 | 800 | .0000000 | 4 | 40 | 799.0000000 | -29.0000000 | 12.0000000 | .0000000 | 1.0000000 +(12 rows) + +-- STDDEV_POP() function with NULL OVER() clause -- +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (); -- mvd 3->3; + prc | qty | to_char +------+------+------------------- + 0 | 1 | 219.8484326 + 0 | 1 | 219.8484326 + 0 | 1 | 219.8484326 + 5 | 12 | 219.8484326 + 0 | 1 | 219.8484326 + 1 | 1 | 219.8484326 + 2400 | 1100 | 219.8484326 + 1 | 1 | 219.8484326 + 0 | 1 | 219.8484326 + 0 | 1 | 219.8484326 + 5 | 12 | 219.8484326 + 5 | 12 | 219.8484326 +(12 rows) + +-- STDDEV_POP() function with OVER() clause having ONLY PARTITION BY -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.dt); -- mvd 3,1,6->5; + vn | prc | dt | cn | to_char | pn +----+------+------------+----+-------------------+----- + 10 | 0 | 1401-03-01 | 1 | .0000000 | 200 + 30 | 5 | 1401-06-01 | 3 | .0000000 | 600 + 40 | 1 | 1401-06-01 | 4 | .0000000 | 700 + 20 | 0 | 1401-05-01 | 1 | .0000000 | 100 + 40 | 2400 | 1401-01-01 | 2 | .0000000 | 100 + 40 | 0 | 1401-04-01 | 3 | .0000000 | 200 + 30 | 0 | 1401-05-02 | 1 | .0000000 | 300 + 50 | 0 | 1401-06-01 | 2 | .0000000 | 400 + 50 | 0 | 1401-06-01 | 1 | .0000000 | 400 + 30 | 5 | 1401-06-01 | 3 | .0000000 | 500 + 30 | 5 | 1401-06-01 | 1 | .0000000 | 500 + 40 | 1 | 1401-06-01 | 4 | .0000000 | 800 +(12 rows) + +-- STDDEV_POP() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.dt), +win2 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.vn desc); -- mvd 8,4,3,1->7; 8,4,3,1->9; 6,3,1->10; 6,3,1->11; + pn | pn | vn | cn | qty | prc | to_char | dt | to_char | to_char | to_char +-----+-----+----+----+------+------+-------------------+------------+-------------------+-------------------+------------------- + 100 | 100 | 20 | 1 | 1 | 0 | .0000000 | 1401-05-01 | 1.0000000 | .0000000 | 1.0000000 + 300 | 300 | 30 | 1 | 1 | 0 | .0000000 | 1401-05-02 | 1.0000000 | .0000000 | 1.0000000 + 500 | 500 | 30 | 1 | 12 | 5 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 | 12.0000000 + 500 | 500 | 30 | 3 | 12 | 5 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 | 12.0000000 + 200 | 200 | 40 | 3 | 1 | 0 | .0000000 | 1401-04-01 | 1.0000000 | .0000000 | 1.0000000 + 700 | 700 | 40 | 4 | 1 | 1 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 | 1.0000000 + 400 | 400 | 50 | 1 | 1 | 0 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 | 1.0000000 + 200 | 200 | 10 | 1 | 1 | 0 | .0000000 | 1401-03-01 | 1.0000000 | 1.0000000 | 1.0000000 + 600 | 600 | 30 | 3 | 12 | 5 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 | 12.0000000 + 100 | 100 | 40 | 2 | 1100 | 2400 | .0000000 | 1401-01-01 | 1.0000000 | .0000000 | 1100.0000000 + 800 | 800 | 40 | 4 | 1 | 1 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 | 1.0000000 + 400 | 400 | 50 | 2 | 1 | 0 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 | 1.0000000 +(12 rows) + +-- STDDEV_POP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc); -- mvd 2->7; + qty | pn | vn | cn | vn | qty | to_char +------+-----+----+----+----+------+------------------- + 1 | 800 | 40 | 4 | 40 | 1 | .0000000 + 1 | 700 | 40 | 4 | 40 | 1 | .0000000 + 12 | 600 | 30 | 3 | 30 | 12 | 51.8544973 + 12 | 500 | 30 | 1 | 30 | 12 | 53.8887743 + 12 | 500 | 30 | 3 | 30 | 12 | 53.8887743 + 1 | 400 | 50 | 1 | 50 | 1 | 66.0859057 + 1 | 400 | 50 | 2 | 50 | 1 | 66.0859057 + 1 | 300 | 30 | 1 | 30 | 1 | 66.6966079 + 1 | 200 | 10 | 1 | 10 | 1 | 65.2763357 + 1 | 200 | 40 | 3 | 40 | 1 | 65.2763357 + 1 | 100 | 20 | 1 | 20 | 1 | 26519.7525310 + 1100 | 100 | 40 | 2 | 40 | 1100 | 26519.7525310 +(12 rows) + +-- STDDEV_POP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn+ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc), +win2 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc); -- mvd 1->7; 1->8; 1->9; 3,1->10; + pn | pn | cn | pn | cn | prc | to_char | to_char | to_char | to_char +-----+-----+----+-----+----+------+-------------------+-------------------+-------------------+------------------- + 800 | 800 | 4 | 800 | 4 | 1 | .0000000 | 1.0000000 | .0000000 | .0000000 + 700 | 700 | 4 | 700 | 4 | 1 | .0000000 | 2.0000000 | .0909091 | .0000000 + 600 | 600 | 3 | 600 | 3 | 5 | .0000000 | 3.0000000 | .1818182 | .0000000 + 500 | 500 | 1 | 500 | 1 | 5 | .0000000 | 4.0000000 | .2727273 | .0000000 + 500 | 500 | 3 | 500 | 3 | 5 | .0000000 | 5.0000000 | .2727273 | .0000000 + 400 | 400 | 1 | 400 | 1 | 0 | .0000000 | 6.0000000 | .4545455 | .0000000 + 400 | 400 | 2 | 400 | 2 | 0 | .0000000 | 7.0000000 | .4545455 | .0000000 + 300 | 300 | 1 | 300 | 1 | 0 | .0000000 | 8.0000000 | .6363636 | .0000000 + 200 | 200 | 1 | 200 | 1 | 0 | .0000000 | 9.0000000 | .7272727 | .0000000 + 200 | 200 | 3 | 200 | 3 | 0 | .0000000 | 10.0000000 | .7272727 | .0000000 + 100 | 100 | 1 | 100 | 1 | 0 | .0000000 | 11.0000000 | .9090909 | .0000000 + 100 | 100 | 2 | 100 | 2 | 2400 | .0000000 | 12.0000000 | .9090909 | .0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ); -- mvd 2->6; + vn | cn | dt | vn | pn | to_char +----+----+------------+----+-----+------------------- + 40 | 4 | 1401-06-01 | 40 | 800 | 50.0000000 + 40 | 4 | 1401-06-01 | 40 | 700 | 50.0000000 + 30 | 3 | 1401-06-01 | 30 | 500 | 206.1966052 + 30 | 3 | 1401-06-01 | 30 | 600 | 206.1966052 + 40 | 3 | 1401-04-01 | 40 | 200 | 206.1966052 + 50 | 2 | 1401-06-01 | 50 | 400 | 565.1487072 + 40 | 2 | 1401-01-01 | 40 | 100 | 565.1487072 + 30 | 1 | 1401-05-02 | 30 | 300 | 440.8305293 + 30 | 1 | 1401-06-01 | 30 | 500 | 440.8305293 + 50 | 1 | 1401-06-01 | 50 | 400 | 440.8305293 + 10 | 1 | 1401-03-01 | 10 | 200 | 440.8305293 + 20 | 1 | 1401-05-01 | 20 | 100 | 440.8305293 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc+ow_sale.vn)) OVER(order by ow_sale.vn asc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn*ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range unbounded preceding ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc), +win4 as (order by ow_sale.cn desc); -- mvd 3->2; 5->4; 3->6; 8,3,9->7; 5->10; + prc | to_char | vn | to_char | cn | to_char | to_char | dt | pn | to_char +------+-------------------+----+-------------------+----+-------------------+-------------------+------------+-----+------------------- + 1 | 719.4364531 | 40 | 4.0000000 | 4 | 10.0000000 | .0000000 | 1401-06-01 | 700 | .0000000 + 1 | 719.4364531 | 40 | 4.0000000 | 4 | 10.0000000 | .0000000 | 1401-06-01 | 800 | .0000000 + 5 | 2.5000000 | 30 | 3.0000000 | 3 | 10.0000000 | .0000000 | 1401-06-01 | 500 | .1818182 + 5 | 2.5000000 | 30 | 3.0000000 | 3 | 10.0000000 | .0000000 | 1401-06-01 | 600 | .1818182 + 0 | 719.4364531 | 40 | 3.0000000 | 3 | 10.0000000 | .0000000 | 1401-04-01 | 200 | .1818182 + 2400 | 719.4364531 | 40 | 2.0000000 | 2 | 10.0000000 | .0000000 | 1401-01-01 | 100 | .4545455 + 0 | 662.9010055 | 50 | 2.0000000 | 2 | 10.0000000 | .0000000 | 1401-06-01 | 400 | .4545455 + 0 | 662.9010055 | 50 | 1.0000000 | 1 | 10.0000000 | .0000000 | 1401-06-01 | 400 | .6363636 + 0 | .0000000 | 10 | 1.0000000 | 1 | 10.0000000 | .0000000 | 1401-03-01 | 200 | .6363636 + 5 | 2.5000000 | 30 | 1.0000000 | 1 | 10.0000000 | .0000000 | 1401-06-01 | 500 | .6363636 + 0 | 2.5000000 | 30 | 1.0000000 | 1 | 10.0000000 | .0000000 | 1401-05-02 | 300 | .6363636 + 0 | .0000000 | 20 | 1.0000000 | 1 | 10.0000000 | .0000000 | 1401-05-01 | 100 | .6363636 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range 1 preceding ); -- mvd 2->5; + pn | vn | pn | dt | to_char +-----+----+-----+------------+------------------- + 200 | 10 | 200 | 1401-03-01 | .0000000 + 100 | 20 | 100 | 1401-05-01 | .0000000 + 600 | 30 | 600 | 1401-06-01 | 4.7631397 + 300 | 30 | 300 | 1401-05-02 | 4.7631397 + 500 | 30 | 500 | 1401-06-01 | 4.7631397 + 500 | 30 | 500 | 1401-06-01 | 4.7631397 + 100 | 40 | 100 | 1401-01-01 | 475.8809594 + 700 | 40 | 700 | 1401-06-01 | 475.8809594 + 200 | 40 | 200 | 1401-04-01 | 475.8809594 + 800 | 40 | 800 | 1401-06-01 | 475.8809594 + 400 | 50 | 400 | 1401-06-01 | .0000000 + 400 | 50 | 400 | 1401-06-01 | .0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.pn) as int),cast (floor(ow_sale.vn+ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn*ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range 1 preceding ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc), +win4 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 4->3; 4->5; 1->6; 4->7; 1->8; 1->9; + vn | qty | to_char | cn | to_char | to_char | to_char | to_char | to_char +----+------+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 40 | 1100 | 14.1060126 | 2 | 7.0000000 | .0000000 | 1060.0000000 | .0000000 | .0833333 + 10 | 1 | 13.2664992 | 1 | 8.0000000 | .0000000 | 1060.0000000 | .0000000 | .1666667 + 40 | 1 | 7.1161787 | 3 | 5.0000000 | .0000000 | -18.0000000 | .0000000 | .2500000 + 20 | 1 | 13.2664992 | 1 | 12.0000000 | .0000000 | 1060.0000000 | .0000000 | .3333333 + 30 | 1 | 13.2664992 | 1 | 11.0000000 | .0000000 | 1060.0000000 | .0000000 | .4166667 + 50 | 1 | 13.2664992 | 1 | 9.0000000 | .0000000 | 1060.0000000 | .0000000 | .5000000 + 50 | 1 | 14.1060126 | 2 | 6.0000000 | .0000000 | 1060.0000000 | .0000000 | .5833333 + 30 | 12 | 13.2664992 | 1 | 10.0000000 | .0000000 | 1060.0000000 | .0000000 | .6666667 + 30 | 12 | 7.1161787 | 3 | 4.0000000 | .0000000 | -18.0000000 | .0000000 | .7500000 + 30 | 12 | 7.1161787 | 3 | 3.0000000 | .0000000 | -18.0000000 | .0000000 | .8333333 + 40 | 1 | 5.2383203 | 4 | 2.0000000 | .0000000 | -39.0000000 | .0000000 | .9166667 + 40 | 1 | 5.2383203 | 4 | 1.0000000 | .0000000 | -39.0000000 | .0000000 | 1.0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range current row ); -- mvd 8->7; + qty | cn | vn | prc | vn | cn | to_char | pn +------+----+----+------+----+----+-------------------+----- + 1 | 4 | 40 | 1 | 40 | 4 | .0000000 | 800 + 1 | 4 | 40 | 1 | 40 | 4 | .0000000 | 700 + 12 | 3 | 30 | 5 | 30 | 3 | .0000000 | 600 + 12 | 1 | 30 | 5 | 30 | 1 | .0000000 | 500 + 12 | 3 | 30 | 5 | 30 | 3 | .0000000 | 500 + 1 | 1 | 50 | 0 | 50 | 1 | .0000000 | 400 + 1 | 2 | 50 | 0 | 50 | 2 | .0000000 | 400 + 1 | 1 | 30 | 0 | 30 | 1 | .0000000 | 300 + 1 | 1 | 10 | 0 | 10 | 1 | 15.0000000 | 200 + 1 | 3 | 40 | 0 | 40 | 3 | 15.0000000 | 200 + 1 | 1 | 20 | 0 | 20 | 1 | 10.0000000 | 100 + 1100 | 2 | 40 | 2400 | 40 | 2 | 10.0000000 | 100 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ), +win2 as (order by ow_sale.cn asc); -- mvd 6->5; 6->7; + pn | qty | prc | prc | to_char | cn | to_char +-----+------+------+------+-------------------+----+------------------- + 800 | 1 | 1 | 1 | .0000000 | 4 | 12.0000000 + 700 | 1 | 1 | 1 | .0000000 | 4 | 11.0000000 + 200 | 1 | 0 | 0 | 4.7140452 | 3 | 8.0000000 + 500 | 12 | 5 | 5 | 4.7140452 | 3 | 10.0000000 + 600 | 12 | 5 | 5 | 4.7140452 | 3 | 9.0000000 + 400 | 1 | 0 | 0 | 5.0000000 | 2 | 7.0000000 + 100 | 1100 | 2400 | 2400 | 5.0000000 | 2 | 6.0000000 + 100 | 1 | 0 | 0 | 13.2664992 | 1 | 1.0000000 + 500 | 12 | 5 | 5 | 13.2664992 | 1 | 5.0000000 + 400 | 1 | 0 | 0 | 13.2664992 | 1 | 4.0000000 + 300 | 1 | 0 | 0 | 13.2664992 | 1 | 3.0000000 + 200 | 1 | 0 | 0 | 13.2664992 | 1 | 2.0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and 0 preceding ); -- mvd 5->4; + pn | vn | qty | to_char | cn +-----+----+------+-------------------+---- + 800 | 40 | 1 | .0000000 | 4 + 700 | 40 | 1 | .0000000 | 4 + 500 | 30 | 12 | .4898979 | 3 + 200 | 40 | 1 | .4898979 | 3 + 600 | 30 | 12 | .4898979 | 3 + 400 | 50 | 1 | .7559289 | 2 + 100 | 40 | 1100 | .7559289 | 2 + 300 | 30 | 1 | 1.1426091 | 1 + 400 | 50 | 1 | 1.1426091 | 1 + 500 | 30 | 12 | 1.1426091 | 1 + 200 | 10 | 1 | 1.1426091 | 1 + 100 | 20 | 1 | 1.1426091 | 1 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.cn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty+ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.cn) preceding ), +win2 as (partition by ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc); -- mvd 4->3; 4->5; 4,7,1->6; 9,4,1->8; + pn | vn | to_char | cn | to_char | to_char | qty | to_char | prc +-----+----+-------------------+----+-------------------+-------------------+------+-------------------+------ + 700 | 40 | .0000000 | 4 | .0000000 | .0000000 | 1 | .0000000 | 1 + 800 | 40 | .0000000 | 4 | .0000000 | .0000000 | 1 | .0000000 | 1 + 500 | 30 | .0000000 | 3 | .0000000 | .0000000 | 12 | .0000000 | 5 + 600 | 30 | .0000000 | 3 | .0000000 | .0000000 | 12 | .0000000 | 5 + 200 | 40 | .0000000 | 3 | .0000000 | .0000000 | 1 | .0000000 | 0 + 100 | 40 | .0000000 | 2 | 40.0000000 | .0000000 | 1100 | .0000000 | 2400 + 400 | 50 | .0000000 | 2 | 40.0000000 | .0000000 | 1 | .0000000 | 0 + 500 | 30 | 2015577.0985313 | 1 | 50.0000000 | .0000000 | 12 | .0000000 | 5 + 200 | 10 | 2015577.0985313 | 1 | 50.0000000 | 21.0000000 | 1 | .0000000 | 0 + 100 | 20 | 2015577.0985313 | 1 | 50.0000000 | 31.0000000 | 1 | .0000000 | 0 + 300 | 30 | 2015577.0985313 | 1 | 50.0000000 | 51.0000000 | 1 | .0000000 | 0 + 400 | 50 | 2015577.0985313 | 1 | 50.0000000 | .0000000 | 1 | .0000000 | 0 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 4->3; + qty | vn | to_char | cn +------+----+-------------------+---- + 1 | 40 | 2000.0000000 | 4 + 1 | 40 | 2000.0000000 | 4 + 12 | 30 | 8726.9696917 | 3 + 1 | 40 | 8726.9696917 | 3 + 12 | 30 | 8726.9696917 | 3 + 1 | 50 | 9295.5991343 | 2 + 1100 | 40 | 9295.5991343 | 2 + 1 | 30 | 9384.9021779 | 1 + 1 | 50 | 9384.9021779 | 1 + 12 | 30 | 9384.9021779 | 1 + 1 | 20 | 9384.9021779 | 1 + 1 | 10 | 9384.9021779 | 1 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and 2 following ); -- mvd 4->3; + dt | prc | to_char | pn +------------+------+-------------------+----- + 1401-05-01 | 0 | 10.0000000 | 100 + 1401-01-01 | 2400 | 10.0000000 | 100 + 1401-03-01 | 0 | 54.0254570 | 200 + 1401-04-01 | 0 | 54.0254570 | 200 + 1401-05-02 | 0 | 76.2627039 | 300 + 1401-06-01 | 0 | 110.2501793 | 400 + 1401-06-01 | 0 | 110.2501793 | 400 + 1401-06-01 | 5 | 145.8309524 | 500 + 1401-06-01 | 5 | 145.8309524 | 500 + 1401-06-01 | 5 | 165.5928742 | 600 + 1401-06-01 | 1 | 189.2569201 | 700 + 1401-06-01 | 1 | 216.6971132 | 800 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.cn)) OVER(order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.prc order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.qty) following ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.dt order by ow_sale.cn desc), +win3 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.prc order by ow_sale.vn desc), +win4 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 4->3; 4->5; 4,7,8->6; 1,4,2,8->9; 1,4,2,8->10; 4->11; + prc | vn | to_char | cn | to_char | to_char | dt | pn | to_char | to_char | to_char +------+----+-------------------+----+-------------------+-------------------+------------+-----+-------------------+-------------------+------------------- + 2400 | 40 | 219.8484326 | 2 | 98.0000000 | 1.0000000 | 1401-01-01 | 100 | 1.0000000 | 1.0000000 | .0000000 + 0 | 10 | 145.6862718 | 1 | 98.0000000 | 1.0000000 | 1401-03-01 | 200 | 1.0000000 | 1.0000000 | .0000000 + 0 | 40 | 219.8484326 | 3 | 98.0000000 | 1.0000000 | 1401-04-01 | 200 | 1.0000000 | 1.0000000 | .0000000 + 0 | 20 | 145.6862718 | 1 | 98.0000000 | 1.0000000 | 1401-05-01 | 100 | 1.0000000 | 1.0000000 | .0000000 + 0 | 30 | 145.6862718 | 1 | 98.0000000 | 1.0000000 | 1401-05-02 | 300 | 1.0000000 | 1.0000000 | .0000000 + 0 | 50 | 145.6862718 | 1 | 98.0000000 | 2.0000000 | 1401-06-01 | 400 | 1.0000000 | 1.0000000 | .0000000 + 0 | 50 | 167.6305461 | 2 | 98.0000000 | 1.0000000 | 1401-06-01 | 400 | 1.0000000 | 1.0000000 | .0000000 + 5 | 30 | 219.8484326 | 1 | 98.0000000 | 2.0000000 | 1401-06-01 | 500 | 1.0000000 | 1.0000000 | .0000000 + 5 | 30 | 219.8484326 | 3 | 98.0000000 | 1.0000000 | 1401-06-01 | 500 | 1.0000000 | 1.0000000 | .0000000 + 5 | 30 | 219.8484326 | 3 | 98.0000000 | 1.0000000 | 1401-06-01 | 600 | 1.0000000 | 1.0000000 | .0000000 + 1 | 40 | 219.8484326 | 4 | 98.0000000 | 1.0000000 | 1401-06-01 | 700 | 1.0000000 | 1.0000000 | .0000000 + 1 | 40 | 219.8484326 | 4 | 98.0000000 | 1.0000000 | 1401-06-01 | 800 | 1.0000000 | 1.0000000 | .0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and unbounded following ); -- mvd 6->5; + dt | pn | prc | qty | to_char | cn +------------+-----+------+------+-------------------+---- + 1401-06-01 | 800 | 1 | 1 | 219.0920025 | 4 + 1401-06-01 | 700 | 1 | 1 | 219.0920025 | 4 + 1401-06-01 | 500 | 5 | 12 | 219.0920025 | 3 + 1401-04-01 | 200 | 0 | 1 | 219.0920025 | 3 + 1401-06-01 | 600 | 5 | 12 | 219.0920025 | 3 + 1401-06-01 | 400 | 0 | 1 | 219.0920025 | 2 + 1401-01-01 | 100 | 2400 | 1100 | 219.0920025 | 2 + 1401-05-02 | 300 | 0 | 1 | 219.0920025 | 1 + 1401-06-01 | 400 | 0 | 1 | 219.0920025 | 1 + 1401-06-01 | 500 | 5 | 12 | 219.0920025 | 1 + 1401-05-01 | 100 | 0 | 1 | 219.0920025 | 1 + 1401-03-01 | 200 | 0 | 1 | 219.0920025 | 1 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(order by ow_sale.vn desc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn-ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc); -- mvd 4->5; 4->6; 8,3,9->7; 8,3,9->10; 8,3,9->11; 8,3,9->12; + cn | prc | qty | vn | to_char | to_char | to_char | dt | pn | to_char | to_char | to_char +----+------+------+----+-------------------+-------------------+-------------------+------------+-----+-------------------+-------------------+------------------- + 1 | 0 | 1 | 50 | 219.8484326 | 100.0000000 | 399.0000000 | 1401-06-01 | 400 | -399.0000000 | .2500000 | 1.0000000 + 2 | 0 | 1 | 50 | 219.8484326 | 100.0000000 | 699.0000000 | 1401-06-01 | 400 | -399.0000000 | .5000000 | 2.0000000 + 2 | 2400 | 1100 | 40 | 219.8484326 | 100.0000000 | .0000000 | 1401-01-01 | 100 | 1000.0000000 | 1.0000000 | 1.0000000 + 4 | 1 | 1 | 40 | 219.8484326 | 100.0000000 | .0000000 | 1401-06-01 | 800 | -799.0000000 | 1.0000000 | 4.0000000 + 4 | 1 | 1 | 40 | 219.8484326 | 100.0000000 | 799.0000000 | 1401-06-01 | 700 | -699.0000000 | .7500000 | 3.0000000 + 3 | 0 | 1 | 40 | 219.8484326 | 100.0000000 | .0000000 | 1401-04-01 | 200 | -199.0000000 | 1.0000000 | 1.0000000 + 1 | 5 | 12 | 30 | 219.8484326 | 100.0000000 | .0000000 | 1401-06-01 | 500 | -488.0000000 | .3333333 | 1.0000000 + 3 | 5 | 12 | 30 | 219.8484326 | 100.0000000 | .0000000 | 1401-06-01 | 500 | -488.0000000 | .6666667 | 2.0000000 + 3 | 5 | 12 | 30 | 219.8484326 | 100.0000000 | .0000000 | 1401-06-01 | 600 | -588.0000000 | 1.0000000 | 3.0000000 + 1 | 0 | 1 | 30 | 219.8484326 | 100.0000000 | .0000000 | 1401-05-02 | 300 | -299.0000000 | 1.0000000 | 1.0000000 + 1 | 0 | 1 | 20 | 219.8484326 | 100.0000000 | .0000000 | 1401-05-01 | 100 | -99.0000000 | 1.0000000 | 1.0000000 + 1 | 0 | 1 | 10 | 219.8484326 | 100.0000000 | .0000000 | 1401-03-01 | 200 | -199.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 2 preceding and floor(ow_sale.qty*ow_sale.cn) preceding ); -- mvd 5->4; + vn | prc | prc | to_char | cn +----+------+------+-------------------+---- + 40 | 1 | 1 | .0000000 | 4 + 40 | 1 | 1 | .0000000 | 4 + 30 | 5 | 5 | .0000000 | 3 + 40 | 0 | 0 | .0000000 | 3 + 30 | 5 | 5 | .0000000 | 3 + 50 | 0 | 0 | .0000000 | 2 + 40 | 2400 | 2400 | .0000000 | 2 + 30 | 0 | 0 | .0000000 | 1 + 50 | 0 | 0 | .0000000 | 1 + 30 | 5 | 5 | .0000000 | 1 + 10 | 0 | 0 | .0000000 | 1 + 20 | 0 | 0 | .0000000 | 1 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc/ow_sale.cn) as int),cast (floor(ow_sale.pn+ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.vn) preceding and 2 preceding ), +win2 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.dt,ow_sale.cn order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.vn desc), +win4 as (order by ow_sale.ord, ow_sale.vn asc), +win5 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->2; 5,6,7,3->4; 3->8; 3->9; 6,1->10; + qty | to_char | vn | to_char | prc | cn | dt | to_char | to_char | to_char +------+-------------------+----+-------------------+------+----+------------+-------------------+-------------------+------------------- + 1100 | .5000000 | 40 | .0000000 | 2400 | 2 | 1401-01-01 | .0000000 | .0000000 | .0000000 + 1 | .0000000 | 10 | .0000000 | 0 | 1 | 1401-03-01 | .0000000 | 1100.0000000 | .0000000 + 1 | .5000000 | 40 | .0000000 | 0 | 3 | 1401-04-01 | .0000000 | .0000000 | .0000000 + 1 | 1.1110243 | 20 | .0000000 | 0 | 1 | 1401-05-01 | .0000000 | 1.0000000 | .0000000 + 1 | 1.1055416 | 30 | .0000000 | 0 | 1 | 1401-05-02 | .0000000 | 1.0000000 | .0000000 + 1 | .0000000 | 50 | .0000000 | 0 | 1 | 1401-06-01 | .0000000 | 1.0000000 | .0000000 + 1 | .0000000 | 50 | .0000000 | 0 | 2 | 1401-06-01 | .0000000 | 1.0000000 | .0000000 + 12 | 1.1055416 | 30 | .0000000 | 5 | 1 | 1401-06-01 | .0000000 | 1.0000000 | .0000000 + 12 | 1.1055416 | 30 | .0000000 | 5 | 3 | 1401-06-01 | .0000000 | 1.0000000 | .0000000 + 12 | 1.1055416 | 30 | .0000000 | 5 | 3 | 1401-06-01 | .0000000 | 1.0000000 | .0000000 + 1 | .5000000 | 40 | .0000000 | 1 | 4 | 1401-06-01 | .0000000 | 1.0000000 | .0000000 + 1 | .5000000 | 40 | .0000000 | 1 | 4 | 1401-06-01 | .0000000 | 12.0000000 | .0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 3 preceding and current row ); -- mvd 1->3; + pn | dt | to_char +-----+------------+------------------- + 800 | 1401-06-01 | .0000000 + 700 | 1401-06-01 | .0000000 + 600 | 1401-06-01 | .0000000 + 500 | 1401-06-01 | 10.0000000 + 500 | 1401-06-01 | 10.0000000 + 400 | 1401-06-01 | 12.5000000 + 400 | 1401-06-01 | 12.5000000 + 300 | 1401-05-02 | .0000000 + 200 | 1401-03-01 | 1.5000000 + 200 | 1401-04-01 | 1.5000000 + 100 | 1401-05-01 | .0000000 + 100 | 1401-01-01 | .0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn+ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between floor(ow_sale.pn-ow_sale.vn) preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc); -- mvd 3->2; 3->4; 3->5; 3->6; 8,9->7; + qty | to_char | pn | to_char | to_char | to_char | to_char | dt | vn +------+-------------------+-----+-------------------+-------------------+-------------------+-------------------+------------+---- + 1100 | 549.5000000 | 100 | 2400.0000000 | .0000000 | .0000000 | .0000000 | 1401-01-01 | 40 + 1 | 47.1404521 | 200 | .0000000 | .0000000 | .0000000 | .0000000 | 1401-03-01 | 10 + 1 | 47.1404521 | 200 | .0000000 | .0000000 | .0000000 | .0000000 | 1401-04-01 | 40 + 1 | 549.5000000 | 100 | 2400.0000000 | .0000000 | .0000000 | .0000000 | 1401-05-01 | 20 + 1 | 70.1786292 | 300 | 5.0000000 | .0000000 | .0000000 | .0000000 | 1401-05-02 | 30 + 1 | 105.9990828 | 400 | 5.0000000 | .0000000 | .0000000 | .0000000 | 1401-06-01 | 50 + 1 | 105.9990828 | 400 | 5.0000000 | .0000000 | .0000000 | .0000000 | 1401-06-01 | 50 + 12 | 121.5443952 | 500 | 5.0000000 | .0000000 | .0000000 | .0000000 | 1401-06-01 | 30 + 12 | 121.5443952 | 500 | 5.0000000 | .0000000 | .0000000 | .0000000 | 1401-06-01 | 30 + 12 | 86.1793994 | 600 | 5.0000000 | .0000000 | .0000000 | .0000000 | 1401-06-01 | 30 + 1 | 50.0000000 | 700 | 1.0000000 | .0000000 | .0000000 | .0000000 | 1401-06-01 | 40 + 1 | .0000000 | 800 | 1.0000000 | .0000000 | .0000000 | .0000000 | 1401-06-01 | 40 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.qty)) OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 3 preceding and 4 following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc); -- mvd 4->3; 4->5; 7->6; 7->8; 7->9; 11,7,4,2->10; + prc | pn | to_char | vn | to_char | to_char | cn | to_char | to_char | to_char | dt +------+-----+-------------------+----+-------------------+-------------------+----+-------------------+-------------------+-------------------+------------ + 5 | 500 | .0000000 | 30 | 1.0000000 | 1.0000000 | 1 | 1.0000000 | 11.0000000 | 1.0000000 | 1401-06-01 + 0 | 300 | .0000000 | 30 | 1.0000000 | 1.0000000 | 1 | 2.0000000 | 11.0000000 | 1.0000000 | 1401-05-02 + 0 | 400 | .0000000 | 50 | 1.0000000 | 1.0000000 | 1 | 3.0000000 | 11.0000000 | 1.0000000 | 1401-06-01 + 0 | 200 | .0000000 | 10 | 1.0000000 | 1.0000000 | 1 | 4.0000000 | 11.0000000 | 1.0000000 | 1401-03-01 + 0 | 100 | .0000000 | 20 | 1.0000000 | 1.0000000 | 1 | 5.0000000 | 11.0000000 | 1.0000000 | 1401-05-01 + 0 | 400 | .0000000 | 50 | 1.0000000 | 6.0000000 | 2 | 6.0000000 | 11.0000000 | 1.0000000 | 1401-06-01 + 2400 | 100 | .0000000 | 40 | 2.0000000 | 6.0000000 | 2 | 7.0000000 | 11.0000000 | 1.0000000 | 1401-01-01 + 5 | 600 | .0000000 | 30 | 1.0000000 | 8.0000000 | 3 | 8.0000000 | 11.0000000 | 1.0000000 | 1401-06-01 + 5 | 500 | .0000000 | 30 | 1.0000000 | 8.0000000 | 3 | 9.0000000 | 11.0000000 | 1.0000000 | 1401-06-01 + 0 | 200 | .0000000 | 40 | 2.0000000 | 8.0000000 | 3 | 10.0000000 | 11.0000000 | 1.0000000 | 1401-04-01 + 1 | 800 | .0000000 | 40 | 2.0000000 | 11.0000000 | 4 | 11.0000000 | 11.0000000 | 1.0000000 | 1401-06-01 + 1 | 700 | .0000000 | 40 | 2.0000000 | 11.0000000 | 4 | 12.0000000 | 11.0000000 | 1.0000000 | 1401-06-01 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 1 preceding and unbounded following ); -- mvd 4->3; + cn | cn | to_char | vn +----+----+-------------------+---- + 1 | 1 | 439.6968653 | 10 + 1 | 1 | 441.6348291 | 20 + 3 | 3 | 412.3105626 | 30 + 1 | 1 | 412.3105626 | 30 + 1 | 1 | 412.3105626 | 30 + 3 | 3 | 412.3105626 | 30 + 2 | 2 | 498.8876516 | 40 + 4 | 4 | 498.8876516 | 40 + 4 | 4 | 498.8876516 | 40 + 3 | 3 | 498.8876516 | 40 + 2 | 2 | .0000000 | 50 + 1 | 1 | .0000000 | 50 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc-ow_sale.qty)) OVER(order by ow_sale.cn asc range between floor(ow_sale.vn) preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.vn) preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.cn desc), +win3 as (order by ow_sale.vn asc); -- mvd 1->3; 5,1,6,2->4; 6->7; 1->8; + cn | pn | to_char | to_char | dt | vn | to_char | to_char +----+-----+-------------------+-------------------+------------+----+-------------------+------------------- + 1 | 200 | 1.4409680 | 1.0000000 | 1401-03-01 | 10 | .0000000 | 1300.0000000 + 1 | 100 | 1.4409680 | 1.0000000 | 1401-05-01 | 20 | .0909091 | 1300.0000000 + 3 | 500 | 1.4409680 | 1.0000000 | 1401-06-01 | 30 | .1818182 | 1300.0000000 + 1 | 300 | 1.4409680 | 1.0000000 | 1401-05-02 | 30 | .1818182 | 1300.0000000 + 3 | 600 | 1.4409680 | 1.0000000 | 1401-06-01 | 30 | .1818182 | 1300.0000000 + 1 | 500 | 1.4409680 | 1.0000000 | 1401-06-01 | 30 | .1818182 | 1300.0000000 + 4 | 800 | 1.4409680 | 1.0000000 | 1401-06-01 | 40 | .5454545 | 1300.0000000 + 2 | 100 | 1.4409680 | 1.0000000 | 1401-01-01 | 40 | .5454545 | 1300.0000000 + 3 | 200 | 1.4409680 | 1.0000000 | 1401-04-01 | 40 | .5454545 | 1300.0000000 + 4 | 700 | 1.4409680 | 1.0000000 | 1401-06-01 | 40 | .5454545 | 1300.0000000 + 1 | 400 | 1.4409680 | 1.0000000 | 1401-06-01 | 50 | .9090909 | 1300.0000000 + 2 | 400 | 1.4409680 | 1.0000000 | 1401-06-01 | 50 | .9090909 | 1300.0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and current row ); -- mvd 6->5; + pn | pn | qty | qty | to_char | vn +-----+-----+------+------+-------------------+---- + 200 | 200 | 1 | 1 | .0000000 | 10 + 100 | 100 | 1 | 1 | .0000000 | 20 + 600 | 600 | 12 | 12 | .0000000 | 30 + 300 | 300 | 1 | 1 | .0000000 | 30 + 500 | 500 | 12 | 12 | .0000000 | 30 + 500 | 500 | 12 | 12 | .0000000 | 30 + 100 | 100 | 1100 | 1100 | .0000000 | 40 + 700 | 700 | 1 | 1 | .0000000 | 40 + 200 | 200 | 1 | 1 | .0000000 | 40 + 800 | 800 | 1 | 1 | .0000000 | 40 + 400 | 400 | 1 | 1 | .0000000 | 50 + 400 | 400 | 1 | 1 | .0000000 | 50 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(order by ow_sale.cn asc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.cn asc range between current row and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and current row ); -- mvd 4->6; 4->7; 4->8; + vn | qty | prc | cn | cn | to_char | to_char | to_char +----+------+------+----+----+-------------------+-------------------+------------------- + 20 | 1 | 0 | 1 | 1 | 2.0000000 | 1.0000000 | 5.0000000 + 10 | 1 | 0 | 1 | 1 | 2.0000000 | 1.0000000 | 5.0000000 + 30 | 1 | 0 | 1 | 1 | 2.0000000 | 1.0000000 | 5.0000000 + 50 | 1 | 0 | 1 | 1 | 2.0000000 | 1.0000000 | 5.0000000 + 30 | 12 | 5 | 1 | 1 | 2.0000000 | 1.0000000 | 5.0000000 + 40 | 1100 | 2400 | 2 | 2 | 1200.0000000 | 1.0000000 | 2.0000000 + 50 | 1 | 0 | 2 | 2 | 1200.0000000 | 1.0000000 | 2.0000000 + 40 | 1 | 0 | 3 | 3 | 2.3570226 | 1.0000000 | 3.0000000 + 30 | 12 | 5 | 3 | 3 | 2.3570226 | 1.0000000 | 3.0000000 + 30 | 12 | 5 | 3 | 3 | 2.3570226 | 1.0000000 | 3.0000000 + 40 | 1 | 1 | 4 | 4 | .0000000 | 1.0000000 | 2.0000000 + 40 | 1 | 1 | 4 | 4 | .0000000 | 1.0000000 | 2.0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and 0 following ); -- mvd 2->4; + cn | vn | dt | to_char +----+----+------------+------------------- + 2 | 50 | 1401-06-01 | .0000000 + 1 | 50 | 1401-06-01 | .0000000 + 2 | 40 | 1401-01-01 | 608.2762530 + 4 | 40 | 1401-06-01 | 608.2762530 + 4 | 40 | 1401-06-01 | 608.2762530 + 3 | 40 | 1401-04-01 | 608.2762530 + 3 | 30 | 1401-06-01 | 217.9449472 + 1 | 30 | 1401-05-02 | 217.9449472 + 1 | 30 | 1401-06-01 | 217.9449472 + 3 | 30 | 1401-06-01 | 217.9449472 + 1 | 20 | 1401-05-01 | .0000000 + 1 | 10 | 1401-03-01 | .0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and unbounded following ); -- mvd 3->2; + dt | to_char | pn +------------+-------------------+----- + 1401-06-01 | .0000000 | 800 + 1401-06-01 | .0000000 | 700 + 1401-06-01 | .0000000 | 600 + 1401-06-01 | .0000000 | 500 + 1401-06-01 | .0000000 | 500 + 1401-06-01 | .0000000 | 400 + 1401-06-01 | .0000000 | 400 + 1401-05-02 | .0000000 | 300 + 1401-03-01 | .0000000 | 200 + 1401-04-01 | .0000000 | 200 + 1401-05-01 | .0000000 | 100 + 1401-01-01 | .0000000 | 100 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and unbounded following ), +win2 as (order by ow_sale.vn asc), +win3 as (order by ow_sale.cn desc); -- mvd 3->5; 7->6; 9->8; 7->10; + qty | prc | pn | qty | to_char | to_char | vn | to_char | cn | to_char +------+------+-----+------+-------------------+-------------------+----+-------------------+----+------------------- + 1 | 1 | 800 | 1 | 301.4304324 | 4.0000000 | 40 | .0000000 | 4 | .5454545 + 1 | 1 | 700 | 1 | 313.2495639 | 4.0000000 | 40 | .0000000 | 4 | .5454545 + 12 | 5 | 500 | 12 | 342.4275358 | 3.0000000 | 30 | .1818182 | 3 | .1818182 + 1 | 0 | 200 | 1 | 468.7885317 | 4.0000000 | 40 | .1818182 | 3 | .5454545 + 12 | 5 | 600 | 12 | 326.5338574 | 3.0000000 | 30 | .1818182 | 3 | .1818182 + 1 | 0 | 400 | 1 | 382.4861209 | 5.0000000 | 50 | .4545455 | 2 | .9090909 + 1100 | 2400 | 100 | 1100 | 539.5000000 | 4.0000000 | 40 | .4545455 | 2 | .5454545 + 1 | 0 | 400 | 1 | 382.4861209 | 5.0000000 | 50 | .6363636 | 1 | .9090909 + 1 | 0 | 100 | 1 | 539.5000000 | 2.0000000 | 20 | .6363636 | 1 | .0909091 + 1 | 0 | 300 | 1 | 433.7152983 | 3.0000000 | 30 | .6363636 | 1 | .1818182 + 12 | 5 | 500 | 12 | 342.4275358 | 3.0000000 | 30 | .6363636 | 1 | .1818182 + 1 | 0 | 200 | 1 | 468.7885317 | 1.0000000 | 10 | .6363636 | 1 | .0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 1 following and 0 following ); -- mvd 3->2; + vn | to_char | pn +----+-------------------+----- + 20 | .0000000 | 100 + 40 | .0000000 | 100 + 10 | .0000000 | 200 + 40 | .0000000 | 200 + 30 | .0000000 | 300 + 50 | .0000000 | 400 + 50 | .0000000 | 400 + 30 | .0000000 | 500 + 30 | .0000000 | 500 + 30 | .0000000 | 600 + 40 | .0000000 | 700 + 40 | .0000000 | 800 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 1 following and 3 following ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.qty order by ow_sale.pn desc); -- mvd 4->3; 4->5; 7,4,1->6; + pn | cn | to_char | vn | to_char | to_char | qty +-----+----+-------------------+----+-------------------+-------------------+------ + 400 | 2 | .0000000 | 50 | .0000000 | 1.0000000 | 1 + 400 | 1 | .0000000 | 50 | .0000000 | 1.0000000 | 1 + 100 | 2 | .0000000 | 40 | .0000000 | 1.0000000 | 1100 + 800 | 4 | .0000000 | 40 | .0000000 | 1.0000000 | 1 + 200 | 3 | .0000000 | 40 | .0000000 | 1.0000000 | 1 + 700 | 4 | .0000000 | 40 | .0000000 | 1.0000000 | 1 + 500 | 1 | .0000000 | 30 | .0000000 | 1.0000000 | 12 + 500 | 3 | .0000000 | 30 | .0000000 | 1.0000000 | 12 + 300 | 1 | .0000000 | 30 | .0000000 | 1.0000000 | 1 + 600 | 3 | .0000000 | 30 | .0000000 | 1.0000000 | 12 + 100 | 1 | .0000000 | 20 | .0000000 | 1.0000000 | 1 + 200 | 1 | .0000000 | 10 | .0000000 | 1.0000000 | 1 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.pn/ow_sale.qty) following and unbounded following ); -- mvd 3->2; + dt | to_char | cn +------------+-------------------+---- + 1401-03-01 | .0000000 | 1 + 1401-05-01 | .0000000 | 1 + 1401-05-02 | .0000000 | 1 + 1401-06-01 | .0000000 | 1 + 1401-06-01 | .0000000 | 1 + 1401-01-01 | 383.3168881 | 2 + 1401-06-01 | .0000000 | 2 + 1401-04-01 | .0000000 | 3 + 1401-06-01 | .0000000 | 3 + 1401-06-01 | .0000000 | 3 + 1401-06-01 | .0000000 | 4 + 1401-06-01 | .0000000 | 4 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 2 following and unbounded following ), +win2 as (order by ow_sale.vn asc); -- mvd 2->4; 1->5; + vn | pn | pn | to_char | to_char +----+-----+-----+-------------------+------------------- + 10 | 200 | 200 | .0000000 | 1.0000000 + 20 | 100 | 100 | .0000000 | 2.0000000 + 30 | 600 | 600 | .0000000 | 3.0000000 + 30 | 500 | 500 | .0000000 | 4.0000000 + 30 | 500 | 500 | .0000000 | 5.0000000 + 30 | 300 | 300 | .0000000 | 6.0000000 + 40 | 800 | 800 | .0000000 | 7.0000000 + 40 | 100 | 100 | .0000000 | 8.0000000 + 40 | 200 | 200 | .0000000 | 9.0000000 + 40 | 700 | 700 | .0000000 | 10.0000000 + 50 | 400 | 400 | .0000000 | 11.0000000 + 50 | 400 | 400 | .0000000 | 12.0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows unbounded preceding ); -- mvd 5->4; + cn | qty | vn | to_char | pn +----+------+----+-------------------+----- + 2 | 1100 | 40 | .0000000 | 100 + 1 | 1 | 10 | 50.0000000 | 200 + 3 | 1 | 40 | 47.1404521 | 200 + 1 | 1 | 20 | 50.0000000 | 100 + 1 | 1 | 30 | 74.8331477 | 300 + 1 | 1 | 50 | 106.7187373 | 400 + 2 | 1 | 50 | 117.8030179 | 400 + 1 | 12 | 30 | 139.1941091 | 500 + 3 | 12 | 30 | 149.0711985 | 500 + 3 | 12 | 30 | 167.6305461 | 600 + 4 | 1 | 40 | 191.9882917 | 700 + 4 | 1 | 40 | 219.8484326 | 800 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows unbounded preceding ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.cn desc); -- mvd 4,5->3; 4->6; 4->7; 4->8; 4->9; 4->10; + dt | pn | to_char | cn | vn | to_char | to_char | to_char | to_char | to_char +------------+-----+-------------------+----+----+-------------------+-------------------+-------------------+-------------------+------------------- + 1401-06-01 | 800 | 1014.3416036 | 4 | 40 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 700 | 810.4686941 | 4 | 40 | 2.0000000 | 1.0000000 | 1.0000000 | 2.0000000 | 2.0000000 + 1401-06-01 | 500 | 406.7334493 | 3 | 30 | 3.0000000 | 3.0000000 | 2.0000000 | 3.0000000 | 3.0000000 + 1401-04-01 | 200 | 188.5618083 | 3 | 40 | 4.0000000 | 3.0000000 | 2.0000000 | 4.0000000 | 4.0000000 + 1401-06-01 | 600 | 546.2600113 | 3 | 30 | 5.0000000 | 3.0000000 | 2.0000000 | 5.0000000 | 5.0000000 + 1401-06-01 | 400 | 231.2344865 | 2 | 50 | 6.0000000 | 6.0000000 | 3.0000000 | 6.0000000 | 6.0000000 + 1401-01-01 | 100 | .0000000 | 2 | 40 | 7.0000000 | 6.0000000 | 3.0000000 | 7.0000000 | 7.0000000 + 1401-06-01 | 500 | 220.4399011 | 1 | 30 | 8.0000000 | 8.0000000 | 4.0000000 | 8.0000000 | 8.0000000 + 1401-06-01 | 400 | 163.2993162 | 1 | 50 | 9.0000000 | 8.0000000 | 4.0000000 | 9.0000000 | 9.0000000 + 1401-05-02 | 300 | 172.0465053 | 1 | 30 | 10.0000000 | 8.0000000 | 4.0000000 | 10.0000000 | 10.0000000 + 1401-05-01 | 100 | 192.0286437 | 1 | 20 | 11.0000000 | 8.0000000 | 4.0000000 | 11.0000000 | 11.0000000 + 1401-03-01 | 200 | .0000000 | 1 | 10 | 12.0000000 | 8.0000000 | 4.0000000 | 12.0000000 | 12.0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.cn desc rows 8 preceding ); -- mvd 2,5->4; + qty | cn | pn | to_char | vn +------+----+-----+-------------------+---- + 1100 | 2 | 100 | .0000000 | 40 + 1 | 1 | 200 | 30.0000000 | 10 + 1 | 3 | 200 | 28.2842712 | 40 + 1 | 1 | 100 | 25.9807621 | 20 + 1 | 1 | 300 | 23.3238076 | 30 + 1 | 1 | 400 | 26.8741925 | 50 + 1 | 2 | 400 | 27.9941685 | 50 + 12 | 1 | 500 | 26.3391344 | 30 + 12 | 3 | 500 | 24.9443826 | 30 + 12 | 3 | 600 | 24.5452467 | 30 + 1 | 4 | 700 | 19.1162784 | 40 + 1 | 4 | 800 | 19.1162784 | 40 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn*ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows floor(ow_sale.cn+ow_sale.prc) preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 2->5; 2->6; 2->7; + dt | pn | vn | cn | to_char | to_char | to_char +------------+-----+----+----+-------------------+-------------------+------------------- + 1401-01-01 | 100 | 40 | 2 | .0000000 | .0000000 | 96000.0000000 + 1401-03-01 | 200 | 10 | 1 | 9.0000000 | .0000000 | 96000.0000000 + 1401-04-01 | 200 | 40 | 3 | 7.8740079 | .0000000 | 96000.0000000 + 1401-05-01 | 100 | 20 | 1 | .0000000 | .0000000 | .0000000 + 1401-05-02 | 300 | 30 | 1 | 2.5000000 | .0000000 | .0000000 + 1401-06-01 | 400 | 50 | 1 | 1.0000000 | .0000000 | .0000000 + 1401-06-01 | 400 | 50 | 2 | .9428090 | .0000000 | .0000000 + 1401-06-01 | 500 | 30 | 1 | 5.2566770 | .0000000 | 150.0000000 + 1401-06-01 | 500 | 30 | 3 | 5.7154761 | .0000000 | 96000.0000000 + 1401-06-01 | 600 | 30 | 3 | 5.7154761 | .0000000 | 150.0000000 + 1401-06-01 | 700 | 40 | 4 | 4.5613107 | .0000000 | 150.0000000 + 1401-06-01 | 800 | 40 | 4 | 4.0173236 | .0000000 | 150.0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc rows current row ); -- mvd 4,2->3; + dt | pn | to_char | vn +------------+-----+-------------------+---- + 1401-01-01 | 100 | .0000000 | 40 + 1401-03-01 | 200 | .0000000 | 10 + 1401-04-01 | 200 | .0000000 | 40 + 1401-05-01 | 100 | .0000000 | 20 + 1401-05-02 | 300 | .0000000 | 30 + 1401-06-01 | 400 | .0000000 | 50 + 1401-06-01 | 400 | .0000000 | 50 + 1401-06-01 | 500 | .0000000 | 30 + 1401-06-01 | 500 | .0000000 | 30 + 1401-06-01 | 600 | .0000000 | 30 + 1401-06-01 | 700 | .0000000 | 40 + 1401-06-01 | 800 | .0000000 | 40 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.cn asc rows current row ), +win2 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.pn desc); -- mvd 1,2->4; 6,2,7->5; + cn | vn | vn | to_char | to_char | dt | pn +----+----+----+-------------------+-------------------+------------+----- + 2 | 40 | 40 | .0000000 | .0000000 | 1401-01-01 | 100 + 1 | 10 | 10 | .0000000 | .0000000 | 1401-03-01 | 200 + 3 | 40 | 40 | .0000000 | .0000000 | 1401-04-01 | 200 + 1 | 20 | 20 | .0000000 | .0000000 | 1401-05-01 | 100 + 1 | 30 | 30 | .0000000 | .0000000 | 1401-05-02 | 300 + 1 | 50 | 50 | .0000000 | .0000000 | 1401-06-01 | 400 + 2 | 50 | 50 | .0000000 | .0000000 | 1401-06-01 | 400 + 1 | 30 | 30 | .0000000 | .5000000 | 1401-06-01 | 500 + 3 | 30 | 30 | .0000000 | .5000000 | 1401-06-01 | 500 + 3 | 30 | 30 | .0000000 | .0000000 | 1401-06-01 | 600 + 4 | 40 | 40 | .0000000 | 1.0000000 | 1401-06-01 | 700 + 4 | 40 | 40 | .0000000 | .0000000 | 1401-06-01 | 800 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.cn*ow_sale.qty) preceding ); -- mvd 4,5->3; + dt | pn | to_char | cn | vn +------------+-----+-------------------+----+---- + 1401-01-01 | 100 | .0000000 | 2 | 40 + 1401-03-01 | 200 | .0000000 | 1 | 10 + 1401-04-01 | 200 | .0000000 | 3 | 40 + 1401-05-01 | 100 | 14142.1356237 | 1 | 20 + 1401-05-02 | 300 | 15000.0000000 | 1 | 30 + 1401-06-01 | 400 | 29257.4776767 | 1 | 50 + 1401-06-01 | 400 | 29257.4776767 | 2 | 50 + 1401-06-01 | 500 | .0000000 | 1 | 30 + 1401-06-01 | 500 | .0000000 | 3 | 30 + 1401-06-01 | 600 | .0000000 | 3 | 30 + 1401-06-01 | 700 | 60406.7843196 | 4 | 40 + 1401-06-01 | 800 | 81394.1029805 | 4 | 40 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.cn) as int),cast (floor(ow_sale.prc+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between unbounded preceding and 4 preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (order by ow_sale.pn asc); -- mvd 3->2; 5->4; 5->6; + dt | to_char | cn | to_char | pn | to_char +------------+-------------------+----+-------------------+-----+------------------- + 1401-01-01 | .0000000 | 2 | .0000000 | 100 | 1.0000000 + 1401-05-01 | .0000000 | 1 | 301.0000000 | 100 | 2.0000000 + 1401-03-01 | .0000000 | 1 | 203.0000000 | 200 | 3.0000000 + 1401-04-01 | .0000000 | 3 | 101.0000000 | 200 | 4.0000000 + 1401-05-02 | .0000000 | 1 | 401.0000000 | 300 | 5.0000000 + 1401-06-01 | .8164966 | 2 | 501.0000000 | 400 | 6.0000000 + 1401-06-01 | .5000000 | 1 | 402.0000000 | 400 | 7.0000000 + 1401-06-01 | .8291562 | 1 | .0000000 | 500 | 8.0000000 + 1401-06-01 | .8000000 | 3 | .0000000 | 500 | 9.0000000 + 1401-06-01 | .7637626 | 3 | .0000000 | 600 | 10.0000000 + 1401-06-01 | .7284314 | 4 | .0000000 | 700 | 11.0000000 + 1401-06-01 | .7071068 | 4 | .0000000 | 800 | 12.0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.vn desc rows between unbounded preceding and current row ); -- mvd 2,3->5; + cn | vn | pn | vn | to_char +----+----+-----+----+------------------- + 2 | 40 | 100 | 40 | .0000000 + 1 | 10 | 200 | 10 | 549.5000000 + 3 | 40 | 200 | 40 | 518.0735683 + 1 | 20 | 100 | 20 | 475.8809594 + 1 | 30 | 300 | 30 | 439.6000000 + 1 | 50 | 400 | 50 | 409.5731179 + 2 | 50 | 400 | 50 | 384.5698896 + 1 | 30 | 500 | 30 | 362.9582448 + 3 | 30 | 500 | 30 | 344.5474040 + 3 | 30 | 600 | 30 | 328.6368208 + 4 | 40 | 700 | 40 | 315.0282684 + 4 | 40 | 800 | 40 | 302.9547088 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn-ow_sale.pn) as int),cast (floor(ow_sale.cn*ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc); -- mvd 3,4->2; 3->5; 7,8,9,3,4->6; + qty | to_char | vn | pn | to_char | to_char | prc | cn | dt +------+-------------------+----+-----+-------------------+-------------------+------+----+------------ + 1 | .7284314 | 50 | 400 | .1666667 | .0000000 | 0 | 2 | 1401-06-01 + 1 | .7637626 | 50 | 400 | .1666667 | .0000000 | 0 | 1 | 1401-06-01 + 1 | 1.1426091 | 40 | 800 | .5000000 | .0000000 | 1 | 4 | 1401-06-01 + 1 | .8164966 | 40 | 200 | .5000000 | .0000000 | 0 | 3 | 1401-04-01 + 1 | 1.0444659 | 40 | 700 | .5000000 | .0000000 | 1 | 4 | 1401-06-01 + 1100 | .0000000 | 40 | 100 | .5000000 | .0000000 | 2400 | 2 | 1401-01-01 + 12 | .7071068 | 30 | 500 | .8333333 | .0000000 | 5 | 1 | 1401-06-01 + 12 | .8164966 | 30 | 500 | .8333333 | .0000000 | 5 | 3 | 1401-06-01 + 12 | .8717798 | 30 | 600 | .8333333 | .0000000 | 5 | 3 | 1401-06-01 + 1 | .8000000 | 30 | 300 | .8333333 | .0000000 | 0 | 1 | 1401-05-02 + 1 | .8291562 | 20 | 100 | .9166667 | .0000000 | 0 | 1 | 1401-05-01 + 1 | .5000000 | 10 | 200 | 1.0000000 | .0000000 | 0 | 1 | 1401-03-01 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.pn+ow_sale.qty) following ); -- mvd 6->5; + qty | qty | qty | vn | to_char | cn +------+------+------+----+-------------------+---- + 1100 | 1100 | 1100 | 40 | 1.1426091 | 2 + 1 | 1 | 1 | 10 | 1.1426091 | 1 + 1 | 1 | 1 | 40 | 1.1426091 | 3 + 1 | 1 | 1 | 20 | 1.1426091 | 1 + 1 | 1 | 1 | 30 | 1.1426091 | 1 + 1 | 1 | 1 | 50 | 1.1426091 | 1 + 1 | 1 | 1 | 50 | 1.1426091 | 2 + 12 | 12 | 12 | 30 | 1.1426091 | 1 + 12 | 12 | 12 | 30 | 1.1426091 | 3 + 12 | 12 | 12 | 30 | 1.1426091 | 3 + 1 | 1 | 1 | 40 | 1.1426091 | 4 + 1 | 1 | 1 | 40 | 1.1426091 | 4 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn asc rows between unbounded preceding and 1 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn asc rows between unbounded preceding and 1 following ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.pn desc); -- mvd 3,1->2; 1->4; 3,6,1->5; 1->7; 1->8; 3,1->9; + pn | to_char | cn | to_char | to_char | vn | to_char | to_char | to_char +-----+-------------------+----+-------------------+-------------------+----+-------------------+-------------------+------------------- + 100 | 564.5000000 | 2 | 1.0000000 | .0000000 | 40 | .0000000 | 1.0000000 | 2.0000000 + 100 | 445.7121941 | 1 | 2.0000000 | .0000000 | 20 | .0000000 | 2.0000000 | 5.0000000 + 200 | 525.2874345 | 1 | 3.0000000 | .0000000 | 10 | .1818182 | 3.0000000 | 3.0000000 + 200 | 483.2185711 | 3 | 4.0000000 | .0000000 | 40 | .1818182 | 4.0000000 | 4.0000000 + 300 | 413.5014779 | 1 | 5.0000000 | .0000000 | 30 | .3636364 | 5.0000000 | 6.0000000 + 400 | 365.5393276 | 2 | 6.0000000 | .0000000 | 50 | .4545455 | 6.0000000 | 8.0000000 + 400 | 387.1488139 | 1 | 7.0000000 | .0000000 | 50 | .4545455 | 7.0000000 | 7.0000000 + 500 | 347.1027528 | 1 | 8.0000000 | .0000000 | 30 | .6363636 | 8.0000000 | 9.0000000 + 500 | 331.1524724 | 3 | 9.0000000 | .0000000 | 30 | .6363636 | 9.0000000 | 10.0000000 + 600 | 317.2141128 | 3 | 10.0000000 | .0000000 | 30 | .8181818 | 10.0000000 | 11.0000000 + 700 | 304.8793477 | 4 | 11.0000000 | .0000000 | 40 | .9090909 | 11.0000000 | 12.0000000 + 800 | 304.8793477 | 4 | 12.0000000 | .0000000 | 40 | 1.0000000 | 12.0000000 | 12.0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and unbounded following ); -- mvd 7->6; + cn | dt | pn | cn | qty | to_char | vn +----+------------+-----+----+------+-------------------+---- + 2 | 1401-01-01 | 100 | 2 | 1100 | 1.1426091 | 40 + 1 | 1401-03-01 | 200 | 1 | 1 | 1.1426091 | 10 + 3 | 1401-04-01 | 200 | 3 | 1 | 1.1426091 | 40 + 1 | 1401-05-01 | 100 | 1 | 1 | 1.1426091 | 20 + 1 | 1401-05-02 | 300 | 1 | 1 | 1.1426091 | 30 + 1 | 1401-06-01 | 400 | 1 | 1 | 1.1426091 | 50 + 2 | 1401-06-01 | 400 | 2 | 1 | 1.1426091 | 50 + 1 | 1401-06-01 | 500 | 1 | 12 | 1.1426091 | 30 + 3 | 1401-06-01 | 500 | 3 | 12 | 1.1426091 | 30 + 3 | 1401-06-01 | 600 | 3 | 12 | 1.1426091 | 30 + 4 | 1401-06-01 | 700 | 4 | 1 | 1.1426091 | 40 + 4 | 1401-06-01 | 800 | 4 | 1 | 1.1426091 | 40 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc,ow_sale.pn asc rows between 2 preceding and 5 preceding ); -- mvd 3,1->2; + pn | to_char | vn +-----+-------------------+---- + 100 | .0000000 | 40 + 200 | .0000000 | 10 + 200 | .0000000 | 40 + 100 | .0000000 | 20 + 300 | .0000000 | 30 + 400 | .0000000 | 50 + 400 | .0000000 | 50 + 500 | .0000000 | 30 + 500 | .0000000 | 30 + 600 | .0000000 | 30 + 700 | .0000000 | 40 + 800 | .0000000 | 40 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc,ow_sale.pn desc rows between 3 preceding and 1 preceding ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.cn desc), +win3 as (partition by ow_sale.prc,ow_sale.qty order by ow_sale.vn asc), +win4 as (order by ow_sale.cn asc); -- mvd 3,4->2; 3,4->5; 7,1,3,4->6; 9,3,10->8; 1->11; + cn | to_char | vn | pn | to_char | to_char | dt | to_char | prc | qty | to_char +----+-------------------+----+-----+-------------------+-------------------+------------+-------------------+------+------+------------------- + 1 | .9428090 | 50 | 400 | 1.0000000 | .0000000 | 1401-06-01 | .8000000 | 0 | 1 | .0000000 + 1 | .0000000 | 10 | 200 | 1.0000000 | .0000000 | 1401-03-01 | .0000000 | 0 | 1 | .0000000 + 1 | .4714045 | 30 | 500 | 1.0000000 | .0000000 | 1401-06-01 | .0000000 | 5 | 12 | .0000000 + 1 | .8164966 | 20 | 100 | 1.0000000 | .0000000 | 1401-05-01 | .2000000 | 0 | 1 | .0000000 + 1 | .9428090 | 30 | 300 | 1.0000000 | .0000000 | 1401-05-02 | .4000000 | 0 | 1 | .0000000 + 2 | .0000000 | 40 | 100 | .0000000 | .0000000 | 1401-01-01 | .0000000 | 2400 | 1100 | .4545455 + 2 | .0000000 | 50 | 400 | 1.0000000 | .0000000 | 1401-06-01 | .8000000 | 0 | 1 | .4545455 + 3 | .5000000 | 40 | 200 | 1.0000000 | .0000000 | 1401-04-01 | .6000000 | 0 | 1 | .6363636 + 3 | .4714045 | 30 | 500 | 1.0000000 | .0000000 | 1401-06-01 | .0000000 | 5 | 12 | .6363636 + 3 | .8164966 | 30 | 600 | 1.0000000 | .0000000 | 1401-06-01 | .0000000 | 5 | 12 | .6363636 + 4 | .9428090 | 40 | 700 | 1.0000000 | .0000000 | 1401-06-01 | .0000000 | 1 | 1 | .9090909 + 4 | .4714045 | 40 | 800 | 1.0000000 | .0000000 | 1401-06-01 | .0000000 | 1 | 1 | .9090909 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.vn desc rows between 5 preceding and current row ); -- mvd 1,5->4; + cn | qty | pn | to_char | vn +----+------+-----+-------------------+---- + 2 | 1100 | 100 | .0000000 | 40 + 1 | 1 | 200 | 1200.0000000 | 10 + 3 | 1 | 200 | 1131.3708499 | 40 + 1 | 1 | 100 | 1039.2304845 | 20 + 1 | 1 | 300 | 960.0000000 | 30 + 1 | 1 | 400 | 894.4271910 | 50 + 2 | 1 | 400 | .0000000 | 50 + 1 | 12 | 500 | 1.8633900 | 30 + 3 | 12 | 500 | 2.3570226 | 30 + 3 | 12 | 600 | 2.5000000 | 30 + 4 | 1 | 700 | 2.3570226 | 40 + 4 | 1 | 800 | 2.1921577 | 40 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn desc rows between floor(ow_sale.qty+ow_sale.cn) preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.pn order by ow_sale.pn desc), +win4 as (partition by ow_sale.prc order by ow_sale.cn desc); -- mvd 5,6->4; 3->7; 9,1,6->8; 3->10; 12,5->11; 5,6->13; + qty | qty | vn | to_char | cn | pn | to_char | to_char | dt | to_char | to_char | prc | to_char +------+------+----+-------------------+----+-----+-------------------+-------------------+------------+-------------------+-------------------+------+------------------- + 1100 | 1100 | 40 | .0000000 | 2 | 100 | .0000000 | 1.0000000 | 1401-01-01 | .0000000 | .0000000 | 2400 | 1.0000000 + 1 | 1 | 10 | 50.5000000 | 1 | 200 | .0000000 | 1.0000000 | 1401-03-01 | .0909091 | .4000000 | 0 | 2.0000000 + 1 | 1 | 40 | 47.1475226 | 3 | 200 | .0000000 | 1.0000000 | 1401-04-01 | .1818182 | .0000000 | 0 | 3.0000000 + 1 | 1 | 20 | 46.6761895 | 1 | 100 | .0000000 | 1.0000000 | 1401-05-01 | .2727273 | .4000000 | 0 | 3.0000000 + 1 | 1 | 30 | 81.6551012 | 1 | 300 | .0000000 | 1.0000000 | 1401-05-02 | .3636364 | .4000000 | 0 | 3.0000000 + 1 | 1 | 50 | 124.7219129 | 1 | 400 | .0000000 | 1.0000000 | 1401-06-01 | .4545455 | .4000000 | 0 | 3.0000000 + 1 | 1 | 50 | 122.2709593 | 2 | 400 | .0000000 | 1.0000000 | 1401-06-01 | .5454545 | .2000000 | 0 | 4.0000000 + 12 | 12 | 30 | 139.3753924 | 1 | 500 | .0000000 | 1.0000000 | 1401-06-01 | .6363636 | 1.0000000 | 5 | 8.0000000 + 12 | 12 | 30 | 148.9988814 | 3 | 500 | .0000000 | 1.0000000 | 1401-06-01 | .7272727 | .0000000 | 5 | 9.0000000 + 12 | 12 | 30 | 167.3581788 | 3 | 600 | .0000000 | 1.0000000 | 1401-06-01 | .8181818 | .0000000 | 5 | 10.0000000 + 1 | 1 | 40 | 105.8358267 | 4 | 700 | .0000000 | 1.0000000 | 1401-06-01 | .9090909 | .0000000 | 1 | 6.0000000 + 1 | 1 | 40 | 133.5249665 | 4 | 800 | .0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | .0000000 | 1 | 6.0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.vn/ow_sale.pn) preceding and floor(ow_sale.pn) following ); -- mvd 5->6; + vn | pn | dt | qty | cn | to_char +----+-----+------------+------+----+------------------- + 40 | 100 | 1401-01-01 | 1100 | 2 | 1.1426091 + 10 | 200 | 1401-03-01 | 1 | 1 | 1.1922615 + 40 | 200 | 1401-04-01 | 1 | 3 | 1.1874342 + 20 | 100 | 1401-05-01 | 1 | 1 | 1.2272623 + 30 | 300 | 1401-05-02 | 1 | 1 | 1.2183493 + 50 | 400 | 1401-06-01 | 1 | 1 | 1.1780302 + 50 | 400 | 1401-06-01 | 1 | 2 | 1.0671874 + 30 | 500 | 1401-06-01 | 12 | 1 | 1.0954451 + 30 | 500 | 1401-06-01 | 12 | 3 | .5000000 + 30 | 600 | 1401-06-01 | 12 | 3 | .4714045 + 40 | 700 | 1401-06-01 | 1 | 4 | .0000000 + 40 | 800 | 1401-06-01 | 1 | 4 | .0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.prc,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.pn desc rows between floor(ow_sale.qty) preceding and 2 following ), +win2 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.prc order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 6->5; 2,4,6->7; 4->8; 6->9; + dt | prc | prc | cn | to_char | pn | to_char | to_char | to_char +------------+------+------+----+-------------------+-----+-------------------+-------------------+------------------- + 1401-01-01 | 2400 | 2400 | 2 | .8164966 | 100 | 1.0000000 | .0000000 | .0000000 + 1401-03-01 | 0 | 0 | 1 | .8291562 | 200 | 1.0000000 | 200.0000000 | .0000000 + 1401-04-01 | 0 | 0 | 3 | .8660254 | 200 | 2.0000000 | 100.0000000 | .0000000 + 1401-05-01 | 0 | 0 | 1 | .8660254 | 100 | 1.0000000 | 300.0000000 | .0000000 + 1401-05-02 | 0 | 0 | 1 | .4330127 | 300 | 1.0000000 | 400.0000000 | .0000000 + 1401-06-01 | 0 | 0 | 1 | .4330127 | 400 | 1.0000000 | 400.0000000 | .0000000 + 1401-06-01 | 0 | 0 | 2 | .8291562 | 400 | 2.0000000 | 500.0000000 | .0000000 + 1401-06-01 | 5 | 5 | 1 | .8717798 | 500 | 1.0000000 | .0000000 | .0000000 + 1401-06-01 | 5 | 5 | 3 | 1.0444659 | 500 | 2.0000000 | .0000000 | .0000000 + 1401-06-01 | 5 | 5 | 3 | 1.1426091 | 600 | 1.0000000 | .0000000 | .0000000 + 1401-06-01 | 1 | 1 | 4 | .4714045 | 700 | 1.0000000 | 800.0000000 | .0000000 + 1401-06-01 | 1 | 1 | 4 | .0000000 | 800 | 1.0000000 | .0000000 | .0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between 7 preceding and unbounded following ); -- mvd 2->5; + prc | cn | dt | qty | to_char +------+----+------------+------+------------------- + 2400 | 2 | 1401-01-01 | 1100 | 1.1426091 + 0 | 1 | 1401-03-01 | 1 | 1.1426091 + 0 | 3 | 1401-04-01 | 1 | 1.1426091 + 0 | 1 | 1401-05-01 | 1 | 1.1426091 + 0 | 1 | 1401-05-02 | 1 | 1.1426091 + 0 | 1 | 1401-06-01 | 1 | 1.1426091 + 0 | 2 | 1401-06-01 | 1 | 1.1426091 + 5 | 1 | 1401-06-01 | 12 | 1.1426091 + 5 | 3 | 1401-06-01 | 12 | 1.1922615 + 5 | 3 | 1401-06-01 | 12 | 1.1874342 + 1 | 4 | 1401-06-01 | 1 | 1.2272623 + 1 | 4 | 1401-06-01 | 1 | 1.2183493 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.cn desc rows between 3 preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.cn desc rows between 3 preceding and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.qty order by ow_sale.cn asc); -- mvd 1,3,4->2; 1,6,4->5; 1,3,4->7; + cn | to_char | vn | pn | to_char | qty | to_char +----+-------------------+----+-----+-------------------+------+------------------- + 2 | 779.3080754 | 40 | 100 | 1.0000000 | 1100 | 12.0000000 + 1 | 779.3080754 | 10 | 200 | 1.0000000 | 1 | 12.0000000 + 3 | 779.3080754 | 40 | 200 | 2.0000000 | 1 | 12.0000000 + 1 | 779.3080754 | 20 | 100 | 1.0000000 | 1 | 12.0000000 + 1 | 208.3258335 | 30 | 300 | 1.0000000 | 1 | 11.0000000 + 1 | 205.2676545 | 50 | 400 | 1.0000000 | 1 | 10.0000000 + 2 | 198.0024941 | 50 | 400 | 2.0000000 | 1 | 9.0000000 + 1 | 155.6803115 | 30 | 500 | 1.0000000 | 12 | 8.0000000 + 3 | 139.9599068 | 30 | 500 | 2.0000000 | 12 | 7.0000000 + 3 | 134.9045959 | 30 | 600 | 1.0000000 | 12 | 6.0000000 + 4 | 118.4054053 | 40 | 700 | 1.0000000 | 1 | 5.0000000 + 4 | 113.5957746 | 40 | 800 | 1.0000000 | 1 | 4.0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn asc rows between current row and current row ); -- mvd 2,6->5; + vn | cn | vn | vn | to_char | pn +----+----+----+----+-------------------+----- + 40 | 2 | 40 | 40 | .0000000 | 100 + 10 | 1 | 10 | 10 | .0000000 | 200 + 40 | 3 | 40 | 40 | .0000000 | 200 + 20 | 1 | 20 | 20 | .0000000 | 100 + 30 | 1 | 30 | 30 | .0000000 | 300 + 50 | 1 | 50 | 50 | .0000000 | 400 + 50 | 2 | 50 | 50 | .0000000 | 400 + 30 | 1 | 30 | 30 | .0000000 | 500 + 30 | 3 | 30 | 30 | .0000000 | 500 + 30 | 3 | 30 | 30 | .0000000 | 600 + 40 | 4 | 40 | 40 | .0000000 | 700 + 40 | 4 | 40 | 40 | .0000000 | 800 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.cn asc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between current row and current row ), +win2 as (order by ow_sale.vn asc); -- mvd 4->3; 4->5; 4->6; 4->7; 4->8; 10->9; + qty | pn | to_char | cn | to_char | to_char | to_char | to_char | to_char | vn +------+-----+-------------------+----+-------------------+-------------------+-------------------+-------------------+-------------------+---- + 1 | 200 | .0000000 | 1 | 10.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 10 + 1 | 100 | .0000000 | 1 | 20.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 2.0000000 | 20 + 12 | 500 | .0000000 | 3 | 30.0000000 | 1.0000000 | 1.0000000 | 12.0000000 | 3.0000000 | 30 + 12 | 500 | .0000000 | 1 | 30.0000000 | 1.0000000 | 1.0000000 | 12.0000000 | 4.0000000 | 30 + 1 | 300 | .0000000 | 1 | 30.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 5.0000000 | 30 + 12 | 600 | .0000000 | 3 | 30.0000000 | 1.0000000 | 1.0000000 | 12.0000000 | 6.0000000 | 30 + 1100 | 100 | .0000000 | 2 | 40.0000000 | 1.0000000 | 1.0000000 | 1100.0000000 | 7.0000000 | 40 + 1 | 200 | .0000000 | 3 | 40.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 8.0000000 | 40 + 1 | 700 | .0000000 | 4 | 40.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 9.0000000 | 40 + 1 | 800 | .0000000 | 4 | 40.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 10.0000000 | 40 + 1 | 400 | .0000000 | 2 | 50.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 11.0000000 | 50 + 1 | 400 | .0000000 | 1 | 50.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 12.0000000 | 50 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between current row and floor(ow_sale.qty+ow_sale.prc) following ); -- mvd 4->6; + pn | pn | pn | cn | pn | to_char +-----+-----+-----+----+-----+------------------- + 100 | 100 | 100 | 2 | 100 | 662.9010055 + 200 | 200 | 200 | 1 | 200 | .0000000 + 200 | 200 | 200 | 3 | 200 | .0000000 + 100 | 100 | 100 | 1 | 100 | .0000000 + 300 | 300 | 300 | 1 | 300 | .0000000 + 400 | 400 | 400 | 1 | 400 | .0000000 + 400 | 400 | 400 | 2 | 400 | 2.5000000 + 500 | 500 | 500 | 1 | 500 | 1.9595918 + 500 | 500 | 500 | 3 | 500 | 2.0000000 + 600 | 600 | 600 | 3 | 600 | 1.8856181 + 700 | 700 | 700 | 4 | 700 | .0000000 + 800 | 800 | 800 | 4 | 800 | .0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn asc,ow_sale.cn desc rows between current row and floor(ow_sale.vn*ow_sale.vn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn asc,ow_sale.cn desc rows between current row and floor(ow_sale.vn*ow_sale.vn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn asc,ow_sale.cn desc rows between current row and floor(ow_sale.vn*ow_sale.vn) following ), +win2 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.dt order by ow_sale.vn asc); -- mvd 2,6,7->5; 2,6,7->8; 3,6,10->9; 2,6,7->11; + prc | cn | dt | cn | to_char | vn | pn | to_char | to_char | qty | to_char +------+----+------------+----+-------------------+----+-----+-------------------+-------------------+------+------------------- + 2400 | 2 | 1401-01-01 | 2 | 293.0839849 | 40 | 100 | 100.0000000 | 1.0000000 | 1100 | 10.0000000 + 0 | 1 | 1401-03-01 | 1 | 210.8601824 | 10 | 200 | 100.0000000 | 1.0000000 | 1 | 10.0000000 + 0 | 3 | 1401-04-01 | 3 | 207.5461635 | 40 | 200 | 400.0000000 | 1.0000000 | 1 | 20.0000000 + 0 | 1 | 1401-05-01 | 1 | 199.8511174 | 20 | 100 | 400.0000000 | 1.0000000 | 1 | 20.0000000 + 0 | 1 | 1401-05-02 | 1 | 156.4356397 | 30 | 300 | 900.0000000 | 1.0000000 | 1 | 30.0000000 + 0 | 1 | 1401-06-01 | 1 | 139.2730397 | 50 | 400 | 900.0000000 | 4.0000000 | 1 | 35.0000000 + 0 | 2 | 1401-06-01 | 2 | 132.4228287 | 50 | 400 | 900.0000000 | 3.0000000 | 1 | 35.0000000 + 5 | 1 | 1401-06-01 | 1 | 111.7364757 | 30 | 500 | 900.0000000 | 2.0000000 | 12 | 35.0000000 + 5 | 3 | 1401-06-01 | 3 | 106.9123473 | 30 | 500 | 900.0000000 | 3.0000000 | 12 | 35.0000000 + 5 | 3 | 1401-06-01 | 3 | 77.2024755 | 30 | 600 | 900.0000000 | 1.0000000 | 12 | 35.0000000 + 1 | 4 | 1401-06-01 | 4 | 50.0000000 | 40 | 700 | 1600.0000000 | 2.0000000 | 1 | 41.0000000 + 1 | 4 | 1401-06-01 | 4 | .0000000 | 40 | 800 | 1600.0000000 | 1.0000000 | 1 | 41.0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between current row and unbounded following ); -- mvd 1->3; + vn | pn | to_char +----+-----+------------------- + 40 | 100 | 662.9010055 + 10 | 200 | 2.1474567 + 40 | 200 | 2.1931712 + 20 | 100 | 2.2333057 + 30 | 300 | 2.2603927 + 50 | 400 | 2.2587698 + 50 | 400 | 2.1921577 + 30 | 500 | 1.9595918 + 30 | 500 | 2.0000000 + 30 | 600 | 1.8856181 + 40 | 700 | .0000000 + 40 | 800 | .0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and unbounded following ), +win2 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.qty order by ow_sale.vn asc); -- mvd 3->5; 1,2,4->6; + cn | vn | pn | qty | to_char | to_char +----+----+-----+------+-------------------+------------------- + 2 | 40 | 100 | 1100 | 662.9010055 | 1.0000000 + 1 | 10 | 200 | 1 | 2.1474567 | .2500000 + 3 | 40 | 200 | 1 | 2.1931712 | 1.0000000 + 1 | 20 | 100 | 1 | 2.2333057 | .5000000 + 1 | 30 | 300 | 1 | 2.2603927 | .7500000 + 1 | 50 | 400 | 1 | 2.2587698 | 1.0000000 + 2 | 50 | 400 | 1 | 2.1921577 | 1.0000000 + 1 | 30 | 500 | 12 | 1.9595918 | 1.0000000 + 3 | 30 | 500 | 12 | 2.0000000 | 1.0000000 + 3 | 30 | 600 | 12 | 1.8856181 | 1.0000000 + 4 | 40 | 700 | 1 | .0000000 | 1.0000000 + 4 | 40 | 800 | 1 | .0000000 | 1.0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between floor(ow_sale.vn*ow_sale.prc) following and 5 following ); -- mvd 2->6; + qty | cn | cn | vn | vn | to_char +------+----+----+----+----+------------------- + 1100 | 2 | 2 | 40 | 40 | .0000000 + 1 | 1 | 1 | 10 | 10 | .7637626 + 1 | 3 | 3 | 40 | 40 | .7637626 + 1 | 1 | 1 | 20 | 20 | .7637626 + 1 | 1 | 1 | 30 | 30 | .8975275 + 1 | 1 | 1 | 50 | 50 | 1.1055416 + 1 | 2 | 2 | 50 | 50 | 1.0671874 + 12 | 1 | 1 | 30 | 30 | .0000000 + 12 | 3 | 3 | 30 | 30 | .0000000 + 12 | 3 | 3 | 30 | 30 | .0000000 + 1 | 4 | 4 | 40 | 40 | .0000000 + 1 | 4 | 4 | 40 | 40 | .0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc*ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.prc) following and 1 following ); -- mvd 6->7; 6->8; + vn | prc | dt | vn | qty | cn | to_char | to_char +----+------+------------+----+------+----+-------------------+------------------- + 40 | 2400 | 1401-01-01 | 40 | 1100 | 2 | .0000000 | .0000000 + 10 | 0 | 1401-03-01 | 10 | 1 | 1 | 1.0000000 | .0000000 + 40 | 0 | 1401-04-01 | 40 | 1 | 3 | 1.0000000 | .0000000 + 20 | 0 | 1401-05-01 | 20 | 1 | 1 | .0000000 | .0000000 + 30 | 0 | 1401-05-02 | 30 | 1 | 1 | .0000000 | .0000000 + 50 | 0 | 1401-06-01 | 50 | 1 | 1 | .5000000 | .0000000 + 50 | 0 | 1401-06-01 | 50 | 1 | 2 | .5000000 | 2500.0000000 + 30 | 5 | 1401-06-01 | 30 | 12 | 1 | .0000000 | .0000000 + 30 | 5 | 1401-06-01 | 30 | 12 | 3 | .0000000 | .0000000 + 30 | 5 | 1401-06-01 | 30 | 12 | 3 | .0000000 | .0000000 + 40 | 1 | 1401-06-01 | 40 | 1 | 4 | .0000000 | 800.0000000 + 40 | 1 | 1401-06-01 | 40 | 1 | 4 | .0000000 | .0000000 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.cn) following and unbounded following ); -- mvd 7->6; + vn | pn | qty | vn | pn | to_char | cn +----+-----+------+----+-----+-------------------+---- + 40 | 100 | 1100 | 40 | 100 | 206.1552813 | 2 + 10 | 200 | 1 | 10 | 200 | 206.1552813 | 1 + 40 | 200 | 1 | 40 | 200 | 139.9708424 | 3 + 20 | 100 | 1 | 20 | 100 | 156.1249500 | 1 + 30 | 300 | 1 | 30 | 300 | 139.9708424 | 1 + 50 | 400 | 1 | 50 | 400 | 134.3709625 | 1 + 50 | 400 | 1 | 50 | 400 | 111.8033989 | 2 + 30 | 500 | 12 | 30 | 500 | 111.8033989 | 1 + 30 | 500 | 12 | 30 | 500 | .0000000 | 3 + 30 | 600 | 12 | 30 | 600 | .0000000 | 3 + 40 | 700 | 1 | 40 | 700 | .0000000 | 4 + 40 | 800 | 1 | 40 | 800 | .0000000 | 4 +(12 rows) + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.cn) following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 4->5; 7->6; + vn | prc | prc | cn | to_char | to_char | pn +----+------+------+----+-------------------+-------------------+----- + 40 | 2400 | 2400 | 2 | 5.0408333 | .0000000 | 100 + 10 | 0 | 0 | 1 | 5.0408333 | .0000000 | 200 + 40 | 0 | 0 | 3 | 5.4435883 | .0000000 | 200 + 20 | 0 | 0 | 1 | 5.3253521 | .0000000 | 100 + 30 | 0 | 0 | 1 | 5.4435883 | .0000000 | 300 + 50 | 0 | 0 | 1 | 5.5000000 | .0000000 | 400 + 50 | 0 | 0 | 2 | 5.5000000 | .0000000 | 400 + 30 | 5 | 5 | 1 | 5.5000000 | .0000000 | 500 + 30 | 5 | 5 | 3 | .0000000 | .0000000 | 500 + 30 | 5 | 5 | 3 | .0000000 | .0000000 | 600 + 40 | 1 | 1 | 4 | .0000000 | .0000000 | 700 + 40 | 1 | 1 | 4 | .0000000 | .0000000 | 800 +(12 rows) + +-- STDDEV_POP() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.cn desc,ow_sale.pn asc,ow_sale.cn asc); -- mvd 6,1,8->7; + cn | vn | vn | prc | vn | dt | to_char | pn +----+----+----+------+----+------------+-------------------+----- + 1 | 20 | 20 | 0 | 20 | 1401-05-01 | .0000000 | 100 + 3 | 40 | 40 | 0 | 40 | 1401-04-01 | .0000000 | 200 + 1 | 30 | 30 | 0 | 30 | 1401-05-02 | .0000000 | 300 + 1 | 50 | 50 | 0 | 50 | 1401-06-01 | .0000000 | 400 + 1 | 30 | 30 | 5 | 30 | 1401-06-01 | .0000000 | 500 + 3 | 30 | 30 | 5 | 30 | 1401-06-01 | .0000000 | 500 + 4 | 40 | 40 | 1 | 40 | 1401-06-01 | .0000000 | 700 + 2 | 40 | 40 | 2400 | 40 | 1401-01-01 | .0000000 | 100 + 1 | 10 | 10 | 0 | 10 | 1401-03-01 | .0000000 | 200 + 2 | 50 | 50 | 0 | 50 | 1401-06-01 | .0000000 | 400 + 3 | 30 | 30 | 5 | 30 | 1401-06-01 | .0000000 | 600 + 4 | 40 | 40 | 1 | 40 | 1401-06-01 | .0000000 | 800 +(12 rows) + +-- STDDEV_POP() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.vn desc,ow_sale.vn desc,ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.vn desc,ow_sale.vn desc,ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn/ow_sale.qty)) OVER(partition by ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.vn desc,ow_sale.vn desc,ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.vn desc,ow_sale.vn desc,ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.vn desc,ow_sale.vn desc,ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.vn desc,ow_sale.vn desc,ow_sale.cn asc); -- mvd 3,4,1->2; 3,4,1->5; 3,4,1->6; 3,4,1->7; 3,4,1->8; 3,4,1->9; + vn | to_char | cn | qty | to_char | to_char | to_char | to_char | to_char +----+-------------------+----+------+-------------------+-------------------+-------------------+-------------------+------------------- + 30 | .0000000 | 1 | 12 | .0000000 | 1.0000000 | 41.0000000 | 1.0000000 | 1.0000000 + 30 | .0000000 | 3 | 12 | .0000000 | 1.0000000 | 41.0000000 | 1.0000000 | 1.0000000 + 30 | .0000000 | 3 | 12 | .0000000 | 1.0000000 | 41.0000000 | 1.0000000 | 1.0000000 + 40 | .0000000 | 4 | 1 | .0000000 | 1.0000000 | 700.0000000 | 1.0000000 | 1.0000000 + 40 | .0000000 | 4 | 1 | .0000000 | 1.0000000 | 700.0000000 | 1.0000000 | 1.0000000 + 50 | .0000000 | 2 | 1 | .0000000 | 1.0000000 | 400.0000000 | 1.0000000 | 1.0000000 + 10 | .0000000 | 1 | 1 | .0000000 | 1.0000000 | 200.0000000 | 1.0000000 | 1.0000000 + 20 | .0000000 | 1 | 1 | .0000000 | 1.0000000 | 100.0000000 | 1.0000000 | 1.0000000 + 30 | .0000000 | 1 | 1 | .0000000 | 1.0000000 | 300.0000000 | 1.0000000 | 1.0000000 + 40 | .0000000 | 3 | 1 | .0000000 | 1.0000000 | 200.0000000 | 1.0000000 | 1.0000000 + 40 | .0000000 | 2 | 1100 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 50 | .0000000 | 1 | 1 | .0000000 | 1.0000000 | 400.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.cn desc range unbounded preceding ); -- mvd 8->7; + qty | prc | pn | vn | vn | qty | to_char | cn +------+------+-----+----+----+------+-------------------+---- + 1 | 0 | 300 | 30 | 30 | 1 | .0000000 | 1 + 12 | 5 | 500 | 30 | 30 | 12 | .0000000 | 1 + 1 | 0 | 400 | 50 | 50 | 1 | .0000000 | 1 + 1 | 0 | 200 | 10 | 10 | 1 | .0000000 | 1 + 1 | 0 | 100 | 20 | 20 | 1 | .0000000 | 1 + 12 | 5 | 500 | 30 | 30 | 12 | .0000000 | 3 + 1 | 0 | 200 | 40 | 40 | 1 | .0000000 | 3 + 12 | 5 | 600 | 30 | 30 | 12 | .0000000 | 3 + 1100 | 2400 | 100 | 40 | 40 | 1100 | 30.0000000 | 2 + 1 | 0 | 400 | 50 | 50 | 1 | 30.0000000 | 2 + 1 | 1 | 700 | 40 | 40 | 1 | .0000000 | 4 + 1 | 1 | 800 | 40 | 40 | 1 | .0000000 | 4 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.cn asc range unbounded preceding ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.pn asc), +win3 as (order by ow_sale.pn asc), +win4 as (order by ow_sale.pn desc); -- mvd 1,4,5->3; 7,5,8->6; 8->9; 8->10; 8->11; 7,5,8->12; + cn | cn | to_char | qty | vn | to_char | dt | pn | to_char | to_char | to_char | to_char +----+----+-------------------+------+----+-------------------+------------+-----+-------------------+-------------------+-------------------+------------------- + 4 | 4 | 262.4669291 | 1 | 40 | 1.0000000 | 1401-06-01 | 800 | 1.0000000 | 1.0000000 | .0833333 | 1.0000000 + 4 | 4 | 262.4669291 | 1 | 40 | 1.0000000 | 1401-06-01 | 700 | .9090909 | .9166667 | .1666667 | 1.0000000 + 3 | 3 | 47.1404521 | 12 | 30 | 1.0000000 | 1401-06-01 | 600 | .8181818 | .8333333 | .2500000 | 1.0000000 + 1 | 1 | .0000000 | 12 | 30 | 2.0000000 | 1401-06-01 | 500 | .6363636 | .7500000 | .4166667 | 2.0000000 + 3 | 3 | 47.1404521 | 12 | 30 | 1.0000000 | 1401-06-01 | 500 | .6363636 | .7500000 | .4166667 | 2.0000000 + 1 | 1 | .0000000 | 1 | 50 | 1.0000000 | 1401-06-01 | 400 | .4545455 | .5833333 | .5833333 | 2.0000000 + 2 | 2 | .0000000 | 1 | 50 | 2.0000000 | 1401-06-01 | 400 | .4545455 | .5833333 | .5833333 | 2.0000000 + 1 | 1 | .0000000 | 1 | 30 | 1.0000000 | 1401-05-02 | 300 | .3636364 | .4166667 | .6666667 | 1.0000000 + 3 | 3 | .0000000 | 1 | 40 | 1.0000000 | 1401-04-01 | 200 | .1818182 | .3333333 | .8333333 | 1.0000000 + 1 | 1 | .0000000 | 1 | 10 | 1.0000000 | 1401-03-01 | 200 | .1818182 | .3333333 | .8333333 | 1.0000000 + 1 | 1 | .0000000 | 1 | 20 | 1.0000000 | 1401-05-01 | 100 | .0000000 | .1666667 | 1.0000000 | 1.0000000 + 2 | 2 | .0000000 | 1100 | 40 | 1.0000000 | 1401-01-01 | 100 | .0000000 | .1666667 | 1.0000000 | 1.0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.vn asc range floor(ow_sale.cn) preceding ); -- mvd 3,2,8,9->7; + cn | vn | dt | prc | cn | dt | to_char | qty | pn +----+----+------------+------+----+------------+-------------------+------+----- + 1 | 20 | 1401-05-01 | 0 | 1 | 1401-05-01 | .0000000 | 1 | 100 + 3 | 40 | 1401-04-01 | 0 | 3 | 1401-04-01 | .0000000 | 1 | 200 + 1 | 30 | 1401-05-02 | 0 | 1 | 1401-05-02 | .0000000 | 1 | 300 + 2 | 50 | 1401-06-01 | 0 | 2 | 1401-06-01 | .0000000 | 1 | 400 + 1 | 50 | 1401-06-01 | 0 | 1 | 1401-06-01 | .0000000 | 1 | 400 + 4 | 40 | 1401-06-01 | 1 | 4 | 1401-06-01 | .0000000 | 1 | 800 + 3 | 30 | 1401-06-01 | 5 | 3 | 1401-06-01 | .0000000 | 12 | 600 + 1 | 10 | 1401-03-01 | 0 | 1 | 1401-03-01 | .0000000 | 1 | 200 + 4 | 40 | 1401-06-01 | 1 | 4 | 1401-06-01 | .0000000 | 1 | 700 + 1 | 30 | 1401-06-01 | 5 | 1 | 1401-06-01 | .0000000 | 12 | 500 + 3 | 30 | 1401-06-01 | 5 | 3 | 1401-06-01 | .0000000 | 12 | 500 + 2 | 40 | 1401-01-01 | 2400 | 2 | 1401-01-01 | .0000000 | 1100 | 100 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn*ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc/ow_sale.vn)) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc order by ow_sale.vn desc range floor(ow_sale.prc) preceding ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc), +win4 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 8,9,1->7; 11->10; 11->12; 11->13; 11->14; + vn | qty | pn | pn | pn | vn | to_char | prc | dt | to_char | cn | to_char | to_char | to_char +----+------+-----+-----+-----+----+-------------------+------+------------+-------------------+----+-------------------+-------------------+------------------- + 40 | 1100 | 100 | 100 | 100 | 40 | .0000000 | 2400 | 1401-01-01 | 3.0000000 | 2 | .0000000 | .0000000 | 1.0000000 + 10 | 1 | 200 | 200 | 200 | 10 | .0000000 | 0 | 1401-03-01 | 4.0000000 | 1 | 1.0000000 | 40.0000000 | 2.0000000 + 40 | 1 | 200 | 200 | 200 | 40 | .0000000 | 0 | 1401-04-01 | 2.0000000 | 3 | 1.0000000 | 20.0000000 | 3.0000000 + 20 | 1 | 100 | 100 | 100 | 20 | .0000000 | 0 | 1401-05-01 | 4.0000000 | 1 | 1.0000000 | 30.0000000 | 4.0000000 + 30 | 1 | 300 | 300 | 300 | 30 | .0000000 | 0 | 1401-05-02 | 4.0000000 | 1 | 1.0000000 | 50.0000000 | 5.0000000 + 50 | 1 | 400 | 400 | 400 | 50 | .0000000 | 0 | 1401-06-01 | 4.0000000 | 1 | 1.0000000 | 50.0000000 | 6.0000000 + 50 | 1 | 400 | 400 | 400 | 50 | .0000000 | 0 | 1401-06-01 | 3.0000000 | 2 | 1.0000000 | 30.0000000 | 7.0000000 + 30 | 12 | 500 | 500 | 500 | 30 | .0000000 | 5 | 1401-06-01 | 4.0000000 | 1 | .0000000 | .0000000 | 8.0000000 + 30 | 12 | 500 | 500 | 500 | 30 | .0000000 | 5 | 1401-06-01 | 2.0000000 | 3 | .0000000 | .0000000 | 9.0000000 + 30 | 12 | 600 | 600 | 600 | 30 | .0000000 | 5 | 1401-06-01 | 2.0000000 | 3 | .0000000 | .0000000 | 10.0000000 + 40 | 1 | 700 | 700 | 700 | 40 | .0000000 | 1 | 1401-06-01 | 1.0000000 | 4 | .0000000 | 40.0000000 | 11.0000000 + 40 | 1 | 800 | 800 | 800 | 40 | .0000000 | 1 | 1401-06-01 | 1.0000000 | 4 | .0000000 | .0000000 | 12.0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.vn asc range current row ); -- mvd 5,6,2->4; + dt | pn | qty | to_char | prc | vn +------------+-----+------+-------------------+------+---- + 1401-05-02 | 300 | 1 | .0000000 | 0 | 30 + 1401-06-01 | 400 | 1 | .0000000 | 0 | 50 + 1401-06-01 | 400 | 1 | .0000000 | 0 | 50 + 1401-06-01 | 700 | 1 | .0000000 | 1 | 40 + 1401-06-01 | 500 | 12 | .0000000 | 5 | 30 + 1401-06-01 | 500 | 12 | .0000000 | 5 | 30 + 1401-05-01 | 100 | 1 | .0000000 | 0 | 20 + 1401-03-01 | 200 | 1 | .0000000 | 0 | 10 + 1401-04-01 | 200 | 1 | .0000000 | 0 | 40 + 1401-06-01 | 800 | 1 | .0000000 | 1 | 40 + 1401-06-01 | 600 | 12 | .0000000 | 5 | 30 + 1401-01-01 | 100 | 1100 | .0000000 | 2400 | 40 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.dt order by ow_sale.vn asc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.vn)) OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt order by ow_sale.vn asc range current row ), +win2 as (order by ow_sale.cn desc); -- mvd 6,3,7->5; 6,3,7->8; 6->9; 6->10; 6->11; 6,3,7->12; + qty | qty | dt | pn | to_char | cn | vn | to_char | to_char | to_char | to_char | to_char +------+------+------------+-----+-------------------+----+----+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | 1 | 1401-06-01 | 800 | .0000000 | 4 | 40 | 800.0000000 | 1.0000000 | 2.0000000 | 40.0000000 | 2.0000000 + 1 | 1 | 1401-06-01 | 700 | .0000000 | 4 | 40 | 800.0000000 | 1.0000000 | 2.0000000 | 40.0000000 | 2.0000000 + 1 | 1 | 1401-04-01 | 200 | .0000000 | 3 | 40 | 200.0000000 | 2.0000000 | 5.0000000 | 30.0000000 | 1.0000000 + 12 | 12 | 1401-06-01 | 600 | .0000000 | 3 | 30 | 600.0000000 | 2.0000000 | 5.0000000 | 30.0000000 | 2.0000000 + 12 | 12 | 1401-06-01 | 500 | .0000000 | 3 | 30 | 600.0000000 | 2.0000000 | 5.0000000 | 30.0000000 | 2.0000000 + 1100 | 1100 | 1401-01-01 | 100 | .0000000 | 2 | 40 | 100.0000000 | 3.0000000 | 7.0000000 | 30.0000000 | 1.0000000 + 1 | 1 | 1401-06-01 | 400 | .0000000 | 2 | 50 | 400.0000000 | 3.0000000 | 7.0000000 | 30.0000000 | 1.0000000 + 1 | 1 | 1401-05-01 | 100 | .0000000 | 1 | 20 | 100.0000000 | 4.0000000 | 12.0000000 | 10.0000000 | 1.0000000 + 1 | 1 | 1401-06-01 | 400 | .0000000 | 1 | 50 | 400.0000000 | 4.0000000 | 12.0000000 | 10.0000000 | 1.0000000 + 12 | 12 | 1401-06-01 | 500 | .0000000 | 1 | 30 | 500.0000000 | 4.0000000 | 12.0000000 | 10.0000000 | 1.0000000 + 1 | 1 | 1401-03-01 | 200 | .0000000 | 1 | 10 | 200.0000000 | 4.0000000 | 12.0000000 | 10.0000000 | 1.0000000 + 1 | 1 | 1401-05-02 | 300 | .0000000 | 1 | 30 | 300.0000000 | 4.0000000 | 12.0000000 | 10.0000000 | 1.0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.qty) preceding ), +win2 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 4,5,6->3; 4,5,6->7; 6->8; + qty | pn | to_char | cn | dt | vn | to_char | to_char +------+-----+-------------------+----+------------+----+-------------------+------------------- + 1100 | 100 | .0000000 | 2 | 1401-01-01 | 40 | .0000000 | .0000000 + 1 | 200 | .0000000 | 1 | 1401-03-01 | 10 | .0000000 | 1.0000000 + 1 | 200 | .0000000 | 3 | 1401-04-01 | 40 | .0000000 | 3.0000000 + 1 | 100 | .0000000 | 1 | 1401-05-01 | 20 | .0000000 | 1.0000000 + 1 | 300 | .0000000 | 1 | 1401-05-02 | 30 | .0000000 | 1.0000000 + 1 | 400 | .0000000 | 1 | 1401-06-01 | 50 | .0000000 | 1.0000000 + 1 | 400 | .0000000 | 2 | 1401-06-01 | 50 | .0000000 | 2.0000000 + 12 | 500 | .0000000 | 1 | 1401-06-01 | 30 | .0000000 | .0000000 + 12 | 500 | .0000000 | 3 | 1401-06-01 | 30 | .0000000 | .0000000 + 12 | 600 | .0000000 | 3 | 1401-06-01 | 30 | .0000000 | .0000000 + 1 | 700 | .0000000 | 4 | 1401-06-01 | 40 | .0000000 | 4.0000000 + 1 | 800 | .0000000 | 4 | 1401-06-01 | 40 | .0000000 | .0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.pn asc range between unbounded preceding and current row ); -- mvd 2,6->5; + vn | qty | prc | dt | to_char | pn +----+------+------+------------+-------------------+----- + 20 | 1 | 0 | 1401-05-01 | .0000000 | 100 + 10 | 1 | 0 | 1401-03-01 | .0000000 | 200 + 40 | 1 | 0 | 1401-04-01 | .0000000 | 200 + 30 | 1 | 0 | 1401-05-02 | .0000000 | 300 + 50 | 1 | 0 | 1401-06-01 | .0000000 | 400 + 50 | 1 | 0 | 1401-06-01 | .0000000 | 400 + 40 | 1 | 1 | 1401-06-01 | .3499271 | 700 + 40 | 1 | 1 | 1401-06-01 | .4330127 | 800 + 30 | 12 | 5 | 1401-06-01 | .0000000 | 500 + 30 | 12 | 5 | 1401-06-01 | .0000000 | 500 + 30 | 12 | 5 | 1401-06-01 | .0000000 | 600 + 40 | 1100 | 2400 | 1401-01-01 | .0000000 | 100 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.pn asc range between unbounded preceding and current row ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.prc,ow_sale.cn order by ow_sale.pn desc), +win4 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.vn asc); -- mvd 5,3->4; 7,5,3->6; 5,3->8; 10,7,3->9; 5,3->11; 10,5,13,3->12; + qty | qty | pn | to_char | dt | to_char | cn | to_char | to_char | prc | to_char | to_char | vn +------+------+-----+-------------------+------------+-------------------+----+-------------------+-------------------+------+-------------------+-------------------+---- + 1 | 1 | 200 | .0000000 | 1401-03-01 | .0000000 | 1 | 1.0000000 | 3.0000000 | 0 | .0000000 | 1.0000000 | 10 + 1 | 1 | 300 | .0000000 | 1401-05-02 | .0000000 | 1 | 1.0000000 | 2.0000000 | 0 | .0000000 | 1.0000000 | 30 + 1 | 1 | 400 | .0000000 | 1401-06-01 | .0000000 | 1 | 2.0000000 | 1.0000000 | 0 | .0000000 | 1.0000000 | 50 + 1 | 1 | 400 | .0000000 | 1401-06-01 | .0000000 | 2 | 2.0000000 | 1.0000000 | 0 | .0000000 | 1.0000000 | 50 + 12 | 12 | 500 | 2.5000000 | 1401-06-01 | .0000000 | 3 | 4.0000000 | 2.0000000 | 5 | .0000000 | 1.0000000 | 30 + 12 | 12 | 500 | 2.5000000 | 1401-06-01 | .0000000 | 1 | 4.0000000 | 1.0000000 | 5 | .0000000 | 1.0000000 | 30 + 12 | 12 | 600 | 2.4494897 | 1401-06-01 | .0000000 | 3 | 5.0000000 | 1.0000000 | 5 | .0000000 | 1.0000000 | 30 + 1 | 1 | 700 | 2.3570226 | 1401-06-01 | .0000000 | 4 | 6.0000000 | 2.0000000 | 1 | .0000000 | 1.0000000 | 40 + 1 | 1 | 800 | 2.2587698 | 1401-06-01 | .0000000 | 4 | 7.0000000 | 1.0000000 | 1 | .0000000 | 1.0000000 | 40 + 1100 | 1100 | 100 | .0000000 | 1401-01-01 | .0000000 | 2 | 1.0000000 | 1.0000000 | 2400 | 11.0000000 | 1.0000000 | 40 + 1 | 1 | 200 | .0000000 | 1401-04-01 | .0000000 | 3 | 1.0000000 | 1.0000000 | 0 | .0000000 | 1.0000000 | 40 + 1 | 1 | 100 | .0000000 | 1401-05-01 | .0000000 | 1 | 1.0000000 | 4.0000000 | 0 | .0000000 | 1.0000000 | 20 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.pn desc range between unbounded preceding and floor(ow_sale.pn+ow_sale.vn) following ); -- mvd 3,4,5->2; + qty | to_char | dt | vn | pn +------+-------------------+------------+----+----- + 1 | .0000000 | 1401-03-01 | 10 | 200 + 12 | .0000000 | 1401-06-01 | 30 | 600 + 1 | .0000000 | 1401-06-01 | 40 | 700 + 1 | .0000000 | 1401-05-01 | 20 | 100 + 1 | .0000000 | 1401-05-02 | 30 | 300 + 12 | .0000000 | 1401-06-01 | 30 | 500 + 12 | .0000000 | 1401-06-01 | 30 | 500 + 1100 | .0000000 | 1401-01-01 | 40 | 100 + 1 | .0000000 | 1401-04-01 | 40 | 200 + 1 | .0000000 | 1401-06-01 | 40 | 800 + 1 | .0000000 | 1401-06-01 | 50 | 400 + 1 | .0000000 | 1401-06-01 | 50 | 400 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.vn asc range between unbounded preceding and floor(ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.vn asc range between unbounded preceding and floor(ow_sale.qty) following ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.pn asc); -- mvd 2,5,3->4; 2,5,3->6; 8->7; 8->9; + prc | dt | vn | to_char | cn | to_char | to_char | pn | to_char +------+------------+----+-------------------+----+-------------------+-------------------+-----+------------------- + 1 | 1401-06-01 | 40 | 50.0000000 | 4 | 40.0000000 | 1.0000000 | 800 | 1.0000000 + 1 | 1401-06-01 | 40 | 50.0000000 | 4 | 40.0000000 | 2.0000000 | 700 | .9166667 + 5 | 1401-06-01 | 30 | 50.0000000 | 3 | 30.0000000 | 3.0000000 | 600 | .8333333 + 5 | 1401-06-01 | 30 | .0000000 | 1 | 30.0000000 | 4.0000000 | 500 | .7500000 + 5 | 1401-06-01 | 30 | 50.0000000 | 3 | 30.0000000 | 4.0000000 | 500 | .7500000 + 0 | 1401-06-01 | 50 | .0000000 | 2 | 50.0000000 | 6.0000000 | 400 | .5833333 + 0 | 1401-06-01 | 50 | .0000000 | 1 | 50.0000000 | 6.0000000 | 400 | .5833333 + 0 | 1401-05-02 | 30 | .0000000 | 1 | 30.0000000 | 8.0000000 | 300 | .4166667 + 0 | 1401-04-01 | 40 | .0000000 | 3 | 40.0000000 | 9.0000000 | 200 | .3333333 + 0 | 1401-03-01 | 10 | .0000000 | 1 | 10.0000000 | 9.0000000 | 200 | .3333333 + 0 | 1401-05-01 | 20 | .0000000 | 1 | 20.0000000 | 11.0000000 | 100 | .1666667 + 2400 | 1401-01-01 | 40 | .0000000 | 2 | 40.0000000 | 11.0000000 | 100 | .1666667 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.vn desc range between unbounded preceding and unbounded following ); -- mvd 6,7->5; + pn | pn | dt | qty | to_char | cn | vn +-----+-----+------------+------+-------------------+----+---- + 400 | 400 | 1401-06-01 | 1 | 13.2664992 | 1 | 50 + 300 | 300 | 1401-05-02 | 1 | 13.2664992 | 1 | 30 + 500 | 500 | 1401-06-01 | 12 | 13.2664992 | 1 | 30 + 100 | 100 | 1401-05-01 | 1 | 13.2664992 | 1 | 20 + 200 | 200 | 1401-03-01 | 1 | 13.2664992 | 1 | 10 + 200 | 200 | 1401-04-01 | 1 | 7.0710678 | 3 | 40 + 600 | 600 | 1401-06-01 | 12 | 7.0710678 | 3 | 30 + 500 | 500 | 1401-06-01 | 12 | 7.0710678 | 3 | 30 + 400 | 400 | 1401-06-01 | 1 | 1205.0000000 | 2 | 50 + 100 | 100 | 1401-01-01 | 1100 | 1205.0000000 | 2 | 40 + 800 | 800 | 1401-06-01 | 1 | .0000000 | 4 | 40 + 700 | 700 | 1401-06-01 | 1 | .0000000 | 4 | 40 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.cn order by ow_sale.vn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.vn asc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.pn order by ow_sale.vn asc); -- mvd 5,6,1->4; 1,8->7; 5,6,1->9; 5,6,1->10; + vn | prc | qty | to_char | cn | dt | to_char | pn | to_char | to_char +----+------+------+-------------------+----+------------+-------------------+-----+-------------------+------------------- + 40 | 0 | 1 | .0000000 | 3 | 1401-04-01 | 1.0000000 | 200 | 3.0000000 | .0000000 + 20 | 0 | 1 | .0000000 | 1 | 1401-05-01 | .0000000 | 100 | 1.0000000 | .0000000 + 50 | 0 | 1 | .0000000 | 2 | 1401-06-01 | .0000000 | 400 | 2.0000000 | .0000000 + 40 | 1 | 1 | .0000000 | 4 | 1401-06-01 | .0000000 | 800 | 4.0000000 | .0000000 + 40 | 1 | 1 | .0000000 | 4 | 1401-06-01 | .0000000 | 700 | 4.0000000 | .0000000 + 40 | 2400 | 1100 | .0000000 | 2 | 1401-01-01 | 1.0000000 | 100 | 2.0000000 | .0000000 + 10 | 0 | 1 | .0000000 | 1 | 1401-03-01 | .0000000 | 200 | 1.0000000 | .0000000 + 30 | 0 | 1 | .0000000 | 1 | 1401-05-02 | .0000000 | 300 | 1.0000000 | .0000000 + 30 | 5 | 12 | 5.5000000 | 1 | 1401-06-01 | .0000000 | 500 | 1.0000000 | .0000000 + 50 | 0 | 1 | 5.5000000 | 1 | 1401-06-01 | .0000000 | 400 | 1.0000000 | .0000000 + 30 | 5 | 12 | .0000000 | 3 | 1401-06-01 | .0000000 | 500 | 3.0000000 | .0000000 + 30 | 5 | 12 | .0000000 | 3 | 1401-06-01 | .0000000 | 600 | 3.0000000 | .0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.pn desc range between 4 preceding and floor(ow_sale.qty+ow_sale.cn) preceding ); -- mvd 8->7; + vn | cn | cn | cn | dt | prc | to_char | pn +----+----+----+----+------------+------+-------------------+----- + 30 | 1 | 1 | 1 | 1401-05-02 | 0 | .0000000 | 300 + 50 | 2 | 2 | 2 | 1401-06-01 | 0 | .0000000 | 400 + 50 | 1 | 1 | 1 | 1401-06-01 | 0 | .0000000 | 400 + 30 | 1 | 1 | 1 | 1401-06-01 | 5 | .0000000 | 500 + 30 | 3 | 3 | 3 | 1401-06-01 | 5 | .0000000 | 500 + 40 | 4 | 4 | 4 | 1401-06-01 | 1 | .0000000 | 800 + 20 | 1 | 1 | 1 | 1401-05-01 | 0 | .0000000 | 100 + 40 | 2 | 2 | 2 | 1401-01-01 | 2400 | .0000000 | 100 + 10 | 1 | 1 | 1 | 1401-03-01 | 0 | .0000000 | 200 + 40 | 3 | 3 | 3 | 1401-04-01 | 0 | .0000000 | 200 + 30 | 3 | 3 | 3 | 1401-06-01 | 5 | .0000000 | 600 + 40 | 4 | 4 | 4 | 1401-06-01 | 1 | .0000000 | 700 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.pn asc range between 4 preceding and current row ); -- mvd 3,4->2; + qty | to_char | cn | pn +------+-------------------+----+----- + 1 | .0000000 | 1 | 100 + 1 | .0000000 | 1 | 200 + 1 | .0000000 | 2 | 400 + 1 | .0000000 | 3 | 200 + 12 | .0000000 | 3 | 600 + 1 | .0000000 | 4 | 800 + 1 | .0000000 | 1 | 300 + 1 | .0000000 | 1 | 400 + 12 | .0000000 | 1 | 500 + 1100 | .0000000 | 2 | 100 + 12 | .0000000 | 3 | 500 + 1 | .0000000 | 4 | 700 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.prc,ow_sale.qty order by ow_sale.pn desc range between floor(ow_sale.qty+ow_sale.pn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.qty)) OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.prc,ow_sale.qty order by ow_sale.pn desc range between floor(ow_sale.qty+ow_sale.pn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.prc,ow_sale.qty order by ow_sale.pn desc range between floor(ow_sale.qty+ow_sale.pn) preceding and current row ), +win2 as (order by ow_sale.vn asc); -- mvd 3,4,5,6,7->2; 3,4,5,6,7->8; 3,4,5,6,7->9; 6->10; + dt | to_char | prc | cn | qty | vn | pn | to_char | to_char | to_char +------------+-------------------+------+----+------+----+-----+-------------------+-------------------+------------------- + 1401-03-01 | .0000000 | 0 | 1 | 1 | 10 | 200 | -10.0000000 | -1.0000000 | .0833333 + 1401-05-01 | .0000000 | 0 | 1 | 1 | 20 | 100 | -20.0000000 | -1.0000000 | .1666667 + 1401-05-02 | .0000000 | 0 | 1 | 1 | 30 | 300 | -30.0000000 | -1.0000000 | .5000000 + 1401-06-01 | .0000000 | 5 | 1 | 12 | 30 | 500 | -25.0000000 | -7.0000000 | .5000000 + 1401-06-01 | .0000000 | 5 | 3 | 12 | 30 | 600 | -25.0000000 | -7.0000000 | .5000000 + 1401-06-01 | .0000000 | 5 | 3 | 12 | 30 | 500 | -25.0000000 | -7.0000000 | .5000000 + 1401-01-01 | .0000000 | 2400 | 2 | 1100 | 40 | 100 | 2360.0000000 | 1300.0000000 | .8333333 + 1401-04-01 | .0000000 | 0 | 3 | 1 | 40 | 200 | -40.0000000 | -1.0000000 | .8333333 + 1401-06-01 | .0000000 | 1 | 4 | 1 | 40 | 800 | -39.0000000 | .0000000 | .8333333 + 1401-06-01 | .0000000 | 1 | 4 | 1 | 40 | 700 | -39.0000000 | .0000000 | .8333333 + 1401-06-01 | .0000000 | 0 | 1 | 1 | 50 | 400 | -50.0000000 | -1.0000000 | 1.0000000 + 1401-06-01 | .0000000 | 0 | 2 | 1 | 50 | 400 | -50.0000000 | -1.0000000 | 1.0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn*ow_sale.qty)) OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn+ow_sale.cn) as int),cast (floor(ow_sale.vn/ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.cn desc range between floor(ow_sale.vn+ow_sale.cn) preceding and floor(ow_sale.cn+ow_sale.vn) following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,1,5,2->3; 4->6; 4->7; 4->8; 10,4,11,5->9; 4->12; + dt | pn | to_char | cn | vn | to_char | to_char | to_char | to_char | prc | qty | to_char +------------+-----+-------------------+----+----+-------------------+-------------------+-------------------+-------------------+------+------+------------------- + 1401-06-01 | 400 | .0000000 | 1 | 50 | 1.0000000 | 5.0000000 | 1.0000000 | .0000000 | 0 | 1 | 1.0000000 + 1401-05-02 | 300 | .0000000 | 1 | 30 | 2.0000000 | 5.0000000 | 1.0000000 | .0000000 | 0 | 1 | 1.0000000 + 1401-05-01 | 100 | .0000000 | 1 | 20 | 3.0000000 | 5.0000000 | 1.0000000 | .0000000 | 0 | 1 | 1.0000000 + 1401-06-01 | 500 | .0000000 | 1 | 30 | 4.0000000 | 5.0000000 | 1.0000000 | .0000000 | 5 | 12 | 1.0000000 + 1401-03-01 | 200 | .0000000 | 1 | 10 | 5.0000000 | 5.0000000 | 1.0000000 | .0000000 | 0 | 1 | 1.0000000 + 1401-01-01 | 100 | .0000000 | 2 | 40 | 6.0000000 | 7.0000000 | 1.0000000 | .0000000 | 2400 | 1100 | 6.0000000 + 1401-06-01 | 400 | .0000000 | 2 | 50 | 7.0000000 | 7.0000000 | 1.0000000 | 401.0000000 | 0 | 1 | 6.0000000 + 1401-06-01 | 600 | .0000000 | 3 | 30 | 8.0000000 | 10.0000000 | 1.0000000 | 503.0000000 | 5 | 12 | 8.0000000 + 1401-04-01 | 200 | .0000000 | 3 | 40 | 9.0000000 | 10.0000000 | 1.0000000 | .0000000 | 0 | 1 | 8.0000000 + 1401-06-01 | 500 | .0000000 | 3 | 30 | 10.0000000 | 10.0000000 | 1.0000000 | 501.0000000 | 5 | 12 | 8.0000000 + 1401-06-01 | 700 | .0000000 | 4 | 40 | 11.0000000 | 12.0000000 | 1.0000000 | .0000000 | 1 | 1 | 11.0000000 + 1401-06-01 | 800 | .0000000 | 4 | 40 | 12.0000000 | 12.0000000 | 1.0000000 | 704.0000000 | 1 | 1 | 11.0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc range between floor(ow_sale.qty*ow_sale.qty) preceding and unbounded following ); -- mvd 5,6,7->4; + prc | prc | qty | to_char | dt | cn | pn +------+------+------+-------------------+------------+----+----- + 0 | 0 | 1 | .0000000 | 1401-05-01 | 1 | 100 + 0 | 0 | 1 | .0000000 | 1401-05-02 | 1 | 300 + 0 | 0 | 1 | .0000000 | 1401-06-01 | 1 | 400 + 5 | 5 | 12 | .0000000 | 1401-06-01 | 1 | 500 + 0 | 0 | 1 | .0000000 | 1401-04-01 | 3 | 200 + 5 | 5 | 12 | .0000000 | 1401-06-01 | 3 | 500 + 1 | 1 | 1 | .0000000 | 1401-06-01 | 4 | 700 + 0 | 0 | 1 | .0000000 | 1401-03-01 | 1 | 200 + 2400 | 2400 | 1100 | .0000000 | 1401-01-01 | 2 | 100 + 0 | 0 | 1 | .0000000 | 1401-06-01 | 2 | 400 + 5 | 5 | 12 | .0000000 | 1401-06-01 | 3 | 600 + 1 | 1 | 1 | .0000000 | 1401-06-01 | 4 | 800 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(partition by ow_sale.cn order by ow_sale.vn desc range between floor(ow_sale.prc*ow_sale.vn) preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.vn desc range between floor(ow_sale.prc*ow_sale.vn) preceding and unbounded following ), +win2 as (order by ow_sale.vn asc); -- mvd 5,1->4; 1->6; 5,1->7; + vn | pn | qty | to_char | cn | to_char | to_char +----+-----+------+-------------------+----+-------------------+------------------- + 10 | 200 | 1 | .0000000 | 1 | .0000000 | 1.0000000 + 20 | 100 | 1 | .0000000 | 1 | .0909091 | 2.0000000 + 30 | 500 | 12 | .0000000 | 1 | .1818182 | 5.0000000 + 30 | 600 | 12 | .0000000 | 3 | .1818182 | 3.0000000 + 30 | 300 | 1 | .0000000 | 1 | .1818182 | 4.0000000 + 30 | 500 | 12 | .0000000 | 3 | .1818182 | 3.0000000 + 40 | 200 | 1 | .0000000 | 3 | .5454545 | 3.0000000 + 40 | 100 | 1100 | .0000000 | 2 | .5454545 | 2.0000000 + 40 | 700 | 1 | .0000000 | 4 | .5454545 | 2.0000000 + 40 | 800 | 1 | .0000000 | 4 | .5454545 | 2.0000000 + 50 | 400 | 1 | .0000000 | 2 | .9090909 | 2.0000000 + 50 | 400 | 1 | .0000000 | 1 | .9090909 | 5.0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.pn desc range between current row and current row ); -- mvd 4,2->5; + qty | pn | dt | vn | to_char +------+-----+------------+----+------------------- + 1 | 200 | 1401-03-01 | 10 | .0000000 + 1 | 100 | 1401-05-01 | 20 | .0000000 + 12 | 600 | 1401-06-01 | 30 | .0000000 + 12 | 500 | 1401-06-01 | 30 | .0000000 + 12 | 500 | 1401-06-01 | 30 | .0000000 + 1 | 300 | 1401-05-02 | 30 | .0000000 + 1 | 800 | 1401-06-01 | 40 | .0000000 + 1 | 700 | 1401-06-01 | 40 | .0000000 + 1 | 200 | 1401-04-01 | 40 | .0000000 + 1100 | 100 | 1401-01-01 | 40 | .0000000 + 1 | 400 | 1401-06-01 | 50 | .0000000 + 1 | 400 | 1401-06-01 | 50 | .0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.dt order by ow_sale.pn asc range between current row and current row ), +win2 as (partition by ow_sale.cn,ow_sale.qty order by ow_sale.pn desc); -- mvd 3,1->2; 5,6,1->4; + pn | to_char | dt | to_char | cn | qty +-----+-------------------+------------+-------------------+----+------ + 200 | .0000000 | 1401-03-01 | .7500000 | 1 | 1 + 300 | .0000000 | 1401-05-02 | .5000000 | 1 | 1 + 400 | 25.0000000 | 1401-06-01 | .2500000 | 1 | 1 + 400 | 25.0000000 | 1401-06-01 | 1.0000000 | 2 | 1 + 500 | 30.0000000 | 1401-06-01 | 1.0000000 | 1 | 12 + 500 | 30.0000000 | 1401-06-01 | 1.0000000 | 3 | 12 + 600 | .0000000 | 1401-06-01 | .5000000 | 3 | 12 + 700 | .0000000 | 1401-06-01 | 1.0000000 | 4 | 1 + 800 | .0000000 | 1401-06-01 | .5000000 | 4 | 1 + 100 | .0000000 | 1401-01-01 | 1.0000000 | 2 | 1100 + 200 | .0000000 | 1401-04-01 | 1.0000000 | 3 | 1 + 100 | .0000000 | 1401-05-01 | 1.0000000 | 1 | 1 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.pn asc range between current row and 2 following ); -- mvd 8,3,2,1->7; + pn | vn | cn | pn | prc | prc | to_char | dt +-----+----+----+-----+------+------+-------------------+------------ + 100 | 40 | 2 | 100 | 2400 | 2400 | .0000000 | 1401-01-01 + 300 | 30 | 1 | 300 | 0 | 0 | .0000000 | 1401-05-02 + 400 | 50 | 1 | 400 | 0 | 0 | .0000000 | 1401-06-01 + 500 | 30 | 1 | 500 | 5 | 5 | .0000000 | 1401-06-01 + 500 | 30 | 3 | 500 | 5 | 5 | .0000000 | 1401-06-01 + 700 | 40 | 4 | 700 | 1 | 1 | .0000000 | 1401-06-01 + 100 | 20 | 1 | 100 | 0 | 0 | .0000000 | 1401-05-01 + 200 | 10 | 1 | 200 | 0 | 0 | .0000000 | 1401-03-01 + 200 | 40 | 3 | 200 | 0 | 0 | .0000000 | 1401-04-01 + 400 | 50 | 2 | 400 | 0 | 0 | .0000000 | 1401-06-01 + 600 | 30 | 3 | 600 | 5 | 5 | .0000000 | 1401-06-01 + 800 | 40 | 4 | 800 | 1 | 1 | .0000000 | 1401-06-01 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.pn order by ow_sale.vn asc range between current row and floor(ow_sale.pn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.vn asc range between current row and floor(ow_sale.pn) following ), +win2 as (order by ow_sale.vn asc); -- mvd 3,4,5->2; 3,4,5->6; 4->7; + qty | to_char | dt | vn | pn | to_char | to_char +------+-------------------+------------+----+-----+-------------------+------------------- + 1 | .0000000 | 1401-03-01 | 10 | 200 | 10.0000000 | .0000000 + 1 | .0000000 | 1401-05-01 | 20 | 100 | 20.0000000 | .0909091 + 12 | .0000000 | 1401-06-01 | 30 | 500 | 30.0000000 | .1818182 + 12 | .0000000 | 1401-06-01 | 30 | 500 | 30.0000000 | .1818182 + 1 | .0000000 | 1401-05-02 | 30 | 300 | 30.0000000 | .1818182 + 12 | .0000000 | 1401-06-01 | 30 | 600 | 30.0000000 | .1818182 + 1 | .0000000 | 1401-06-01 | 40 | 700 | 40.0000000 | .5454545 + 1100 | .0000000 | 1401-01-01 | 40 | 100 | 40.0000000 | .5454545 + 1 | .0000000 | 1401-04-01 | 40 | 200 | 40.0000000 | .5454545 + 1 | .0000000 | 1401-06-01 | 40 | 800 | 40.0000000 | .5454545 + 1 | .0000000 | 1401-06-01 | 50 | 400 | 50.0000000 | .9090909 + 1 | .0000000 | 1401-06-01 | 50 | 400 | 50.0000000 | .9090909 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn desc range between current row and unbounded following ); -- mvd 4,5->3; + pn | qty | to_char | cn | dt +-----+------+-------------------+----+------------ + 200 | 1 | .0000000 | 1 | 1401-03-01 + 300 | 1 | .0000000 | 1 | 1401-05-02 + 700 | 1 | 8.3299313 | 4 | 1401-06-01 + 800 | 1 | 8.3299313 | 4 | 1401-06-01 + 500 | 12 | 9.7979590 | 3 | 1401-06-01 + 600 | 12 | 9.7979590 | 3 | 1401-06-01 + 400 | 1 | 9.4280904 | 2 | 1401-06-01 + 400 | 1 | 10.0000000 | 1 | 1401-06-01 + 500 | 12 | 10.0000000 | 1 | 1401-06-01 + 100 | 1100 | .0000000 | 2 | 1401-01-01 + 200 | 1 | .0000000 | 3 | 1401-04-01 + 100 | 1 | .0000000 | 1 | 1401-05-01 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn-ow_sale.cn) as int),cast (floor(ow_sale.pn/ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn asc range between current row and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.prc order by ow_sale.cn desc), +win3 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 5->4; 7,8,5,2->6; 8,1->9; + dt | pn | dt | to_char | vn | to_char | prc | cn | to_char +------------+-----+------------+-------------------+----+-------------------+------+----+------------------- + 1401-03-01 | 200 | 1401-03-01 | .0000000 | 10 | 1.0000000 | 0 | 1 | .0000000 + 1401-05-01 | 100 | 1401-05-01 | .0000000 | 20 | 1.0000000 | 0 | 1 | .0000000 + 1401-06-01 | 500 | 1401-06-01 | 108.9724736 | 30 | 2.0000000 | 5 | 1 | .0000000 + 1401-05-02 | 300 | 1401-05-02 | 108.9724736 | 30 | 1.0000000 | 0 | 1 | .0000000 + 1401-06-01 | 500 | 1401-06-01 | 108.9724736 | 30 | 1.0000000 | 5 | 3 | .0000000 + 1401-06-01 | 600 | 1401-06-01 | 108.9724736 | 30 | 1.0000000 | 5 | 3 | .0000000 + 1401-06-01 | 700 | 1401-06-01 | 304.1381265 | 40 | 1.0000000 | 1 | 4 | .0000000 + 1401-06-01 | 800 | 1401-06-01 | 304.1381265 | 40 | 1.0000000 | 1 | 4 | .0000000 + 1401-01-01 | 100 | 1401-01-01 | 304.1381265 | 40 | 1.0000000 | 2400 | 2 | .0000000 + 1401-04-01 | 200 | 1401-04-01 | 304.1381265 | 40 | 1.0000000 | 0 | 3 | .0000000 + 1401-06-01 | 400 | 1401-06-01 | .0000000 | 50 | 1.0000000 | 0 | 2 | .0000000 + 1401-06-01 | 400 | 1401-06-01 | .0000000 | 50 | 2.0000000 | 0 | 1 | .0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.cn asc range between floor(ow_sale.prc) following and 0 following ); -- mvd 1,3,4,5->2; + prc | to_char | cn | qty | pn +------+-------------------+----+------+----- + 0 | .0000000 | 1 | 1 | 100 + 0 | .0000000 | 1 | 1 | 200 + 0 | .0000000 | 3 | 1 | 200 + 1 | .0000000 | 4 | 1 | 800 + 5 | .0000000 | 1 | 12 | 500 + 5 | .0000000 | 3 | 12 | 500 + 0 | .0000000 | 1 | 1 | 300 + 0 | .0000000 | 1 | 1 | 400 + 0 | .0000000 | 2 | 1 | 400 + 1 | .0000000 | 4 | 1 | 700 + 5 | .0000000 | 3 | 12 | 600 + 2400 | .0000000 | 2 | 1100 | 100 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.cn asc range between floor(ow_sale.prc) following and floor(ow_sale.pn-ow_sale.vn) following ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc); -- mvd 7,1->6; 2,7,4->8; + vn | dt | vn | pn | prc | to_char | cn | to_char +----+------------+----+-----+------+-------------------+----+------------------- + 40 | 1401-01-01 | 40 | 100 | 2400 | .0000000 | 2 | .0000000 + 40 | 1401-06-01 | 40 | 700 | 1 | .0000000 | 4 | .0000000 + 40 | 1401-06-01 | 40 | 800 | 1 | .0000000 | 4 | .0000000 + 50 | 1401-06-01 | 50 | 400 | 0 | .0000000 | 2 | .0000000 + 10 | 1401-03-01 | 10 | 200 | 0 | .0000000 | 1 | .0000000 + 20 | 1401-05-01 | 20 | 100 | 0 | .0000000 | 1 | .0000000 + 30 | 1401-05-02 | 30 | 300 | 0 | 5.5000000 | 1 | .0000000 + 30 | 1401-06-01 | 30 | 500 | 5 | .0000000 | 1 | .0000000 + 30 | 1401-06-01 | 30 | 600 | 5 | .0000000 | 3 | .0000000 + 30 | 1401-06-01 | 30 | 500 | 5 | .0000000 | 3 | .0000000 + 40 | 1401-04-01 | 40 | 200 | 0 | .0000000 | 3 | .0000000 + 50 | 1401-06-01 | 50 | 400 | 0 | .0000000 | 1 | .0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.pn asc range between 1 following and unbounded following ); -- mvd 1,8,3,9->7; + cn | cn | vn | cn | cn | cn | to_char | dt | pn +----+----+----+----+----+----+-------------------+------------+----- + 3 | 3 | 40 | 3 | 3 | 3 | .0000000 | 1401-04-01 | 200 + 1 | 1 | 20 | 1 | 1 | 1 | .0000000 | 1401-05-01 | 100 + 4 | 4 | 40 | 4 | 4 | 4 | .0000000 | 1401-06-01 | 700 + 4 | 4 | 40 | 4 | 4 | 4 | .0000000 | 1401-06-01 | 800 + 2 | 2 | 50 | 2 | 2 | 2 | .0000000 | 1401-06-01 | 400 + 2 | 2 | 40 | 2 | 2 | 2 | .0000000 | 1401-01-01 | 100 + 1 | 1 | 10 | 1 | 1 | 1 | .0000000 | 1401-03-01 | 200 + 1 | 1 | 30 | 1 | 1 | 1 | .0000000 | 1401-05-02 | 300 + 1 | 1 | 30 | 1 | 1 | 1 | .0000000 | 1401-06-01 | 500 + 3 | 3 | 30 | 3 | 3 | 3 | .0000000 | 1401-06-01 | 500 + 3 | 3 | 30 | 3 | 3 | 3 | .0000000 | 1401-06-01 | 600 + 1 | 1 | 50 | 1 | 1 | 1 | .0000000 | 1401-06-01 | 400 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.prc)) OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.prc)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn asc range between 2 following and unbounded following ), +win2 as (order by ow_sale.pn desc); -- mvd 4->3; 1->5; 1->6; 1->7; 1->8; 1->9; + pn | cn | to_char | vn | to_char | to_char | to_char | to_char | to_char +-----+----+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 800 | 4 | .0000000 | 40 | .0833333 | 1.0000000 | .0000000 | 2.0000000 | 801.0000000 + 700 | 4 | .0000000 | 40 | .1666667 | 2.0000000 | .0909091 | 2.0000000 | 801.0000000 + 600 | 3 | .0000000 | 30 | .2500000 | 3.0000000 | .1818182 | 17.0000000 | 801.0000000 + 500 | 1 | .0000000 | 30 | .4166667 | 4.0000000 | .2727273 | 17.0000000 | 801.0000000 + 500 | 3 | .0000000 | 30 | .4166667 | 4.0000000 | .2727273 | 17.0000000 | 801.0000000 + 400 | 1 | .0000000 | 50 | .5833333 | 5.0000000 | .4545455 | 17.0000000 | 801.0000000 + 400 | 2 | .0000000 | 50 | .5833333 | 5.0000000 | .4545455 | 17.0000000 | 801.0000000 + 300 | 1 | .0000000 | 30 | .6666667 | 6.0000000 | .6363636 | 17.0000000 | 801.0000000 + 200 | 3 | .0000000 | 40 | .8333333 | 7.0000000 | .7272727 | 17.0000000 | 801.0000000 + 200 | 1 | .0000000 | 10 | .8333333 | 7.0000000 | .7272727 | 17.0000000 | 801.0000000 + 100 | 2 | .0000000 | 40 | 1.0000000 | 8.0000000 | .9090909 | 3500.0000000 | 2500.0000000 + 100 | 1 | .0000000 | 20 | 1.0000000 | 8.0000000 | .9090909 | 3500.0000000 | 2500.0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows unbounded preceding ); -- mvd 1,8,2,3->7; + dt | vn | qty | pn | prc | qty | to_char | cn +------------+----+------+-----+------+------+-------------------+---- + 1401-03-01 | 10 | 1 | 200 | 0 | 1 | .0000000 | 1 + 1401-05-02 | 30 | 1 | 300 | 0 | 1 | .0000000 | 1 + 1401-06-01 | 50 | 1 | 400 | 0 | 1 | .0000000 | 1 + 1401-05-01 | 20 | 1 | 100 | 0 | 1 | .0000000 | 1 + 1401-06-01 | 30 | 12 | 500 | 5 | 12 | .0000000 | 1 + 1401-06-01 | 50 | 1 | 400 | 0 | 1 | .0000000 | 2 + 1401-01-01 | 40 | 1100 | 100 | 2400 | 1100 | .0000000 | 2 + 1401-04-01 | 40 | 1 | 200 | 0 | 1 | .0000000 | 3 + 1401-06-01 | 30 | 12 | 500 | 5 | 12 | .0000000 | 3 + 1401-06-01 | 30 | 12 | 600 | 5 | 12 | .0000000 | 3 + 1401-06-01 | 40 | 1 | 700 | 1 | 1 | .0000000 | 4 + 1401-06-01 | 40 | 1 | 800 | 1 | 1 | .0000000 | 4 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows unbounded preceding ), +win2 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn desc), +win3 as (order by ow_sale.cn asc); -- mvd 6,7,8->5; 1,8->9; 6->10; + vn | prc | qty | qty | to_char | cn | dt | pn | to_char | to_char +----+------+------+------+-------------------+----+------------+-----+-------------------+------------------- + 50 | 0 | 1 | 1 | .0000000 | 1 | 1401-06-01 | 400 | .0000000 | .4166667 + 20 | 0 | 1 | 1 | .0000000 | 1 | 1401-05-01 | 100 | .0000000 | .4166667 + 30 | 0 | 1 | 1 | .0000000 | 1 | 1401-05-02 | 300 | .0000000 | .4166667 + 30 | 5 | 12 | 12 | .0000000 | 1 | 1401-06-01 | 500 | .0000000 | .4166667 + 10 | 0 | 1 | 1 | .0000000 | 1 | 1401-03-01 | 200 | .0000000 | .4166667 + 40 | 2400 | 1100 | 1100 | .0000000 | 2 | 1401-01-01 | 100 | .0000000 | .5833333 + 50 | 0 | 1 | 1 | .0000000 | 2 | 1401-06-01 | 400 | .0000000 | .5833333 + 30 | 5 | 12 | 12 | .0000000 | 3 | 1401-06-01 | 600 | .0000000 | .8333333 + 30 | 5 | 12 | 12 | .0000000 | 3 | 1401-06-01 | 500 | .0000000 | .8333333 + 40 | 0 | 1 | 1 | .0000000 | 3 | 1401-04-01 | 200 | .0000000 | .8333333 + 40 | 1 | 1 | 1 | .0000000 | 4 | 1401-06-01 | 700 | .0000000 | 1.0000000 + 40 | 1 | 1 | 1 | .0000000 | 4 | 1401-06-01 | 800 | .0000000 | 1.0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc rows 6 preceding ); -- mvd 3,4->2; + qty | to_char | dt | vn +------+-------------------+------------+---- + 1 | .0000000 | 1401-03-01 | 10 + 1 | .0000000 | 1401-05-02 | 30 + 12 | .0000000 | 1401-06-01 | 30 + 12 | .0000000 | 1401-06-01 | 30 + 12 | 47.1404521 | 1401-06-01 | 30 + 1 | .0000000 | 1401-06-01 | 40 + 1 | 50.0000000 | 1401-06-01 | 40 + 1 | .0000000 | 1401-06-01 | 50 + 1 | .0000000 | 1401-06-01 | 50 + 1 | .0000000 | 1401-05-01 | 20 + 1100 | .0000000 | 1401-01-01 | 40 + 1 | .0000000 | 1401-04-01 | 40 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows 4 preceding ), +win2 as (partition by ow_sale.pn order by ow_sale.vn desc), +win3 as (order by ow_sale.vn desc); -- mvd 1,3,4->2; 6,4->5; 6,4->7; 6,4->8; 6,4->9; 6->10; + cn | to_char | dt | pn | to_char | vn | to_char | to_char | to_char | to_char +----+-------------------+------------+-----+-------------------+----+-------------------+-------------------+-------------------+------------------- + 1 | .0000000 | 1401-06-01 | 400 | .0000000 | 50 | 1.0000000 | .0000000 | .0000000 | .1666667 + 2 | .0000000 | 1401-06-01 | 400 | .0000000 | 50 | 1.0000000 | .0000000 | .0000000 | .1666667 + 4 | .0000000 | 1401-06-01 | 800 | .0000000 | 40 | 1.0000000 | .0000000 | .0000000 | .5000000 + 2 | .0000000 | 1401-01-01 | 100 | .0000000 | 40 | .5000000 | .0000000 | .0000000 | .5000000 + 3 | .0000000 | 1401-04-01 | 200 | .0000000 | 40 | .5000000 | .0000000 | .0000000 | .5000000 + 4 | .0000000 | 1401-06-01 | 700 | .0000000 | 40 | 1.0000000 | .0000000 | .0000000 | .5000000 + 3 | .0000000 | 1401-06-01 | 600 | .0000000 | 30 | 1.0000000 | .0000000 | .0000000 | .8333333 + 1 | .0000000 | 1401-05-02 | 300 | .0000000 | 30 | 1.0000000 | .0000000 | .0000000 | .8333333 + 1 | .0000000 | 1401-06-01 | 500 | .0000000 | 30 | 1.0000000 | .0000000 | .0000000 | .8333333 + 3 | .0000000 | 1401-06-01 | 500 | .0000000 | 30 | 1.0000000 | .0000000 | .0000000 | .8333333 + 1 | .0000000 | 1401-05-01 | 100 | 1.0000000 | 20 | 1.0000000 | .0000000 | 1.0000000 | .9166667 + 1 | .0000000 | 1401-03-01 | 200 | 1.0000000 | 10 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows current row ); -- mvd 3->2; + prc | to_char | cn +------+-------------------+---- + 0 | .0000000 | 1 + 0 | .0000000 | 1 + 0 | .0000000 | 1 + 0 | .0000000 | 1 + 5 | .0000000 | 1 + 0 | .0000000 | 3 + 5 | .0000000 | 3 + 5 | .0000000 | 3 + 2400 | .0000000 | 2 + 0 | .0000000 | 2 + 1 | .0000000 | 4 + 1 | .0000000 | 4 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows current row ), +win2 as (partition by ow_sale.pn order by ow_sale.cn asc), +win3 as (partition by ow_sale.pn order by ow_sale.cn desc), +win4 as (order by ow_sale.cn asc); -- mvd 2,3,1->5; 4,1->6; 4,1->7; 4,1->8; 4,1->9; 4->10; + pn | qty | vn | cn | to_char | to_char | to_char | to_char | to_char | to_char +-----+------+----+----+-------------------+-------------------+-------------------+-------------------+-------------------+------------------- + 300 | 1 | 30 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 | .4166667 + 400 | 1 | 50 | 1 | .0000000 | .5000000 | 1.0000000 | 1.0000000 | 1.0000000 | .4166667 + 500 | 12 | 30 | 1 | .0000000 | .5000000 | 1.0000000 | 1.0000000 | 1.0000000 | .4166667 + 100 | 1 | 20 | 1 | .0000000 | .5000000 | 1.0000000 | 1.0000000 | 1.0000000 | .4166667 + 200 | 1 | 10 | 1 | .0000000 | .5000000 | 1.0000000 | 1.0000000 | 1.0000000 | .4166667 + 100 | 1100 | 40 | 2 | .0000000 | 1.0000000 | 1.0000000 | 2.0000000 | .0000000 | .5833333 + 400 | 1 | 50 | 2 | .0000000 | 1.0000000 | 1.0000000 | 2.0000000 | .0000000 | .5833333 + 500 | 12 | 30 | 3 | .0000000 | 1.0000000 | 1.0000000 | 2.0000000 | .0000000 | .8333333 + 200 | 1 | 40 | 3 | .0000000 | 1.0000000 | 1.0000000 | 2.0000000 | .0000000 | .8333333 + 600 | 12 | 30 | 3 | .0000000 | 1.0000000 | 3.0000000 | 1.0000000 | .0000000 | .8333333 + 700 | 1 | 40 | 4 | .0000000 | 1.0000000 | 4.0000000 | 1.0000000 | .0000000 | 1.0000000 + 800 | 1 | 40 | 4 | .0000000 | 1.0000000 | 4.0000000 | 1.0000000 | .0000000 | 1.0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.prc,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(partition by ow_sale.qty,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.vn) preceding ), +win2 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc); -- mvd 1,7,8,5->6; 8,2,5->9; 8,2,5->10; + cn | qty | prc | cn | pn | to_char | dt | vn | to_char | to_char +----+------+------+----+-----+-------------------+------------+----+-------------------+------------------- + 3 | 1 | 0 | 3 | 200 | .0000000 | 1401-04-01 | 40 | -1.0000000 | 1.0000000 + 1 | 1 | 0 | 1 | 100 | .0000000 | 1401-05-01 | 20 | -1.0000000 | 1.0000000 + 1 | 1 | 0 | 1 | 300 | .0000000 | 1401-05-02 | 30 | -1.0000000 | 1.0000000 + 1 | 1 | 0 | 1 | 400 | .0000000 | 1401-06-01 | 50 | -1.0000000 | 1.0000000 + 1 | 12 | 5 | 1 | 500 | .0000000 | 1401-06-01 | 30 | .0000000 | 1.0000000 + 3 | 12 | 5 | 3 | 500 | .0000000 | 1401-06-01 | 30 | .0000000 | 1.0000000 + 4 | 1 | 1 | 4 | 700 | .0000000 | 1401-06-01 | 40 | .0000000 | 4.0000000 + 2 | 1100 | 2400 | 2 | 100 | .0000000 | 1401-01-01 | 40 | .0000000 | 2.0000000 + 1 | 1 | 0 | 1 | 200 | .0000000 | 1401-03-01 | 10 | -1.0000000 | 1.0000000 + 2 | 1 | 0 | 2 | 400 | .0000000 | 1401-06-01 | 50 | -1.0000000 | 1.0000000 + 3 | 12 | 5 | 3 | 600 | .0000000 | 1401-06-01 | 30 | .0000000 | 3.0000000 + 4 | 1 | 1 | 4 | 800 | .0000000 | 1401-06-01 | 40 | .0000000 | 4.0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and current row ); -- mvd 1,8,3->7; + cn | prc | pn | pn | qty | qty | to_char | dt +----+------+-----+-----+------+------+-------------------+------------ + 1 | 0 | 100 | 100 | 1 | 1 | .0000000 | 1401-05-01 + 3 | 0 | 200 | 200 | 1 | 1 | .0000000 | 1401-04-01 + 1 | 0 | 300 | 300 | 1 | 1 | .0000000 | 1401-05-02 + 1 | 0 | 400 | 400 | 1 | 1 | .0000000 | 1401-06-01 + 1 | 5 | 500 | 500 | 12 | 12 | .0000000 | 1401-06-01 + 3 | 5 | 500 | 500 | 12 | 12 | .0000000 | 1401-06-01 + 4 | 1 | 700 | 700 | 1 | 1 | .0000000 | 1401-06-01 + 2 | 2400 | 100 | 100 | 1100 | 1100 | .0000000 | 1401-01-01 + 1 | 0 | 200 | 200 | 1 | 1 | .0000000 | 1401-03-01 + 2 | 0 | 400 | 400 | 1 | 1 | .0000000 | 1401-06-01 + 3 | 5 | 600 | 600 | 12 | 12 | .0000000 | 1401-06-01 + 4 | 1 | 800 | 800 | 1 | 1 | .0000000 | 1401-06-01 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(partition by ow_sale.prc,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc); -- mvd 4,2,5,1->3; 4,2,5,1->6; 4,2,5,1->7; 9->8; 4,2,9,5,1->10; + pn | dt | to_char | prc | vn | to_char | to_char | to_char | cn | to_char +-----+------------+-------------------+------+----+-------------------+-------------------+-------------------+----+------------------- + 500 | 1401-06-01 | .0000000 | 5 | 30 | 1.0000000 | 5.0000000 | 1.0000000 | 1 | .0000000 + 300 | 1401-05-02 | .0000000 | 0 | 30 | 1.0000000 | .0000000 | 2.0000000 | 1 | .0000000 + 400 | 1401-06-01 | .0000000 | 0 | 50 | 1.0000000 | .0000000 | 3.0000000 | 1 | .0000000 + 200 | 1401-03-01 | .0000000 | 0 | 10 | 1.0000000 | .0000000 | 4.0000000 | 1 | .0000000 + 100 | 1401-05-01 | .0000000 | 0 | 20 | 1.0000000 | .0000000 | 5.0000000 | 1 | .0000000 + 100 | 1401-01-01 | .0000000 | 2400 | 40 | 1.0000000 | 2400.0000000 | 6.0000000 | 2 | .0000000 + 400 | 1401-06-01 | .5000000 | 0 | 50 | 2.0000000 | .0000000 | 7.0000000 | 2 | .0000000 + 500 | 1401-06-01 | 1.0000000 | 5 | 30 | 2.0000000 | 5.0000000 | 8.0000000 | 3 | .0000000 + 600 | 1401-06-01 | .9428090 | 5 | 30 | 3.0000000 | 5.0000000 | 9.0000000 | 3 | .0000000 + 200 | 1401-04-01 | .0000000 | 0 | 40 | 1.0000000 | .0000000 | 10.0000000 | 3 | .0000000 + 700 | 1401-06-01 | .0000000 | 1 | 40 | 1.0000000 | 1.0000000 | 11.0000000 | 4 | .0000000 + 800 | 1401-06-01 | .0000000 | 1 | 40 | 2.0000000 | 1.0000000 | 12.0000000 | 4 | .0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.vn) following ); -- mvd 8,6,2->7; + pn | qty | vn | pn | dt | cn | to_char | prc +-----+------+----+-----+------------+----+-------------------+------ + 500 | 12 | 30 | 500 | 1401-06-01 | 1 | .0000000 | 5 + 400 | 1 | 50 | 400 | 1401-06-01 | 2 | .0000000 | 0 + 500 | 12 | 30 | 500 | 1401-06-01 | 3 | .0000000 | 5 + 600 | 12 | 30 | 600 | 1401-06-01 | 3 | .0000000 | 5 + 200 | 1 | 10 | 200 | 1401-03-01 | 1 | .0000000 | 0 + 100 | 1 | 20 | 100 | 1401-05-01 | 1 | .0000000 | 0 + 300 | 1 | 30 | 300 | 1401-05-02 | 1 | .0000000 | 0 + 400 | 1 | 50 | 400 | 1401-06-01 | 1 | .0000000 | 0 + 100 | 1100 | 40 | 100 | 1401-01-01 | 2 | .0000000 | 2400 + 200 | 1 | 40 | 200 | 1401-04-01 | 3 | .0000000 | 0 + 700 | 1 | 40 | 700 | 1401-06-01 | 4 | .0000000 | 1 + 800 | 1 | 40 | 800 | 1401-06-01 | 4 | .0000000 | 1 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows between unbounded preceding and 0 following ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.vn desc); -- mvd 8,9,2->7; 2->10; 9->11; + prc | pn | pn | pn | qty | prc | to_char | cn | vn | to_char | to_char +------+-----+-----+-----+------+------+-------------------+----+----+-------------------+------------------- + 1 | 800 | 800 | 800 | 1 | 1 | .0000000 | 4 | 40 | 1.0000000 | 3.0000000 + 1 | 700 | 700 | 700 | 1 | 1 | .0000000 | 4 | 40 | 2.0000000 | 3.0000000 + 5 | 600 | 600 | 600 | 12 | 5 | .0000000 | 3 | 30 | 3.0000000 | 7.0000000 + 5 | 500 | 500 | 500 | 12 | 5 | .0000000 | 3 | 30 | 4.0000000 | 7.0000000 + 5 | 500 | 500 | 500 | 12 | 5 | .0000000 | 1 | 30 | 4.0000000 | 7.0000000 + 0 | 400 | 400 | 400 | 1 | 0 | .0000000 | 2 | 50 | 6.0000000 | 1.0000000 + 0 | 400 | 400 | 400 | 1 | 0 | .0000000 | 1 | 50 | 6.0000000 | 1.0000000 + 0 | 300 | 300 | 300 | 1 | 0 | .0000000 | 1 | 30 | 8.0000000 | 7.0000000 + 0 | 200 | 200 | 200 | 1 | 0 | .0000000 | 3 | 40 | 9.0000000 | 3.0000000 + 0 | 200 | 200 | 200 | 1 | 0 | .0000000 | 1 | 10 | 9.0000000 | 12.0000000 + 2400 | 100 | 100 | 100 | 1100 | 2400 | .0000000 | 2 | 40 | 11.0000000 | 3.0000000 + 0 | 100 | 100 | 100 | 1 | 0 | .0000000 | 1 | 20 | 11.0000000 | 11.0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.pn asc rows between unbounded preceding and unbounded following ); -- mvd 5,6,7,3->4; + prc | prc | pn | to_char | cn | dt | vn +------+------+-----+-------------------+----+------------+---- + 0 | 0 | 200 | .0000000 | 1 | 1401-03-01 | 10 + 0 | 0 | 300 | .0000000 | 1 | 1401-05-02 | 30 + 5 | 5 | 500 | 3.7712362 | 1 | 1401-06-01 | 30 + 5 | 5 | 500 | 3.7712362 | 3 | 1401-06-01 | 30 + 5 | 5 | 600 | 3.7712362 | 3 | 1401-06-01 | 30 + 1 | 1 | 700 | .0000000 | 4 | 1401-06-01 | 40 + 1 | 1 | 800 | .0000000 | 4 | 1401-06-01 | 40 + 0 | 0 | 400 | 1.5000000 | 1 | 1401-06-01 | 50 + 0 | 0 | 400 | 1.5000000 | 2 | 1401-06-01 | 50 + 0 | 0 | 100 | .0000000 | 1 | 1401-05-01 | 20 + 2400 | 2400 | 100 | .0000000 | 2 | 1401-01-01 | 40 + 0 | 0 | 200 | .0000000 | 3 | 1401-04-01 | 40 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.pn desc); -- mvd 3,5->4; 3,5->6; + prc | vn | cn | to_char | pn | to_char +------+----+----+-------------------+-----+------------------- + 0 | 30 | 1 | .0000000 | 300 | 3.0000000 + 0 | 50 | 1 | .0000000 | 400 | 2.0000000 + 0 | 50 | 2 | .0000000 | 400 | 1.0000000 + 5 | 30 | 1 | .0000000 | 500 | 1.0000000 + 5 | 30 | 3 | .0000000 | 500 | 2.0000000 + 1 | 40 | 4 | .0000000 | 800 | 1.0000000 + 2400 | 40 | 2 | 1200.0000000 | 100 | 2.0000000 + 0 | 20 | 1 | 1200.0000000 | 100 | 5.0000000 + 0 | 10 | 1 | .0000000 | 200 | 4.0000000 + 0 | 40 | 3 | .0000000 | 200 | 3.0000000 + 5 | 30 | 3 | .0000000 | 600 | 1.0000000 + 1 | 40 | 4 | .0000000 | 700 | 2.0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between floor(ow_sale.prc+ow_sale.vn) preceding and 6 preceding ); -- mvd 4,1->3; + vn | prc | to_char | cn +----+------+-------------------+---- + 10 | 0 | .0000000 | 1 + 20 | 0 | .0000000 | 1 + 30 | 0 | .0000000 | 1 + 50 | 0 | .0000000 | 1 + 30 | 5 | .0000000 | 1 + 40 | 0 | .0000000 | 3 + 30 | 5 | .0000000 | 3 + 30 | 5 | .0000000 | 3 + 40 | 2400 | .0000000 | 2 + 50 | 0 | .0000000 | 2 + 40 | 1 | .0000000 | 4 + 40 | 1 | .0000000 | 4 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn/ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.prc) preceding and 0 preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,4,5->2; 1->6; + cn | to_char | dt | vn | pn | to_char +----+-------------------+------------+----+-----+------------------- + 2 | .0000000 | 1401-01-01 | 40 | 100 | .0000000 + 1 | .0000000 | 1401-03-01 | 10 | 200 | .0000000 + 3 | .0000000 | 1401-04-01 | 40 | 200 | .0000000 + 1 | .0000000 | 1401-05-01 | 20 | 100 | .0000000 + 1 | .0000000 | 1401-05-02 | 30 | 300 | .0000000 + 1 | .0000000 | 1401-06-01 | 50 | 400 | .0000000 + 2 | .0000000 | 1401-06-01 | 50 | 400 | .0000000 + 1 | .0000000 | 1401-06-01 | 30 | 500 | .0000000 + 3 | 5.0000000 | 1401-06-01 | 30 | 500 | .0000000 + 3 | .0000000 | 1401-06-01 | 30 | 600 | .0000000 + 4 | .0000000 | 1401-06-01 | 40 | 700 | .0000000 + 4 | .0000000 | 1401-06-01 | 40 | 800 | .0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc,ow_sale.pn asc rows between 3 preceding and current row ); -- mvd 4,1,5,2->3; + dt | pn | to_char | cn | vn +------------+-----+-------------------+----+---- + 1401-03-01 | 200 | .0000000 | 1 | 10 + 1401-06-01 | 600 | .0000000 | 3 | 30 + 1401-06-01 | 700 | .0000000 | 4 | 40 + 1401-05-01 | 100 | .0000000 | 1 | 20 + 1401-05-02 | 300 | .0000000 | 1 | 30 + 1401-06-01 | 500 | .0000000 | 1 | 30 + 1401-06-01 | 500 | 1.0000000 | 3 | 30 + 1401-01-01 | 100 | .0000000 | 2 | 40 + 1401-04-01 | 200 | .0000000 | 3 | 40 + 1401-06-01 | 800 | .0000000 | 4 | 40 + 1401-06-01 | 400 | .0000000 | 1 | 50 + 1401-06-01 | 400 | .5000000 | 2 | 50 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc/ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.cn desc rows between floor(ow_sale.prc) preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc); -- mvd 4,5,6,1->3; 5,8,2->7; 5,2->9; + pn | vn | to_char | prc | cn | dt | to_char | qty | to_char +-----+----+-------------------+------+----+------------+-------------------+------+------------------- + 100 | 40 | .0000000 | 2400 | 2 | 1401-01-01 | .0000000 | 1100 | .0000000 + 200 | 10 | .0000000 | 0 | 1 | 1401-03-01 | .0000000 | 1 | .0000000 + 300 | 30 | .0000000 | 0 | 1 | 1401-05-02 | .0000000 | 1 | .0000000 + 400 | 50 | .0000000 | 0 | 1 | 1401-06-01 | .0000000 | 1 | .0000000 + 700 | 40 | .0000000 | 1 | 4 | 1401-06-01 | .0000000 | 1 | .0000000 + 800 | 40 | .0000000 | 1 | 4 | 1401-06-01 | .0000000 | 1 | .0000000 + 500 | 30 | .0000000 | 5 | 1 | 1401-06-01 | .0000000 | 12 | .0000000 + 500 | 30 | .0000000 | 5 | 3 | 1401-06-01 | .0000000 | 12 | .0000000 + 600 | 30 | .0000000 | 5 | 3 | 1401-06-01 | .0000000 | 12 | .0000000 + 200 | 40 | .0000000 | 0 | 3 | 1401-04-01 | .0000000 | 1 | .0000000 + 100 | 20 | .0000000 | 0 | 1 | 1401-05-01 | .0000000 | 1 | .0000000 + 400 | 50 | .0000000 | 0 | 2 | 1401-06-01 | .0000000 | 1 | .0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.prc+ow_sale.cn) preceding and floor(ow_sale.vn) following ); -- mvd 6,7->5; + pn | qty | qty | qty | to_char | cn | vn +-----+------+------+------+-------------------+----+---- + 100 | 1100 | 1100 | 1100 | .0000000 | 2 | 40 + 700 | 1 | 1 | 1 | .0000000 | 4 | 40 + 800 | 1 | 1 | 1 | .0000000 | 4 | 40 + 400 | 1 | 1 | 1 | .0000000 | 2 | 50 + 200 | 1 | 1 | 1 | .0000000 | 1 | 10 + 100 | 1 | 1 | 1 | .0000000 | 1 | 20 + 300 | 1 | 1 | 1 | 5.5000000 | 1 | 30 + 500 | 12 | 12 | 12 | 5.5000000 | 1 | 30 + 500 | 12 | 12 | 12 | .0000000 | 3 | 30 + 600 | 12 | 12 | 12 | .0000000 | 3 | 30 + 200 | 1 | 1 | 1 | .0000000 | 3 | 40 + 400 | 1 | 1 | 1 | .0000000 | 1 | 50 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.vn) as int),cast (floor(ow_sale.vn-ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.cn order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows between 2 preceding and floor(ow_sale.pn/ow_sale.pn) following ), +win2 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.vn asc), +win3 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc); -- mvd 4,5,6,2->3; 5,6->7; 5,1->8; 5,6->9; + qty | pn | to_char | dt | cn | vn | to_char | to_char | to_char +------+-----+-------------------+------------+----+----+-------------------+-------------------+------------------- + 1 | 100 | .0000000 | 1401-05-01 | 1 | 20 | 1.0000000 | .0000000 | 1.0000000 + 1 | 300 | .0000000 | 1401-05-02 | 1 | 30 | 1.0000000 | .0000000 | 2.0000000 + 1 | 400 | .0000000 | 1401-06-01 | 1 | 50 | 1.0000000 | .0000000 | 1.0000000 + 12 | 500 | .0000000 | 1401-06-01 | 1 | 30 | 1.0000000 | .0000000 | 1.0000000 + 1 | 200 | .0000000 | 1401-04-01 | 3 | 40 | 1.0000000 | .0000000 | 1.0000000 + 12 | 500 | .0000000 | 1401-06-01 | 3 | 30 | 1.0000000 | .0000000 | 1.0000000 + 1 | 700 | .0000000 | 1401-06-01 | 4 | 40 | 1.0000000 | .0000000 | 1.0000000 + 1 | 200 | .0000000 | 1401-03-01 | 1 | 10 | 1.0000000 | .0000000 | 1.0000000 + 1100 | 100 | .0000000 | 1401-01-01 | 2 | 40 | 1.0000000 | .0000000 | 1.0000000 + 1 | 400 | .0000000 | 1401-06-01 | 2 | 50 | 1.0000000 | .0000000 | 1.0000000 + 12 | 600 | .0000000 | 1401-06-01 | 3 | 30 | 1.0000000 | .0000000 | 2.0000000 + 1 | 800 | .0000000 | 1401-06-01 | 4 | 40 | 1.0000000 | .0000000 | 2.0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.prc,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.prc) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.prc) preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.prc,ow_sale.cn order by ow_sale.cn asc), +win3 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.vn asc); -- mvd 5,6,7->4; 5,6,7->8; 5,6,1->9; 6,7,2->10; + qty | pn | qty | to_char | prc | cn | vn | to_char | to_char | to_char +------+-----+------+-------------------+------+----+----+-------------------+-------------------+------------------- + 1 | 200 | 1 | .0000000 | 0 | 1 | 10 | 1.0000000 | .0000000 | 1.0000000 + 1 | 100 | 1 | .0000000 | 0 | 1 | 20 | 1.0000000 | .0000000 | 1.0000000 + 1 | 300 | 1 | .0000000 | 0 | 1 | 30 | 1.0000000 | .0000000 | 1.0000000 + 1 | 200 | 1 | .0000000 | 0 | 3 | 40 | 1.0000000 | .0000000 | 1.0000000 + 1 | 400 | 1 | .0000000 | 0 | 1 | 50 | 1.0000000 | .0000000 | 1.0000000 + 1 | 700 | 1 | .0000000 | 1 | 4 | 40 | 2.0000000 | .0000000 | 1.0000000 + 1 | 800 | 1 | .0000000 | 1 | 4 | 40 | 2.0000000 | .0000000 | 1.0000000 + 12 | 500 | 12 | .0000000 | 5 | 1 | 30 | 1.0000000 | .0000000 | 1.0000000 + 12 | 500 | 12 | .0000000 | 5 | 3 | 30 | 2.0000000 | .0000000 | 1.0000000 + 12 | 600 | 12 | .0000000 | 5 | 3 | 30 | 2.0000000 | .0000000 | 1.0000000 + 1 | 400 | 1 | .0000000 | 0 | 2 | 50 | 1.0000000 | .0000000 | 1.0000000 + 1100 | 100 | 1100 | .0000000 | 2400 | 2 | 40 | 1.0000000 | .0000000 | 1.0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc rows between current row and current row ); -- mvd 3,4,5,6,7->2; + qty | to_char | prc | cn | dt | vn | pn +------+-------------------+------+----+------------+----+----- + 1 | .0000000 | 0 | 3 | 1401-04-01 | 40 | 200 + 1 | .0000000 | 0 | 1 | 1401-05-01 | 20 | 100 + 1 | .0000000 | 0 | 1 | 1401-05-02 | 30 | 300 + 1 | .0000000 | 0 | 1 | 1401-06-01 | 50 | 400 + 1 | .0000000 | 1 | 4 | 1401-06-01 | 40 | 800 + 12 | .0000000 | 5 | 1 | 1401-06-01 | 30 | 500 + 12 | .0000000 | 5 | 3 | 1401-06-01 | 30 | 500 + 1100 | .0000000 | 2400 | 2 | 1401-01-01 | 40 | 100 + 1 | .0000000 | 0 | 1 | 1401-03-01 | 10 | 200 + 1 | .0000000 | 0 | 2 | 1401-06-01 | 50 | 400 + 1 | .0000000 | 1 | 4 | 1401-06-01 | 40 | 700 + 12 | .0000000 | 5 | 3 | 1401-06-01 | 30 | 600 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between current row and 5 following ); -- mvd 3,4->2; + pn | to_char | cn | vn +-----+-------------------+----+---- + 200 | 141.4213562 | 1 | 10 + 100 | 147.9019946 | 1 | 20 + 300 | 81.6496581 | 1 | 30 + 400 | 50.0000000 | 1 | 50 + 500 | .0000000 | 1 | 30 + 200 | 169.9673171 | 3 | 40 + 500 | 50.0000000 | 3 | 30 + 600 | .0000000 | 3 | 30 + 100 | 150.0000000 | 2 | 40 + 400 | .0000000 | 2 | 50 + 700 | 50.0000000 | 4 | 40 + 800 | .0000000 | 4 | 40 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn asc rows between current row and floor(ow_sale.pn) following ), +win2 as (partition by ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 6,2,1->5; 8,6,9->7; 8,6,9->10; + pn | vn | pn | pn | to_char | cn | to_char | prc | dt | to_char +-----+----+-----+-----+-------------------+----+-------------------+------+------------+------------------- + 200 | 10 | 200 | 200 | .0000000 | 1 | .0000000 | 0 | 1401-03-01 | 1.0000000 + 100 | 20 | 100 | 100 | .0000000 | 1 | .0000000 | 0 | 1401-05-01 | 1.0000000 + 300 | 30 | 300 | 300 | .0000000 | 1 | .0000000 | 0 | 1401-05-02 | 1.0000000 + 400 | 50 | 400 | 400 | .0000000 | 1 | .0000000 | 0 | 1401-06-01 | 1.0000000 + 500 | 30 | 500 | 500 | .0000000 | 1 | .0000000 | 5 | 1401-06-01 | 1.0000000 + 200 | 40 | 200 | 200 | .0000000 | 3 | .0000000 | 0 | 1401-04-01 | 1.0000000 + 500 | 30 | 500 | 500 | .0000000 | 3 | .0000000 | 5 | 1401-06-01 | 2.0000000 + 600 | 30 | 600 | 600 | .0000000 | 3 | .0000000 | 5 | 1401-06-01 | 3.0000000 + 100 | 40 | 100 | 100 | .0000000 | 2 | .0000000 | 2400 | 1401-01-01 | 1.0000000 + 400 | 50 | 400 | 400 | .0000000 | 2 | .0000000 | 0 | 1401-06-01 | 2.0000000 + 700 | 40 | 700 | 700 | .0000000 | 4 | .0000000 | 1 | 1401-06-01 | 1.0000000 + 800 | 40 | 800 | 800 | .0000000 | 4 | 1.0000000 | 1 | 1401-06-01 | 2.0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc,ow_sale.pn asc rows between current row and unbounded following ); -- mvd 2,1,6->5; + cn | prc | dt | cn | to_char | pn +----+------+------------+----+-------------------+----- + 1 | 0 | 1401-05-02 | 1 | .0000000 | 300 + 1 | 0 | 1401-06-01 | 1 | .0000000 | 400 + 2 | 0 | 1401-06-01 | 2 | .0000000 | 400 + 1 | 5 | 1401-06-01 | 1 | .0000000 | 500 + 3 | 5 | 1401-06-01 | 3 | .0000000 | 500 + 4 | 1 | 1401-06-01 | 4 | .0000000 | 700 + 1 | 0 | 1401-05-01 | 1 | .0000000 | 100 + 2 | 2400 | 1401-01-01 | 2 | .0000000 | 100 + 1 | 0 | 1401-03-01 | 1 | .0000000 | 200 + 3 | 0 | 1401-04-01 | 3 | .0000000 | 200 + 3 | 5 | 1401-06-01 | 3 | .0000000 | 600 + 4 | 1 | 1401-06-01 | 4 | .0000000 | 800 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.vn desc rows between current row and unbounded following ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc), +win4 as (order by ow_sale.vn asc); -- mvd 4,2,1,5,6->3; 6->7; 4,2,5,9->8; 4,2,1,5,6->10; 5->11; + dt | cn | to_char | prc | vn | pn | to_char | to_char | qty | to_char | to_char +------------+----+-------------------+------+----+-----+-------------------+-------------------+------+-------------------+------------------- + 1401-03-01 | 1 | .0000000 | 0 | 10 | 200 | 3.0000000 | .0000000 | 1 | .0000000 | 1.0000000 + 1401-05-01 | 1 | .0000000 | 0 | 20 | 100 | 1.0000000 | .0000000 | 1 | .0000000 | 2.0000000 + 1401-06-01 | 3 | .0000000 | 5 | 30 | 500 | 8.0000000 | .0000000 | 12 | 5.0000000 | 3.0000000 + 1401-06-01 | 1 | .0000000 | 5 | 30 | 500 | 8.0000000 | .0000000 | 12 | 5.0000000 | 4.0000000 + 1401-05-02 | 1 | .0000000 | 0 | 30 | 300 | 5.0000000 | .0000000 | 1 | .0000000 | 5.0000000 + 1401-06-01 | 3 | .0000000 | 5 | 30 | 600 | 10.0000000 | .0000000 | 12 | 5.0000000 | 6.0000000 + 1401-01-01 | 2 | .0000000 | 2400 | 40 | 100 | 1.0000000 | .0000000 | 1100 | 2400.0000000 | 7.0000000 + 1401-04-01 | 3 | .0000000 | 0 | 40 | 200 | 3.0000000 | .0000000 | 1 | .0000000 | 8.0000000 + 1401-06-01 | 4 | .0000000 | 1 | 40 | 700 | 11.0000000 | .0000000 | 1 | 1.0000000 | 9.0000000 + 1401-06-01 | 4 | .0000000 | 1 | 40 | 800 | 12.0000000 | .0000000 | 1 | 1.0000000 | 10.0000000 + 1401-06-01 | 2 | .0000000 | 0 | 50 | 400 | 6.0000000 | .0000000 | 1 | .0000000 | 11.0000000 + 1401-06-01 | 1 | .0000000 | 0 | 50 | 400 | 6.0000000 | .0000000 | 1 | .0000000 | 12.0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc rows between 6 following and 7 following ); -- mvd 1,3,4->2; + prc | to_char | cn | pn +------+-------------------+----+----- + 0 | .0000000 | 1 | 100 + 0 | .0000000 | 1 | 200 + 0 | .0000000 | 2 | 400 + 0 | .0000000 | 3 | 200 + 5 | .0000000 | 3 | 600 + 1 | .0000000 | 4 | 700 + 0 | .0000000 | 1 | 300 + 0 | .0000000 | 1 | 400 + 5 | .0000000 | 1 | 500 + 2400 | .0000000 | 2 | 100 + 5 | .0000000 | 3 | 500 + 1 | .0000000 | 4 | 800 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.qty)) OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.cn order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.cn) following and floor(ow_sale.pn/ow_sale.qty) following ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.cn order by ow_sale.vn asc), +win3 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.vn asc), +win4 as (order by ow_sale.cn desc); -- mvd 1,4,5->3; 7,1,8,4,2->6; 7,1,8,4,2->9; 7,1,8,4->10; 1->11; + cn | pn | to_char | vn | qty | to_char | prc | dt | to_char | to_char | to_char +----+-----+-------------------+----+------+-------------------+------+------------+-------------------+-------------------+------------------- + 4 | 800 | .0000000 | 40 | 1 | 1.0000000 | 1 | 1401-06-01 | 3.0000000 | 1.0000000 | 1.0000000 + 4 | 700 | .0000000 | 40 | 1 | 1.0000000 | 1 | 1401-06-01 | 3.0000000 | 1.0000000 | 2.0000000 + 3 | 200 | .0000000 | 40 | 1 | 1.0000000 | 0 | 1401-04-01 | 2.0000000 | 1.0000000 | 3.0000000 + 3 | 500 | .0000000 | 30 | 12 | 1.0000000 | 5 | 1401-06-01 | -9.0000000 | 1.0000000 | 4.0000000 + 3 | 600 | .0000000 | 30 | 12 | 1.0000000 | 5 | 1401-06-01 | -9.0000000 | 1.0000000 | 5.0000000 + 2 | 100 | .0000000 | 40 | 1100 | 1.0000000 | 2400 | 1401-01-01 | -1098.0000000 | 1.0000000 | 6.0000000 + 2 | 400 | .0000000 | 50 | 1 | 1.0000000 | 0 | 1401-06-01 | 1.0000000 | 1.0000000 | 7.0000000 + 1 | 300 | .0000000 | 30 | 1 | 1.0000000 | 0 | 1401-05-02 | .0000000 | 1.0000000 | 8.0000000 + 1 | 100 | .0000000 | 20 | 1 | 1.0000000 | 0 | 1401-05-01 | .0000000 | 1.0000000 | 9.0000000 + 1 | 400 | .0000000 | 50 | 1 | 1.0000000 | 0 | 1401-06-01 | .0000000 | 1.0000000 | 10.0000000 + 1 | 200 | .0000000 | 10 | 1 | 1.0000000 | 0 | 1401-03-01 | .0000000 | 1.0000000 | 11.0000000 + 1 | 500 | .0000000 | 30 | 12 | 1.0000000 | 5 | 1401-06-01 | -11.0000000 | 1.0000000 | 12.0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn asc rows between 1 following and unbounded following ); -- mvd 2,1->4; + vn | cn | cn | to_char +----+----+----+------------------- + 10 | 1 | 1 | 147.9019946 + 20 | 1 | 1 | 81.6496581 + 30 | 1 | 1 | 50.0000000 + 50 | 1 | 1 | .0000000 + 30 | 1 | 1 | .0000000 + 40 | 3 | 3 | 50.0000000 + 30 | 3 | 3 | .0000000 + 30 | 3 | 3 | .0000000 + 40 | 2 | 2 | .0000000 + 50 | 2 | 2 | .0000000 + 40 | 4 | 4 | .0000000 + 40 | 4 | 4 | .0000000 +(12 rows) + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.prc) following and unbounded following ), +win2 as (partition by ow_sale.cn order by ow_sale.cn asc), +win3 as (partition by ow_sale.prc,ow_sale.qty order by ow_sale.pn asc); -- mvd 1,4,5,2->3; 1->6; 1,4,5,2->7; 9,10,2->8; + cn | pn | to_char | dt | vn | to_char | to_char | to_char | prc | qty +----+-----+-------------------+------------+----+-------------------+-------------------+-------------------+------+------ + 1 | 100 | .0000000 | 1401-05-01 | 20 | .0000000 | 1.0000000 | 1.0000000 | 0 | 1 + 1 | 200 | .0000000 | 1401-03-01 | 10 | .0000000 | 1.0000000 | 2.0000000 | 0 | 1 + 1 | 300 | .0000000 | 1401-05-02 | 30 | .0000000 | 1.0000000 | 4.0000000 | 0 | 1 + 1 | 400 | .0000000 | 1401-06-01 | 50 | .0000000 | 1.0000000 | 6.0000000 | 0 | 1 + 1 | 500 | .0000000 | 1401-06-01 | 30 | .0000000 | .0000000 | 1.0000000 | 5 | 12 + 3 | 600 | .0000000 | 1401-06-01 | 30 | .0000000 | .0000000 | 3.0000000 | 5 | 12 + 3 | 500 | .0000000 | 1401-06-01 | 30 | .0000000 | .0000000 | 2.0000000 | 5 | 12 + 3 | 200 | .0000000 | 1401-04-01 | 40 | .0000000 | 3.0000000 | 3.0000000 | 0 | 1 + 2 | 100 | .0000000 | 1401-01-01 | 40 | .0000000 | .0000000 | 1.0000000 | 2400 | 1100 + 2 | 400 | .0000000 | 1401-06-01 | 50 | .0000000 | 2.0000000 | 5.0000000 | 0 | 1 + 4 | 700 | .0000000 | 1401-06-01 | 40 | .0000000 | .0000000 | 1.0000000 | 1 | 1 + 4 | 800 | .0000000 | 1401-06-01 | 40 | .0000000 | .0000000 | 2.0000000 | 1 | 1 +(12 rows) + +-- STDDEV_SAMP() function with NULL OVER() clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (); -- mvd 2->2; + cn | to_char +----+------------------- + 1 | 316.4258734 + 3 | 316.4258734 + 1 | 316.4258734 + 2 | 316.4258734 + 3 | 316.4258734 + 4 | 316.4258734 + 2 | 316.4258734 + 1 | 316.4258734 + 1 | 316.4258734 + 1 | 316.4258734 + 3 | 316.4258734 + 4 | 316.4258734 +(12 rows) + +-- STDDEV_SAMP() function with OVER() clause having ONLY PARTITION BY -- +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.vn); -- mvd 4,5,6->3; + qty | qty | to_char | cn | dt | vn +------+------+-------------------+----+------------+---- + 1 | 1 | .0000000 | 3 | 1401-04-01 | 40 + 1 | 1 | .0000000 | 1 | 1401-05-01 | 20 + 1 | 1 | .0000000 | 2 | 1401-06-01 | 50 + 1 | 1 | .0000000 | 4 | 1401-06-01 | 40 + 1 | 1 | .0000000 | 4 | 1401-06-01 | 40 + 1100 | 1100 | .0000000 | 2 | 1401-01-01 | 40 + 1 | 1 | .0000000 | 1 | 1401-03-01 | 10 + 1 | 1 | .0000000 | 1 | 1401-05-02 | 30 + 12 | 12 | .0000000 | 1 | 1401-06-01 | 30 + 1 | 1 | .0000000 | 1 | 1401-06-01 | 50 + 12 | 12 | .0000000 | 3 | 1401-06-01 | 30 + 12 | 12 | .0000000 | 3 | 1401-06-01 | 30 +(12 rows) + +-- STDDEV_SAMP() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.cn), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.cn desc); -- mvd 6,2->5; 8->7; 8->9; 6->10; + dt | qty | qty | qty | to_char | cn | to_char | vn | to_char | to_char +------------+------+------+------+-------------------+----+-------------------+----+-------------------+------------------- + 1401-06-01 | 1 | 1 | 1 | .0000000 | 1 | .1666667 | 50 | 1.0000000 | 12.0000000 + 1401-06-01 | 1 | 1 | 1 | .0000000 | 2 | .1666667 | 50 | 1.0000000 | 7.0000000 + 1401-06-01 | 1 | 1 | 1 | .0000000 | 4 | .5000000 | 40 | 2.0000000 | 1.0000000 + 1401-04-01 | 1 | 1 | 1 | .0000000 | 3 | .5000000 | 40 | 2.0000000 | 5.0000000 + 1401-06-01 | 1 | 1 | 1 | .0000000 | 4 | .5000000 | 40 | 2.0000000 | 2.0000000 + 1401-01-01 | 1100 | 1100 | 1100 | .0000000 | 2 | .5000000 | 40 | 2.0000000 | 6.0000000 + 1401-06-01 | 12 | 12 | 12 | .0000000 | 1 | .8333333 | 30 | 3.0000000 | 8.0000000 + 1401-06-01 | 12 | 12 | 12 | .0000000 | 3 | .8333333 | 30 | 3.0000000 | 4.0000000 + 1401-06-01 | 12 | 12 | 12 | .0000000 | 3 | .8333333 | 30 | 3.0000000 | 3.0000000 + 1401-05-02 | 1 | 1 | 1 | .0000000 | 1 | .8333333 | 30 | 3.0000000 | 11.0000000 + 1401-05-01 | 1 | 1 | 1 | .0000000 | 1 | .9166667 | 20 | 4.0000000 | 10.0000000 + 1401-03-01 | 1 | 1 | 1 | .0000000 | 1 | 1.0000000 | 10 | 5.0000000 | 9.0000000 +(12 rows) + +-- STDDEV_SAMP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc,ow_sale.cn desc); -- mvd 4,5->3; + pn | pn | to_char | cn | vn +-----+-----+-------------------+----+---- + 200 | 200 | .0000000 | 1 | 10 + 100 | 100 | .0000000 | 1 | 20 + 600 | 600 | 1.1547005 | 3 | 30 + 500 | 500 | 1.1547005 | 3 | 30 + 300 | 300 | 1.0327956 | 1 | 30 + 500 | 500 | 1.0327956 | 1 | 30 + 700 | 700 | 1.3887301 | 4 | 40 + 800 | 800 | 1.3887301 | 4 | 40 + 200 | 200 | 1.3228757 | 3 | 40 + 100 | 100 | 1.2516656 | 2 | 40 + 400 | 400 | 1.1908744 | 2 | 50 + 400 | 400 | 1.1934163 | 1 | 50 +(12 rows) + +-- STDDEV_SAMP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +, +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc); -- mvd 3->2; 3->4; + cn | to_char | pn | to_char +----+-------------------+-----+------------------- + 1 | 1414.2135624 | 100 | .1666667 + 2 | 1414.2135624 | 100 | .1666667 + 1 | 2828.4271247 | 200 | .3333333 + 3 | 2828.4271247 | 200 | .3333333 + 1 | 3316.6247904 | 300 | .4166667 + 1 | 7804.1503000 | 400 | .5833333 + 2 | 7804.1503000 | 400 | .5833333 + 1 | 7213.0283361 | 500 | .7500000 + 3 | 7213.0283361 | 500 | .7500000 + 3 | 7196.4497420 | 600 | .8333333 + 4 | 8483.1383558 | 700 | .9166667 + 4 | 9802.2106350 | 800 | 1.0000000 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range unbounded preceding ); -- mvd 1->4; + cn | vn | vn | to_char +----+----+----+------------------- + 1 | 10 | 10 | .0000000 + 1 | 20 | 20 | .0000000 + 1 | 30 | 30 | .0000000 + 1 | 50 | 50 | .0000000 + 1 | 30 | 30 | .0000000 + 2 | 40 | 40 | .4879500 + 2 | 50 | 50 | .4879500 + 3 | 40 | 40 | .9189366 + 3 | 30 | 30 | .9189366 + 3 | 30 | 30 | .9189366 + 4 | 40 | 40 | 1.1934163 + 4 | 40 | 40 | 1.1934163 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn+ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty/ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range unbounded preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc), +win4 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.vn desc); -- mvd 1->3; 5->4; 7,5,8,9->6; 7,5,8,9->10; 1,7,5->11; + cn | prc | to_char | to_char | vn | to_char | dt | qty | pn | to_char | to_char +----+------+-------------------+-------------------+----+-------------------+------------+------+-----+-------------------+------------------- + 1 | 0 | 15.1657509 | 1.0000000 | 50 | .0000000 | 1401-06-01 | 1 | 400 | 1.0000000 | 1.0000000 + 2 | 0 | 910.0673706 | 1.0000000 | 50 | .0000000 | 1401-06-01 | 1 | 400 | 1.0000000 | 1.0000000 + 4 | 1 | 694.3042899 | 2.0000000 | 40 | .0000000 | 1401-06-01 | 1 | 800 | .0000000 | 2.0000000 + 2 | 2400 | 910.0673706 | 2.0000000 | 40 | .0000000 | 1401-01-01 | 1100 | 100 | 550.0000000 | 1.0000000 + 3 | 0 | 760.9768941 | 2.0000000 | 40 | .0000000 | 1401-04-01 | 1 | 200 | .0000000 | 1.0000000 + 4 | 1 | 694.3042899 | 2.0000000 | 40 | .0000000 | 1401-06-01 | 1 | 700 | .0000000 | 1.0000000 + 3 | 5 | 760.9768941 | 3.0000000 | 30 | .0000000 | 1401-06-01 | 12 | 600 | 4.0000000 | 1.0000000 + 1 | 0 | 15.1657509 | 3.0000000 | 30 | .0000000 | 1401-05-02 | 1 | 300 | 1.0000000 | 1.0000000 + 1 | 5 | 15.1657509 | 3.0000000 | 30 | .0000000 | 1401-06-01 | 12 | 500 | 12.0000000 | 2.0000000 + 3 | 5 | 760.9768941 | 3.0000000 | 30 | .0000000 | 1401-06-01 | 12 | 500 | 12.0000000 | 2.0000000 + 1 | 0 | 15.1657509 | 4.0000000 | 20 | .0000000 | 1401-05-01 | 1 | 100 | 1.0000000 | 1.0000000 + 1 | 0 | 15.1657509 | 5.0000000 | 10 | .0000000 | 1401-03-01 | 1 | 200 | 1.0000000 | 1.0000000 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range 2 preceding ); -- mvd 3->6; + cn | vn | pn | qty | pn | to_char +----+----+-----+------+-----+------------------- + 4 | 40 | 800 | 1 | 800 | .0000000 + 4 | 40 | 700 | 1 | 700 | .0000000 + 3 | 30 | 600 | 12 | 600 | .0000000 + 1 | 30 | 500 | 12 | 500 | .0000000 + 3 | 30 | 500 | 12 | 500 | .0000000 + 1 | 50 | 400 | 1 | 400 | .0000000 + 2 | 50 | 400 | 1 | 400 | .0000000 + 1 | 30 | 300 | 1 | 300 | .0000000 + 1 | 10 | 200 | 1 | 200 | .0000000 + 3 | 40 | 200 | 1 | 200 | .0000000 + 1 | 20 | 100 | 1 | 100 | 777.1103525 + 2 | 40 | 100 | 1100 | 100 | 777.1103525 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range 3 preceding ); -- mvd 3->6; 3->7; + pn | dt | cn | pn | vn | to_char | to_char +-----+------------+----+-----+----+-------------------+------------------- + 800 | 1401-06-01 | 4 | 800 | 40 | .0000000 | 40.0000000 + 700 | 1401-06-01 | 4 | 700 | 40 | .0000000 | 40.0000000 + 500 | 1401-06-01 | 3 | 500 | 30 | 5.8566202 | 30.0000000 + 600 | 1401-06-01 | 3 | 600 | 30 | 5.8566202 | 30.0000000 + 200 | 1401-04-01 | 3 | 200 | 40 | 5.8566202 | 30.0000000 + 400 | 1401-06-01 | 2 | 400 | 50 | 6.7046537 | 30.0000000 + 100 | 1401-01-01 | 2 | 100 | 40 | 6.7046537 | 30.0000000 + 300 | 1401-05-02 | 1 | 300 | 30 | 12.1005885 | 10.0000000 + 500 | 1401-06-01 | 1 | 500 | 30 | 12.1005885 | 10.0000000 + 400 | 1401-06-01 | 1 | 400 | 50 | 12.1005885 | 10.0000000 + 200 | 1401-03-01 | 1 | 200 | 10 | 12.1005885 | 10.0000000 + 100 | 1401-05-01 | 1 | 100 | 20 | 12.1005885 | 10.0000000 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range current row ); -- mvd 2->5; + dt | pn | qty | prc | to_char +------------+-----+------+------+------------------- + 1401-05-01 | 100 | 1 | 0 | 1697.7633816 + 1401-01-01 | 100 | 1100 | 2400 | 1697.7633816 + 1401-03-01 | 200 | 1 | 0 | 1.4142136 + 1401-04-01 | 200 | 1 | 0 | 1.4142136 + 1401-05-02 | 300 | 1 | 0 | .0000000 + 1401-06-01 | 400 | 1 | 0 | .7071068 + 1401-06-01 | 400 | 1 | 0 | .7071068 + 1401-06-01 | 500 | 12 | 5 | 1.4142136 + 1401-06-01 | 500 | 12 | 5 | 1.4142136 + 1401-06-01 | 600 | 12 | 5 | .0000000 + 1401-06-01 | 700 | 1 | 1 | .0000000 + 1401-06-01 | 800 | 1 | 1 | .0000000 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range current row ); -- mvd 7->6; 7->8; + qty | prc | qty | qty | pn | to_char | cn | to_char +------+------+------+------+-----+-------------------+----+------------------- + 1 | 0 | 1 | 1 | 200 | 158.1138830 | 1 | 10.0000000 + 1 | 0 | 1 | 1 | 100 | 158.1138830 | 1 | 10.0000000 + 1 | 0 | 1 | 1 | 300 | 158.1138830 | 1 | 10.0000000 + 12 | 5 | 12 | 12 | 500 | 158.1138830 | 1 | 10.0000000 + 1 | 0 | 1 | 1 | 400 | 158.1138830 | 1 | 10.0000000 + 1100 | 2400 | 1100 | 1100 | 100 | 212.1320344 | 2 | 40.0000000 + 1 | 0 | 1 | 1 | 400 | 212.1320344 | 2 | 40.0000000 + 12 | 5 | 12 | 12 | 600 | 208.1665999 | 3 | 30.0000000 + 1 | 0 | 1 | 1 | 200 | 208.1665999 | 3 | 30.0000000 + 12 | 5 | 12 | 12 | 500 | 208.1665999 | 3 | 30.0000000 + 1 | 1 | 1 | 1 | 700 | 70.7106781 | 4 | 40.0000000 + 1 | 1 | 1 | 1 | 800 | 70.7106781 | 4 | 40.0000000 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and 2 preceding ); -- mvd 1->6; + vn | qty | pn | cn | cn | to_char +----+------+-----+----+----+------------------- + 50 | 1 | 400 | 2 | 2 | .0000000 + 50 | 1 | 400 | 1 | 1 | .0000000 + 40 | 1100 | 100 | 2 | 2 | .0000000 + 40 | 1 | 700 | 4 | 4 | .0000000 + 40 | 1 | 200 | 3 | 3 | .0000000 + 40 | 1 | 800 | 4 | 4 | .0000000 + 30 | 12 | 600 | 3 | 3 | 273.2520204 + 30 | 1 | 300 | 1 | 1 | 273.2520204 + 30 | 12 | 500 | 1 | 1 | 273.2520204 + 30 | 12 | 500 | 3 | 3 | 273.2520204 + 20 | 1 | 100 | 1 | 1 | 217.3067468 + 10 | 1 | 200 | 1 | 1 | 231.5952582 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.cn order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.cn) preceding ), +win2 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.cn order by ow_sale.vn desc); -- mvd 2->6; 3,8,2,4->7; 3,8,2,4->9; 3,8,2,4->10; + dt | vn | prc | pn | vn | to_char | to_char | cn | to_char | to_char +------------+----+------+-----+----+-------------------+-------------------+----+-------------------+------------------- + 1401-06-01 | 50 | 0 | 400 | 50 | .0000000 | .0000000 | 2 | .0000000 | 1.0000000 + 1401-06-01 | 50 | 0 | 400 | 50 | .0000000 | .0000000 | 1 | .0000000 | 1.0000000 + 1401-06-01 | 40 | 1 | 700 | 40 | .0000000 | .0000000 | 4 | .0000000 | 1.0000000 + 1401-01-01 | 40 | 2400 | 100 | 40 | .0000000 | .0000000 | 2 | .0000000 | 1.0000000 + 1401-04-01 | 40 | 0 | 200 | 40 | .0000000 | .0000000 | 3 | .0000000 | 1.0000000 + 1401-06-01 | 40 | 1 | 800 | 40 | .0000000 | .0000000 | 4 | .0000000 | 1.0000000 + 1401-06-01 | 30 | 5 | 600 | 30 | 2351509.9897726 | .0000000 | 3 | .0000000 | 1.0000000 + 1401-05-02 | 30 | 0 | 300 | 30 | 2351509.9897726 | .0000000 | 1 | .0000000 | 1.0000000 + 1401-06-01 | 30 | 5 | 500 | 30 | 2351509.9897726 | .0000000 | 1 | .0000000 | 1.0000000 + 1401-06-01 | 30 | 5 | 500 | 30 | 2351509.9897726 | .0000000 | 3 | .0000000 | 1.0000000 + 1401-05-01 | 20 | 0 | 100 | 20 | 1821469.2267899 | .0000000 | 1 | .0000000 | 1.0000000 + 1401-03-01 | 10 | 0 | 200 | 10 | 1736703.0231675 | .0000000 | 1 | .0000000 | 1.0000000 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and current row ); -- mvd 3->2; + cn | to_char | pn +----+-------------------+----- + 1 | 14.1421356 | 100 + 2 | 14.1421356 | 100 + 1 | 15.0000000 | 200 + 3 | 15.0000000 | 200 + 1 | 13.0384048 | 300 + 1 | 15.1185789 | 400 + 2 | 15.1185789 | 400 + 1 | 13.2287566 | 500 + 3 | 13.2287566 | 500 + 3 | 12.5166556 | 600 + 4 | 12.0604538 | 700 + 4 | 11.6450015 | 800 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and 2 following ); -- mvd 1->2; + cn | to_char +----+------------------- + 1 | 176.9895163 + 1 | 176.9895163 + 1 | 176.9895163 + 1 | 176.9895163 + 1 | 176.9895163 + 2 | 230.4177366 + 2 | 230.4177366 + 3 | 230.4177366 + 3 | 230.4177366 + 3 | 230.4177366 + 4 | 230.4177366 + 4 | 230.4177366 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.vn+ow_sale.pn) following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc); -- mvd 6->5; 6->7; 6,9->8; + qty | pn | qty | pn | to_char | cn | to_char | to_char | vn +------+-----+------+-----+-------------------+----+-------------------+-------------------+---- + 1 | 800 | 1 | 800 | 318.4360932 | 4 | .9090909 | .0000000 | 40 + 1 | 700 | 1 | 700 | 318.4360932 | 4 | .9090909 | .0000000 | 40 + 12 | 500 | 12 | 500 | 318.4360932 | 3 | .6363636 | .0000000 | 30 + 1 | 200 | 1 | 200 | 318.4360932 | 3 | .6363636 | .0000000 | 40 + 12 | 600 | 12 | 600 | 318.4360932 | 3 | .6363636 | .0000000 | 30 + 1 | 400 | 1 | 400 | 318.4360932 | 2 | .4545455 | .0000000 | 50 + 1100 | 100 | 1100 | 100 | 318.4360932 | 2 | .4545455 | .0000000 | 40 + 1 | 200 | 1 | 200 | 318.4360932 | 1 | .0000000 | .0000000 | 10 + 1 | 400 | 1 | 400 | 318.4360932 | 1 | .0000000 | .0000000 | 50 + 12 | 500 | 12 | 500 | 318.4360932 | 1 | .0000000 | .0000000 | 30 + 1 | 300 | 1 | 300 | 318.4360932 | 1 | .0000000 | .0000000 | 30 + 1 | 100 | 1 | 100 | 318.4360932 | 1 | .0000000 | .0000000 | 20 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and unbounded following ); -- mvd 3->7; + vn | cn | pn | cn | cn | prc | to_char +----+----+-----+----+----+------+------------------- + 20 | 1 | 100 | 1 | 1 | 0 | 692.3775190 + 40 | 2 | 100 | 2 | 2 | 2400 | 692.3775190 + 10 | 1 | 200 | 1 | 1 | 0 | 692.3775190 + 40 | 3 | 200 | 3 | 3 | 0 | 692.3775190 + 30 | 1 | 300 | 1 | 1 | 0 | 692.3775190 + 50 | 1 | 400 | 1 | 1 | 0 | 692.3775190 + 50 | 2 | 400 | 2 | 2 | 0 | 692.3775190 + 30 | 1 | 500 | 1 | 1 | 5 | 692.3775190 + 30 | 3 | 500 | 3 | 3 | 5 | 692.3775190 + 30 | 3 | 600 | 3 | 3 | 5 | 692.3775190 + 40 | 4 | 700 | 4 | 4 | 1 | 692.3775190 + 40 | 4 | 800 | 4 | 4 | 1 | 692.3775190 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn+ow_sale.pn) as int),cast (floor(ow_sale.pn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.pn asc); -- mvd 2->4; 6,7->5; 6,7->8; + prc | cn | qty | to_char | to_char | dt | pn | to_char +------+----+------+-------------------+-------------------+------------+-----+------------------- + 1 | 4 | 1 | 1.1934163 | .0000000 | 1401-06-01 | 700 | 4.0000000 + 1 | 4 | 1 | 1.1934163 | .0000000 | 1401-06-01 | 800 | 4.0000000 + 5 | 3 | 12 | 1.1934163 | .0000000 | 1401-06-01 | 500 | 3.0000000 + 5 | 3 | 12 | 1.1934163 | .0000000 | 1401-06-01 | 600 | 3.0000000 + 0 | 3 | 1 | 1.1934163 | .0000000 | 1401-04-01 | 200 | 3.0000000 + 2400 | 2 | 1100 | 1.1934163 | .0000000 | 1401-01-01 | 100 | 2.0000000 + 0 | 2 | 1 | 1.1934163 | .0000000 | 1401-06-01 | 400 | 2.0000000 + 5 | 1 | 12 | 1.1934163 | .0000000 | 1401-06-01 | 500 | 2.0000000 + 0 | 1 | 1 | 1.1934163 | .0000000 | 1401-05-02 | 300 | 1.0000000 + 0 | 1 | 1 | 1.1934163 | .0000000 | 1401-06-01 | 400 | 1.0000000 + 0 | 1 | 1 | 1.1934163 | .0000000 | 1401-03-01 | 200 | 1.0000000 + 0 | 1 | 1 | 1.1934163 | .0000000 | 1401-05-01 | 100 | 1.0000000 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 4 preceding and 3 preceding ); -- mvd 4->7; + dt | vn | vn | cn | qty | dt | to_char +------------+----+----+----+------+------------+------------------- + 1401-03-01 | 10 | 10 | 1 | 1 | 1401-03-01 | .0000000 + 1401-05-01 | 20 | 20 | 1 | 1 | 1401-05-01 | .0000000 + 1401-05-02 | 30 | 30 | 1 | 1 | 1401-05-02 | .0000000 + 1401-06-01 | 30 | 30 | 1 | 12 | 1401-06-01 | .0000000 + 1401-06-01 | 50 | 50 | 1 | 1 | 1401-06-01 | .0000000 + 1401-01-01 | 40 | 40 | 2 | 1100 | 1401-01-01 | .0000000 + 1401-06-01 | 50 | 50 | 2 | 1 | 1401-06-01 | .0000000 + 1401-06-01 | 30 | 30 | 3 | 12 | 1401-06-01 | .0000000 + 1401-04-01 | 40 | 40 | 3 | 1 | 1401-04-01 | .0000000 + 1401-06-01 | 30 | 30 | 3 | 12 | 1401-06-01 | .0000000 + 1401-06-01 | 40 | 40 | 4 | 1 | 1401-06-01 | 4.9193496 + 1401-06-01 | 40 | 40 | 4 | 1 | 1401-06-01 | 4.9193496 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn+ow_sale.qty)) OVER(order by ow_sale.cn asc range between 1 preceding and 3 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 1 preceding and 3 preceding ), +win2 as (order by ow_sale.pn asc); -- mvd 4->5; 4->6; 1->7; 4->8; 1->9; 4->10; + pn | prc | pn | cn | to_char | to_char | to_char | to_char | to_char | to_char +-----+------+-----+----+-------------------+-------------------+-------------------+-------------------+-------------------+------------------- + 100 | 2400 | 100 | 2 | .0000000 | .0000000 | 1.0000000 | .0000000 | .0000000 | .0000000 + 100 | 0 | 100 | 1 | .0000000 | .0000000 | 2.0000000 | .0000000 | .0000000 | .0000000 + 200 | 0 | 200 | 1 | .0000000 | .0000000 | 3.0000000 | .0000000 | .1818182 | .0000000 + 200 | 0 | 200 | 3 | .0000000 | .0000000 | 4.0000000 | .0000000 | .1818182 | .0000000 + 300 | 0 | 300 | 1 | .0000000 | .0000000 | 5.0000000 | .0000000 | .3636364 | .0000000 + 400 | 0 | 400 | 2 | .0000000 | .0000000 | 6.0000000 | .0000000 | .4545455 | .0000000 + 400 | 0 | 400 | 1 | .0000000 | .0000000 | 7.0000000 | .0000000 | .4545455 | .0000000 + 500 | 5 | 500 | 1 | .0000000 | .0000000 | 8.0000000 | .0000000 | .6363636 | .0000000 + 500 | 5 | 500 | 3 | .0000000 | .0000000 | 9.0000000 | .0000000 | .6363636 | .0000000 + 600 | 5 | 600 | 3 | .0000000 | .0000000 | 10.0000000 | .0000000 | .8181818 | .0000000 + 700 | 1 | 700 | 4 | .0000000 | .0000000 | 11.0000000 | .0000000 | .9090909 | .0000000 + 800 | 1 | 800 | 4 | .0000000 | .0000000 | 12.0000000 | .0000000 | 1.0000000 | .0000000 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 1 preceding and current row ); -- mvd 1->5; + pn | dt | cn | vn | to_char +-----+------------+----+----+------------------- + 800 | 1401-06-01 | 4 | 40 | .0000000 + 700 | 1401-06-01 | 4 | 40 | .0000000 + 600 | 1401-06-01 | 3 | 30 | .0000000 + 500 | 1401-06-01 | 1 | 30 | .0000000 + 500 | 1401-06-01 | 3 | 30 | .0000000 + 400 | 1401-06-01 | 1 | 50 | .7071068 + 400 | 1401-06-01 | 2 | 50 | .7071068 + 300 | 1401-05-02 | 1 | 30 | .0000000 + 200 | 1401-03-01 | 1 | 10 | 1.4142136 + 200 | 1401-04-01 | 3 | 40 | 1.4142136 + 100 | 1401-05-01 | 1 | 20 | .7071068 + 100 | 1401-01-01 | 2 | 40 | .7071068 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 3 preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc); -- mvd 3->6; 1->7; 1->8; 10,3,11,1,2->9; 1->12; + vn | pn | cn | vn | cn | to_char | to_char | to_char | to_char | dt | qty | to_char +----+-----+----+----+----+-------------------+-------------------+-------------------+-------------------+------------+------+------------------- + 40 | 100 | 2 | 40 | 2 | 414.7102833 | .0000000 | 1.0000000 | .0000000 | 1401-01-01 | 1100 | 1.0000000 + 10 | 200 | 1 | 10 | 1 | 4.9193496 | .0000000 | 2.0000000 | 1.0000000 | 1401-03-01 | 1 | 2.0000000 + 40 | 200 | 3 | 40 | 3 | 346.4136256 | .0000000 | 3.0000000 | 3.0000000 | 1401-04-01 | 1 | 3.0000000 + 20 | 100 | 1 | 20 | 1 | 4.9193496 | 200.0000000 | 4.0000000 | 1.0000000 | 1401-05-01 | 1 | 4.0000000 + 30 | 300 | 1 | 30 | 1 | 4.9193496 | 200.0000000 | 5.0000000 | 1.0000000 | 1401-05-02 | 1 | 5.0000000 + 50 | 400 | 1 | 50 | 1 | 4.9193496 | 100.0000000 | 6.0000000 | 1.0000000 | 1401-06-01 | 1 | 6.0000000 + 50 | 400 | 2 | 50 | 2 | 414.7102833 | 100.0000000 | 7.0000000 | 2.0000000 | 1401-06-01 | 1 | 7.0000000 + 30 | 500 | 1 | 30 | 1 | 4.9193496 | .0000000 | 8.0000000 | .0000000 | 1401-06-01 | 12 | 8.0000000 + 30 | 500 | 3 | 30 | 3 | 346.4136256 | .0000000 | 9.0000000 | .0000000 | 1401-06-01 | 12 | 9.0000000 + 30 | 600 | 3 | 30 | 3 | 346.4136256 | .0000000 | 10.0000000 | .0000000 | 1401-06-01 | 12 | 10.0000000 + 40 | 700 | 4 | 40 | 4 | 316.4258734 | 400.0000000 | 11.0000000 | .0000000 | 1401-06-01 | 1 | 11.0000000 + 40 | 800 | 4 | 40 | 4 | 316.4258734 | 400.0000000 | 12.0000000 | 4.0000000 | 1401-06-01 | 1 | 12.0000000 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.qty) preceding and 2 following ); -- mvd 5->4; + pn | qty | cn | to_char | vn +-----+------+----+-------------------+---- + 200 | 1 | 1 | .0000000 | 10 + 100 | 1 | 1 | .0000000 | 20 + 600 | 12 | 3 | 6.0249481 | 30 + 300 | 1 | 1 | 5.5000000 | 30 + 500 | 12 | 1 | 6.0249481 | 30 + 500 | 12 | 3 | 6.0249481 | 30 + 100 | 1100 | 2 | 346.4136256 | 40 + 700 | 1 | 4 | 549.5000000 | 40 + 200 | 1 | 3 | 549.5000000 | 40 + 800 | 1 | 4 | 549.5000000 | 40 + 400 | 1 | 2 | .0000000 | 50 + 400 | 1 | 1 | .0000000 | 50 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc*ow_sale.cn)) OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.qty)) OVER(order by ow_sale.cn desc range between 0 preceding and floor(ow_sale.qty) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 0 preceding and floor(ow_sale.qty) following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc), +win4 as (order by ow_sale.vn desc); -- mvd 1->7; 1->8; 1->9; 1->10; 2->11; 1->12; + cn | vn | pn | vn | qty | dt | to_char | to_char | to_char | to_char | to_char | to_char +----+----+-----+----+------+------------+-------------------+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | 50 | 400 | 50 | 1 | 1401-06-01 | 2.2360680 | 1.0000000 | .0000000 | 5.0000000 | 1.0000000 | 24.0000000 + 2 | 50 | 400 | 50 | 1 | 1401-06-01 | 906.8016794 | 2.0000000 | .0000000 | .0000000 | 1.0000000 | 2200.0000000 + 3 | 40 | 200 | 40 | 1 | 1401-04-01 | 1072.1975098 | 3.0000000 | .0000000 | 5.0000000 | 2.0000000 | 2200.0000000 + 4 | 40 | 800 | 40 | 1 | 1401-06-01 | 2.4083189 | 4.0000000 | .0000000 | .0000000 | 2.0000000 | 24.0000000 + 4 | 40 | 700 | 40 | 1 | 1401-06-01 | 2.4083189 | 4.0000000 | .0000000 | 1.0000000 | 2.0000000 | 24.0000000 + 2 | 40 | 100 | 40 | 1100 | 1401-01-01 | 906.8016794 | 2.0000000 | .0000000 | .0000000 | 2.0000000 | 2200.0000000 + 1 | 30 | 500 | 30 | 12 | 1401-06-01 | 2.2360680 | 1.0000000 | .0000000 | .0000000 | 3.0000000 | 24.0000000 + 3 | 30 | 600 | 30 | 12 | 1401-06-01 | 758.4232547 | 3.0000000 | .0000000 | .0000000 | 3.0000000 | 2200.0000000 + 1 | 30 | 300 | 30 | 1 | 1401-05-02 | 2.2360680 | 1.0000000 | .0000000 | .0000000 | 3.0000000 | 24.0000000 + 3 | 30 | 500 | 30 | 12 | 1401-06-01 | 758.4232547 | 3.0000000 | .0000000 | .0000000 | 3.0000000 | 2200.0000000 + 1 | 20 | 100 | 20 | 1 | 1401-05-01 | 2.2360680 | 1.0000000 | .0000000 | .0000000 | 4.0000000 | 24.0000000 + 1 | 10 | 200 | 10 | 1 | 1401-03-01 | 2.2360680 | 1.0000000 | .0000000 | .0000000 | 5.0000000 | 24.0000000 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 4 preceding and unbounded following ); -- mvd 4->3; + dt | pn | to_char | vn +------------+-----+-------------------+---- + 1401-03-01 | 200 | 306.1162386 | 10 + 1401-05-01 | 100 | 305.9854423 | 20 + 1401-06-01 | 600 | 286.9807582 | 30 + 1401-05-02 | 300 | 286.9807582 | 30 + 1401-06-01 | 500 | 286.9807582 | 30 + 1401-06-01 | 500 | 286.9807582 | 30 + 1401-01-01 | 100 | 359.7686757 | 40 + 1401-06-01 | 700 | 359.7686757 | 40 + 1401-04-01 | 200 | 359.7686757 | 40 + 1401-06-01 | 800 | 359.7686757 | 40 + 1401-06-01 | 400 | .0000000 | 50 + 1401-06-01 | 400 | .0000000 | 50 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.qty+ow_sale.cn) preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 6->5; 2->7; 2->8; + dt | cn | qty | pn | to_char | vn | to_char | to_char +------------+----+------+-----+-------------------+----+-------------------+------------------- + 1401-01-01 | 2 | 1100 | 100 | 692.3775190 | 40 | .0000000 | .0000000 + 1401-03-01 | 1 | 1 | 200 | .0000000 | 10 | 40.0000000 | 1.0000000 + 1401-04-01 | 3 | 1 | 200 | 758.3526078 | 40 | 10.0000000 | 1.0000000 + 1401-05-01 | 1 | 1 | 100 | .0000000 | 20 | 40.0000000 | 1.0000000 + 1401-05-02 | 1 | 1 | 300 | 2.7386128 | 30 | 20.0000000 | 1.0000000 + 1401-06-01 | 1 | 1 | 400 | 692.3775190 | 50 | 30.0000000 | 1.0000000 + 1401-06-01 | 2 | 1 | 400 | 692.3775190 | 50 | 50.0000000 | 1.0000000 + 1401-06-01 | 1 | 12 | 500 | 758.3526078 | 30 | .0000000 | 1.0000000 + 1401-06-01 | 3 | 12 | 500 | 758.3526078 | 30 | .0000000 | 1.0000000 + 1401-06-01 | 3 | 12 | 600 | 758.3526078 | 30 | .0000000 | 1.0000000 + 1401-06-01 | 4 | 1 | 700 | 758.3526078 | 40 | 30.0000000 | 12.0000000 + 1401-06-01 | 4 | 1 | 800 | 758.3526078 | 40 | 40.0000000 | 1.0000000 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and current row ); -- mvd 1->6; + vn | qty | prc | pn | cn | to_char +----+------+------+-----+----+------------------- + 10 | 1 | 0 | 200 | 1 | .0000000 + 20 | 1 | 0 | 100 | 1 | .0000000 + 30 | 12 | 5 | 600 | 3 | .0000000 + 30 | 1 | 0 | 300 | 1 | .0000000 + 30 | 12 | 5 | 500 | 1 | .0000000 + 30 | 12 | 5 | 500 | 3 | .0000000 + 40 | 1100 | 2400 | 100 | 2 | 30.0000000 + 40 | 1 | 1 | 700 | 4 | 30.0000000 + 40 | 1 | 1 | 800 | 4 | 30.0000000 + 40 | 1 | 0 | 200 | 3 | 30.0000000 + 50 | 1 | 0 | 400 | 2 | .0000000 + 50 | 1 | 0 | 400 | 1 | .0000000 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and 1 following ); -- mvd 5->4; + prc | prc | cn | to_char | vn +------+------+----+-------------------+---- + 0 | 0 | 2 | .0000000 | 50 + 0 | 0 | 1 | .0000000 | 50 + 2400 | 2400 | 2 | 351.1884584 | 40 + 1 | 1 | 4 | 351.1884584 | 40 + 0 | 0 | 3 | 351.1884584 | 40 + 1 | 1 | 4 | 351.1884584 | 40 + 5 | 5 | 3 | 125.8305739 | 30 + 0 | 0 | 1 | 125.8305739 | 30 + 5 | 5 | 1 | 125.8305739 | 30 + 5 | 5 | 3 | 125.8305739 | 30 + 0 | 0 | 1 | .0000000 | 20 + 0 | 0 | 1 | .0000000 | 10 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.vn desc range between current row and floor(ow_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.vn)) OVER(order by ow_sale.vn desc range between current row and floor(ow_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and floor(ow_sale.cn) following ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.pn asc); -- mvd 3->2; 3->4; 3->5; 3,7->6; + cn | to_char | vn | to_char | to_char | to_char | pn +----+-------------------+----+-------------------+-------------------+-------------------+----- + 2 | .0000000 | 50 | 50.0000000 | -50.0000000 | 1.0000000 | 400 + 1 | .0000000 | 50 | 50.0000000 | -50.0000000 | 1.0000000 | 400 + 4 | 549.5000000 | 40 | 40.0000000 | -40.0000000 | 1.0000000 | 800 + 2 | 549.5000000 | 40 | 40.0000000 | -40.0000000 | 1.0000000 | 100 + 3 | 549.5000000 | 40 | 40.0000000 | -40.0000000 | 1.0000000 | 200 + 4 | 549.5000000 | 40 | 40.0000000 | -40.0000000 | 1.0000000 | 700 + 3 | 5.5000000 | 30 | 30.0000000 | -30.0000000 | 1.0000000 | 600 + 1 | 5.5000000 | 30 | 30.0000000 | -30.0000000 | 1.0000000 | 300 + 1 | 5.5000000 | 30 | 30.0000000 | -30.0000000 | 1.0000000 | 500 + 3 | 5.5000000 | 30 | 30.0000000 | -30.0000000 | 1.0000000 | 500 + 1 | .0000000 | 20 | 20.0000000 | -20.0000000 | 1.0000000 | 100 + 1 | .0000000 | 10 | 10.0000000 | -10.0000000 | 1.0000000 | 200 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and unbounded following ); -- mvd 8->7; + qty | cn | cn | prc | pn | cn | to_char | vn +------+----+----+------+-----+----+-------------------+---- + 1 | 1 | 1 | 0 | 200 | 1 | 17.3205081 | 10 + 1 | 1 | 1 | 0 | 100 | 1 | 18.0906807 | 20 + 12 | 3 | 3 | 5 | 600 | 3 | 18.9736660 | 30 + 1 | 1 | 1 | 0 | 300 | 1 | 18.9736660 | 30 + 12 | 1 | 1 | 5 | 500 | 1 | 18.9736660 | 30 + 12 | 3 | 3 | 5 | 500 | 3 | 18.9736660 | 30 + 1100 | 2 | 2 | 2400 | 100 | 2 | 24.4948974 | 40 + 1 | 4 | 4 | 1 | 700 | 4 | 24.4948974 | 40 + 1 | 3 | 3 | 0 | 200 | 3 | 24.4948974 | 40 + 1 | 4 | 4 | 1 | 800 | 4 | 24.4948974 | 40 + 1 | 2 | 2 | 0 | 400 | 2 | .0000000 | 50 + 1 | 1 | 1 | 0 | 400 | 1 | .0000000 | 50 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.cn)) OVER(order by ow_sale.cn desc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.vn asc), +win3 as (order by ow_sale.cn asc); -- mvd 6->5; 6->7; 6->8; 10,11,4->9; 6->12; + qty | qty | prc | pn | to_char | cn | to_char | to_char | to_char | dt | vn | to_char +------+------+------+-----+-------------------+----+-------------------+-------------------+-------------------+------------+----+------------------- + 1 | 1 | 1 | 800 | 69042.2197359 | 4 | 12.0000000 | 12.0000000 | 1.0000000 | 1401-06-01 | 40 | .9090909 + 1 | 1 | 1 | 700 | 69042.2197359 | 4 | 12.0000000 | 12.0000000 | 1.0000000 | 1401-06-01 | 40 | .9090909 + 1 | 1 | 0 | 200 | 75624.1437050 | 3 | 10.0000000 | 10.0000000 | 1.0000000 | 1401-04-01 | 40 | .6363636 + 12 | 12 | 5 | 600 | 75624.1437050 | 3 | 10.0000000 | 10.0000000 | 1.0000000 | 1401-06-01 | 30 | .6363636 + 12 | 12 | 5 | 500 | 75624.1437050 | 3 | 10.0000000 | 10.0000000 | 1.0000000 | 1401-06-01 | 30 | .6363636 + 1 | 1 | 0 | 400 | 90558.7812260 | 2 | 7.0000000 | 7.0000000 | 1.0000000 | 1401-06-01 | 50 | .4545455 + 1100 | 1100 | 2400 | 100 | 90558.7812260 | 2 | 7.0000000 | 7.0000000 | 1.0000000 | 1401-01-01 | 40 | .4545455 + 1 | 1 | 0 | 200 | 1118.0339887 | 1 | 5.0000000 | 5.0000000 | 1.0000000 | 1401-03-01 | 10 | .0000000 + 1 | 1 | 0 | 300 | 1118.0339887 | 1 | 5.0000000 | 5.0000000 | 1.0000000 | 1401-05-02 | 30 | .0000000 + 12 | 12 | 5 | 500 | 1118.0339887 | 1 | 5.0000000 | 5.0000000 | 1.0000000 | 1401-06-01 | 30 | .0000000 + 1 | 1 | 0 | 400 | 1118.0339887 | 1 | 5.0000000 | 5.0000000 | 1.0000000 | 1401-06-01 | 50 | .0000000 + 1 | 1 | 0 | 100 | 1118.0339887 | 1 | 5.0000000 | 5.0000000 | 1.0000000 | 1401-05-01 | 20 | .0000000 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.vn) following and 2 following ); -- mvd 3->2; + cn | to_char | pn +----+-------------------+----- + 1 | .0000000 | 100 + 2 | .0000000 | 100 + 1 | .0000000 | 200 + 3 | .0000000 | 200 + 1 | .0000000 | 300 + 1 | .0000000 | 400 + 2 | .0000000 | 400 + 1 | .0000000 | 500 + 3 | .0000000 | 500 + 3 | .0000000 | 600 + 4 | .0000000 | 700 + 4 | .0000000 | 800 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.pn) following and unbounded following ); -- mvd 5->4; + dt | pn | qty | to_char | vn +------------+-----+------+-------------------+---- + 1401-03-01 | 200 | 1 | .0000000 | 10 + 1401-05-01 | 100 | 1 | .0000000 | 20 + 1401-06-01 | 600 | 12 | .0000000 | 30 + 1401-05-02 | 300 | 1 | .0000000 | 30 + 1401-06-01 | 500 | 12 | .0000000 | 30 + 1401-06-01 | 500 | 12 | .0000000 | 30 + 1401-01-01 | 100 | 1100 | .0000000 | 40 + 1401-06-01 | 700 | 1 | .0000000 | 40 + 1401-06-01 | 800 | 1 | .0000000 | 40 + 1401-04-01 | 200 | 1 | .0000000 | 40 + 1401-06-01 | 400 | 1 | .0000000 | 50 + 1401-06-01 | 400 | 1 | .0000000 | 50 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.prc) following and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.qty order by ow_sale.vn asc); -- mvd 1->4; 6,7,2,1->5; + pn | qty | qty | to_char | to_char | prc | vn +-----+------+------+-------------------+-------------------+------+---- + 100 | 1 | 1 | 1.1934163 | 1.0000000 | 0 | 20 + 100 | 1100 | 1100 | .0000000 | 1.0000000 | 2400 | 40 + 200 | 1 | 1 | 1.2516656 | 1.0000000 | 0 | 10 + 200 | 1 | 1 | 1.2516656 | 2.0000000 | 0 | 40 + 300 | 1 | 1 | 1.3024702 | 1.0000000 | 0 | 30 + 400 | 1 | 1 | 1.2724180 | 1.0000000 | 0 | 50 + 400 | 1 | 1 | 1.2724180 | 2.0000000 | 0 | 50 + 500 | 12 | 12 | .5773503 | 1.0000000 | 5 | 30 + 500 | 12 | 12 | .5773503 | 2.0000000 | 5 | 30 + 600 | 12 | 12 | .0000000 | 1.0000000 | 5 | 30 + 700 | 1 | 1 | .0000000 | 1.0000000 | 1 | 40 + 800 | 1 | 1 | .0000000 | 1.0000000 | 1 | 40 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc,ow_sale.cn asc rows unbounded preceding ); -- mvd 6,2->5; + vn | pn | qty | vn | to_char | cn +----+-----+------+----+-------------------+---- + 40 | 100 | 1100 | 40 | .0000000 | 2 + 10 | 200 | 1 | 10 | 777.8174593 | 1 + 40 | 200 | 1 | 40 | 634.5087339 | 3 + 20 | 100 | 1 | 20 | 549.6674752 | 1 + 30 | 300 | 1 | 30 | 491.7121109 | 1 + 50 | 400 | 1 | 50 | 448.9105330 | 1 + 50 | 400 | 1 | 50 | 415.5726399 | 2 + 30 | 500 | 12 | 30 | 388.2196543 | 1 + 30 | 500 | 12 | 30 | 365.5765234 | 3 + 30 | 600 | 12 | 30 | 346.4909811 | 3 + 40 | 700 | 1 | 40 | 330.4095805 | 4 + 40 | 800 | 1 | 40 | 316.3770765 | 4 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty+ow_sale.vn) as int),cast (floor(ow_sale.prc/ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows unbounded preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows unbounded preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 5->4; 5->6; 8->7; 8->9; 5->10; 5->11; + cn | qty | cn | to_char | pn | to_char | to_char | vn | to_char | to_char | to_char +----+------+----+-------------------+-----+-------------------+-------------------+----+-------------------+-------------------+------------------- + 4 | 1 | 4 | 158.1781696 | 800 | 1.0000000 | 41.0000000 | 40 | 12.0000000 | 1.0000000 | 10.0000000 + 4 | 1 | 4 | 165.1446749 | 700 | 2.0000000 | 42.0000000 | 40 | 11.0000000 | 2.0000000 | 10.0000000 + 3 | 12 | 3 | 173.1192267 | 600 | 3.0000000 | 42.0000000 | 30 | 10.0000000 | 3.0000000 | 10.0000000 + 1 | 12 | 1 | 193.6873401 | 500 | 4.0000000 | 42.0000000 | 30 | 8.0000000 | 5.0000000 | 10.0000000 + 3 | 12 | 3 | 182.5390369 | 500 | 5.0000000 | 42.0000000 | 30 | 9.0000000 | 5.0000000 | 10.0000000 + 2 | 1 | 2 | 207.6290190 | 400 | 6.0000000 | 51.0000000 | 50 | 7.0000000 | 7.0000000 | 10.0000000 + 1 | 1 | 1 | 224.2103179 | 400 | 7.0000000 | 51.0000000 | 50 | 6.0000000 | 7.0000000 | 10.0000000 + 1 | 1 | 1 | 245.6324490 | 300 | 8.0000000 | 31.0000000 | 30 | 5.0000000 | 8.0000000 | 10.0000000 + 3 | 1 | 3 | 317.2543669 | 200 | 9.0000000 | 41.0000000 | 40 | 3.0000000 | 10.0000000 | 10.0000000 + 1 | 1 | 1 | 388.2016229 | 200 | 10.0000000 | 11.0000000 | 10 | 2.0000000 | 10.0000000 | 10.0000000 + 2 | 1100 | 2 | .0000000 | 100 | 11.0000000 | .0000000 | 40 | 1.0000000 | 12.0000000 | 40.0000000 + 1 | 1 | 1 | 274.6670712 | 100 | 12.0000000 | 21.0000000 | 20 | 4.0000000 | 12.0000000 | 10.0000000 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc+ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc,ow_sale.vn asc rows floor(ow_sale.qty) preceding ), +win2 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc), +win4 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc); -- mvd 1,3->2; 1,5,3,6->4; 1,8,6->7; 1,5,3,6->9; 11,1,8,6->10; + cn | to_char | vn | to_char | dt | pn | to_char | qty | to_char | to_char | prc +----+-------------------+----+-------------------+------------+-----+-------------------+------+-------------------+-------------------+------ + 2 | .0000000 | 40 | .0000000 | 1401-01-01 | 100 | .0000000 | 1100 | 1.0000000 | .0000000 | 2400 + 1 | 70.0035713 | 10 | .0000000 | 1401-03-01 | 200 | .0000000 | 1 | 1.0000000 | .0000000 | 0 + 3 | 1.4142136 | 40 | .0000000 | 1401-04-01 | 200 | .0000000 | 1 | 1.0000000 | .0000000 | 0 + 1 | 72.1248917 | 20 | .0000000 | 1401-05-01 | 100 | .0000000 | 1 | 1.0000000 | .0000000 | 0 + 1 | 141.4213562 | 30 | .0000000 | 1401-05-02 | 300 | .0000000 | 1 | 1.0000000 | .0000000 | 0 + 1 | 70.7106781 | 50 | .0000000 | 1401-06-01 | 400 | .0000000 | 1 | 1.0000000 | .0000000 | 0 + 2 | .7071068 | 50 | .0000000 | 1401-06-01 | 400 | .0000000 | 1 | 1.0000000 | .0000000 | 0 + 1 | 148.6145542 | 30 | .0000000 | 1401-06-01 | 500 | .0000000 | 12 | 1.0000000 | .0000000 | 5 + 3 | 158.1952907 | 30 | .0000000 | 1401-06-01 | 500 | .0000000 | 12 | 1.0000000 | .0000000 | 5 + 3 | 176.9895163 | 30 | .0000000 | 1401-06-01 | 600 | .0000000 | 12 | 2.0000000 | .0000000 | 5 + 4 | 71.4177849 | 40 | .0000000 | 1401-06-01 | 700 | .0000000 | 1 | 1.0000000 | .0000000 | 1 + 4 | 70.7106781 | 40 | .0000000 | 1401-06-01 | 800 | .0000000 | 1 | 2.0000000 | .0000000 | 1 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows current row ); -- mvd 3,6->5; + pn | qty | cn | cn | to_char | vn +-----+------+----+----+-------------------+---- + 100 | 1100 | 2 | 2 | .0000000 | 40 + 200 | 1 | 1 | 1 | .0000000 | 10 + 200 | 1 | 3 | 3 | .0000000 | 40 + 100 | 1 | 1 | 1 | .0000000 | 20 + 300 | 1 | 1 | 1 | .0000000 | 30 + 400 | 1 | 1 | 1 | .0000000 | 50 + 400 | 1 | 2 | 2 | .0000000 | 50 + 500 | 12 | 1 | 1 | .0000000 | 30 + 500 | 12 | 3 | 3 | .0000000 | 30 + 600 | 12 | 3 | 3 | .0000000 | 30 + 700 | 1 | 4 | 4 | .0000000 | 40 + 800 | 1 | 4 | 4 | .0000000 | 40 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows current row ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.vn desc); -- mvd 8->7; 1,10,4,11,8->9; + cn | prc | cn | vn | vn | vn | to_char | pn | to_char | dt | qty +----+------+----+----+----+----+-------------------+-----+-------------------+------------+------ + 2 | 2400 | 2 | 40 | 40 | 40 | .0000000 | 100 | .0000000 | 1401-01-01 | 1100 + 1 | 0 | 1 | 10 | 10 | 10 | .0000000 | 200 | .0000000 | 1401-03-01 | 1 + 3 | 0 | 3 | 40 | 40 | 40 | .0000000 | 200 | .0000000 | 1401-04-01 | 1 + 1 | 0 | 1 | 20 | 20 | 20 | .0000000 | 100 | .0000000 | 1401-05-01 | 1 + 1 | 0 | 1 | 30 | 30 | 30 | .0000000 | 300 | .0000000 | 1401-05-02 | 1 + 1 | 0 | 1 | 50 | 50 | 50 | .0000000 | 400 | .0000000 | 1401-06-01 | 1 + 2 | 0 | 2 | 50 | 50 | 50 | .0000000 | 400 | .0000000 | 1401-06-01 | 1 + 1 | 5 | 1 | 30 | 30 | 30 | .0000000 | 500 | .0000000 | 1401-06-01 | 12 + 3 | 5 | 3 | 30 | 30 | 30 | .0000000 | 500 | .0000000 | 1401-06-01 | 12 + 3 | 5 | 3 | 30 | 30 | 30 | .0000000 | 600 | .0000000 | 1401-06-01 | 12 + 4 | 1 | 4 | 40 | 40 | 40 | .0000000 | 700 | .0000000 | 1401-06-01 | 1 + 4 | 1 | 4 | 40 | 40 | 40 | .0000000 | 800 | .0000000 | 1401-06-01 | 1 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and 5 preceding ); -- mvd 5->7; + prc | vn | qty | qty | pn | cn | to_char +------+----+------+------+-----+----+------------------- + 2400 | 40 | 1100 | 1100 | 100 | 2 | .0000000 + 0 | 10 | 1 | 1 | 200 | 1 | .0000000 + 0 | 40 | 1 | 1 | 200 | 3 | .0000000 + 0 | 20 | 1 | 1 | 100 | 1 | .0000000 + 0 | 30 | 1 | 1 | 300 | 1 | .0000000 + 0 | 50 | 1 | 1 | 400 | 1 | .0000000 + 0 | 50 | 1 | 1 | 400 | 2 | 1554.9278118 + 5 | 30 | 12 | 12 | 500 | 1 | 1269.0162857 + 5 | 30 | 12 | 12 | 500 | 3 | 1099.1670710 + 5 | 30 | 12 | 12 | 600 | 3 | 983.1994711 + 1 | 40 | 1 | 1 | 700 | 4 | 897.5750479 + 1 | 40 | 1 | 1 | 800 | 4 | 830.9552449 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 3->2; + dt | to_char | cn +------------+-------------------+---- + 1401-01-01 | .0000000 | 2 + 1401-03-01 | 777.1103525 | 1 + 1401-04-01 | 634.5079458 | 3 + 1401-05-01 | 549.5000000 | 1 + 1401-05-02 | 491.4877415 | 1 + 1401-06-01 | 448.6648712 | 1 + 1401-06-01 | 415.3829558 | 2 + 1401-06-01 | 388.0186851 | 1 + 1401-06-01 | 365.4477087 | 3 + 1401-06-01 | 346.4136256 | 3 + 1401-06-01 | 330.4044354 | 4 + 1401-06-01 | 316.4258734 | 4 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 2->5; 2->6; + pn | cn | pn | dt | to_char | to_char +-----+----+-----+------------+-------------------+------------------- + 100 | 2 | 100 | 1401-01-01 | .0000000 | .0000000 + 200 | 1 | 200 | 1401-03-01 | .7071068 | 3.0000000 + 200 | 3 | 200 | 1401-04-01 | 1.0000000 | 1.0000000 + 100 | 1 | 100 | 1401-05-01 | .9574271 | 1.0000000 + 300 | 1 | 300 | 1401-05-02 | .8944272 | 1.0000000 + 400 | 1 | 400 | 1401-06-01 | .8366600 | 2.0000000 + 400 | 2 | 400 | 1401-06-01 | .7867958 | 6.0000000 + 500 | 1 | 500 | 1401-06-01 | .7559289 | .0000000 + 500 | 3 | 500 | 1401-06-01 | .8660254 | .0000000 + 600 | 3 | 600 | 1401-06-01 | .9189366 | .0000000 + 700 | 4 | 700 | 1401-06-01 | 1.0954451 | 5.0000000 + 800 | 4 | 800 | 1401-06-01 | 1.1934163 | .0000000 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.vn asc rows between unbounded preceding and 3 following ); -- mvd 6,3->5; + cn | dt | pn | cn | to_char | vn +----+------------+-----+----+-------------------+---- + 2 | 1401-01-01 | 100 | 2 | 549.5000000 | 40 + 1 | 1401-03-01 | 200 | 1 | 491.4877415 | 10 + 3 | 1401-04-01 | 200 | 3 | 448.6648712 | 40 + 1 | 1401-05-01 | 100 | 1 | 415.3829558 | 20 + 1 | 1401-05-02 | 300 | 1 | 388.0186851 | 30 + 1 | 1401-06-01 | 400 | 1 | 365.4477087 | 50 + 2 | 1401-06-01 | 400 | 2 | 346.4136256 | 50 + 1 | 1401-06-01 | 500 | 1 | 330.4044354 | 30 + 3 | 1401-06-01 | 500 | 3 | 316.4258734 | 30 + 3 | 1401-06-01 | 600 | 3 | 316.4258734 | 30 + 4 | 1401-06-01 | 700 | 4 | 316.4258734 | 40 + 4 | 1401-06-01 | 800 | 4 | 316.4258734 | 40 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn/ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn*ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.qty/ow_sale.qty) following ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.dt order by ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc), +win4 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc); -- mvd 1->7; 1->8; 6,2->9; 1,2->10; 12,1,2->11; + cn | pn | qty | qty | qty | dt | to_char | to_char | to_char | to_char | to_char | prc +----+-----+------+------+------+------------+-------------------+-------------------+-------------------+-------------------+-------------------+------ + 2 | 100 | 1100 | 1100 | 1100 | 1401-01-01 | 21.2132034 | 40.0000000 | .0000000 | .0000000 | .0000000 | 2400 + 1 | 200 | 1 | 1 | 1 | 1401-03-01 | 17.3205081 | 40.0000000 | .0000000 | .0000000 | .0000000 | 0 + 3 | 200 | 1 | 1 | 1 | 1401-04-01 | 15.0000000 | 40.0000000 | .0000000 | .0000000 | .0000000 | 0 + 1 | 100 | 1 | 1 | 1 | 1401-05-01 | 13.0384048 | 40.0000000 | .0000000 | .0000000 | .0000000 | 0 + 1 | 300 | 1 | 1 | 1 | 1401-05-02 | 14.7196014 | 50.0000000 | .0000000 | .0000000 | .0000000 | 0 + 1 | 400 | 1 | 1 | 1 | 1401-06-01 | 15.1185789 | 50.0000000 | .0000000 | .0000000 | .0000000 | 0 + 2 | 400 | 1 | 1 | 1 | 1401-06-01 | 14.0788595 | 50.0000000 | .0000000 | .0000000 | .0000000 | 0 + 1 | 500 | 12 | 12 | 12 | 1401-06-01 | 13.2287566 | 50.0000000 | .0000000 | .0000000 | .0000000 | 5 + 3 | 500 | 12 | 12 | 12 | 1401-06-01 | 12.5166556 | 50.0000000 | .0000000 | .0000000 | .0000000 | 5 + 3 | 600 | 12 | 12 | 12 | 1401-06-01 | 12.0604538 | 50.0000000 | .0000000 | .0000000 | .0000000 | 5 + 4 | 700 | 1 | 1 | 1 | 1401-06-01 | 11.6450015 | 50.0000000 | .0000000 | .0000000 | .0000000 | 1 + 4 | 800 | 1 | 1 | 1 | 1401-06-01 | 11.6450015 | 50.0000000 | .0000000 | .0000000 | .0000000 | 1 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and unbounded following ); -- mvd 4->3; + prc | qty | to_char | cn +------+------+-------------------+---- + 2400 | 1100 | 692.3775190 | 2 + 0 | 1 | 692.3775190 | 1 + 0 | 1 | 692.3775190 | 3 + 0 | 1 | 692.3775190 | 1 + 0 | 1 | 692.3775190 | 1 + 0 | 1 | 692.3775190 | 1 + 0 | 1 | 692.3775190 | 2 + 5 | 12 | 692.3775190 | 1 + 5 | 12 | 692.3775190 | 3 + 5 | 12 | 692.3775190 | 3 + 1 | 1 | 692.3775190 | 4 + 1 | 1 | 692.3775190 | 4 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn/ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,1->2; 3->4; + pn | to_char | cn | to_char +-----+-------------------+----+------------------- + 100 | 229.6241989 | 2 | .0000000 + 200 | 229.6241989 | 1 | .0000000 + 200 | 229.6241989 | 3 | .0000000 + 100 | 229.6241989 | 1 | .0000000 + 300 | 229.6241989 | 1 | .0000000 + 400 | 229.6241989 | 1 | .0000000 + 400 | 229.6241989 | 2 | .0000000 + 500 | 229.6241989 | 1 | .0000000 + 500 | 229.6241989 | 3 | .0000000 + 600 | 229.6241989 | 3 | .0000000 + 700 | 229.6241989 | 4 | .0000000 + 800 | 229.6241989 | 4 | .0000000 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows between floor(ow_sale.vn) preceding and 0 preceding ); -- mvd 4,2->3; + qty | pn | to_char | vn +------+-----+-------------------+---- + 1100 | 100 | .0000000 | 40 + 1 | 200 | 12.7279221 | 10 + 1 | 200 | 9.6436508 | 40 + 1 | 100 | 8.1240384 | 20 + 1 | 300 | 7.0922493 | 30 + 1 | 400 | 6.3456022 | 50 + 1 | 400 | 5.7940857 | 50 + 12 | 500 | 6.0178306 | 30 + 12 | 500 | 6.0621778 | 30 + 12 | 600 | 6.5319726 | 30 + 1 | 700 | 6.4554417 | 40 + 1 | 800 | 6.6212468 | 40 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows between 4 preceding and 2 preceding ); -- mvd 1->7; 1->8; + pn | cn | cn | vn | prc | qty | to_char | to_char +-----+----+----+----+------+------+-------------------+------------------- + 100 | 2 | 2 | 40 | 2400 | 1100 | .0000000 | .0000000 + 200 | 1 | 1 | 10 | 0 | 1 | .0000000 | .0000000 + 200 | 3 | 3 | 40 | 0 | 1 | .0000000 | 1.0000000 + 100 | 1 | 1 | 20 | 0 | 1 | 855598.4981289 | 2.0000000 + 300 | 1 | 1 | 30 | 0 | 1 | 698593.2483692 | 3.0000000 + 400 | 1 | 1 | 50 | 0 | 1 | .0000000 | 3.0000000 + 400 | 2 | 2 | 50 | 0 | 1 | .0000000 | 3.0000000 + 500 | 1 | 1 | 30 | 5 | 12 | .0000000 | 3.0000000 + 500 | 3 | 3 | 30 | 5 | 12 | .0000000 | 3.0000000 + 600 | 3 | 3 | 30 | 5 | 12 | 82.5610885 | 3.0000000 + 700 | 4 | 4 | 40 | 1 | 1 | 82.5610885 | 3.0000000 + 800 | 4 | 4 | 40 | 1 | 1 | .0000000 | 3.0000000 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.prc,ow_sale.cn order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn+ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between 4 preceding and current row ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.prc,ow_sale.cn order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 4->5; 7,2,3->6; 7,2,3->8; 7,2,3->9; 2->10; + vn | cn | dt | pn | to_char | to_char | prc | to_char | to_char | to_char +----+----+------------+-----+-------------------+-------------------+------+-------------------+-------------------+------------------- + 40 | 2 | 1401-01-01 | 100 | .0000000 | 1.0000000 | 2400 | 1.0000000 | 2400.0000000 | .0000000 + 10 | 1 | 1401-03-01 | 200 | 1697.0562748 | 1.0000000 | 0 | 1.0000000 | .0000000 | 11.0000000 + 40 | 3 | 1401-04-01 | 200 | 1385.6406461 | 1.0000000 | 0 | 1.0000000 | .0000000 | 43.0000000 + 20 | 1 | 1401-05-01 | 100 | 1200.0000000 | 1.0000000 | 0 | 1.0000000 | .0000000 | 21.0000000 + 30 | 1 | 1401-05-02 | 300 | 1073.3126292 | 1.0000000 | 0 | 1.0000000 | .0000000 | 31.0000000 + 50 | 1 | 1401-06-01 | 400 | .0000000 | 1.0000000 | 0 | 1.0000000 | .0000000 | 51.0000000 + 50 | 2 | 1401-06-01 | 400 | .0000000 | 1.0000000 | 0 | 1.0000000 | .0000000 | 52.0000000 + 30 | 1 | 1401-06-01 | 500 | 2.2360680 | 1.0000000 | 5 | 1.0000000 | 5.0000000 | 43.0000000 + 30 | 3 | 1401-06-01 | 500 | 2.7386128 | 1.0000000 | 5 | 1.0000000 | 5.0000000 | 21.0000000 + 30 | 3 | 1401-06-01 | 600 | 2.7386128 | 1.0000000 | 5 | 1.0000000 | 5.0000000 | 31.0000000 + 40 | 4 | 1401-06-01 | 700 | 2.4899799 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 33.0000000 + 40 | 4 | 1401-06-01 | 800 | 2.1908902 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 44.0000000 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.cn desc rows between 1 preceding and floor(ow_sale.vn+ow_sale.cn) following ); -- mvd 4,1->3; + pn | dt | to_char | cn +-----+------------+-------------------+---- + 100 | 1401-01-01 | 31285.8703222 | 2 + 200 | 1401-03-01 | 31285.8703222 | 1 + 200 | 1401-04-01 | 2833.0516794 | 3 + 100 | 1401-05-01 | 2917.1713849 | 1 + 300 | 1401-05-02 | 3002.0826105 | 1 + 400 | 1401-06-01 | 3070.0162866 | 1 + 400 | 1401-06-01 | 3142.5649215 | 2 + 500 | 1401-06-01 | 3191.4991253 | 1 + 500 | 1401-06-01 | 3133.3687941 | 3 + 600 | 1401-06-01 | 3413.0875563 | 3 + 700 | 1401-06-01 | 3724.2448899 | 4 + 800 | 1401-06-01 | 70.7106781 | 4 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc+ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc,ow_sale.vn asc rows between floor(ow_sale.vn+ow_sale.qty) preceding and 4 following ), +win2 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn asc); -- mvd 1,3->2; 5,6->4; + vn | to_char | pn | to_char | cn | qty +----+-------------------+-----+-------------------+----+------ + 40 | .0000000 | 100 | .0000000 | 2 | 1100 + 10 | .0000000 | 200 | .0000000 | 1 | 1 + 40 | .0000000 | 200 | .0000000 | 3 | 1 + 20 | .0000000 | 100 | .0000000 | 1 | 1 + 30 | .0000000 | 300 | .0000000 | 1 | 1 + 50 | .0000000 | 400 | .0000000 | 1 | 1 + 50 | .0000000 | 400 | .0000000 | 2 | 1 + 30 | .0000000 | 500 | .0000000 | 1 | 12 + 30 | .0000000 | 500 | .0000000 | 3 | 12 + 30 | .0000000 | 600 | .0000000 | 3 | 12 + 40 | .0000000 | 700 | .0000000 | 4 | 1 + 40 | .0000000 | 800 | .0000000 | 4 | 1 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.pn) preceding and unbounded following ); -- mvd 2->5; + prc | cn | cn | cn | to_char +------+----+----+----+------------------- + 2400 | 2 | 2 | 2 | 11.6450015 + 0 | 1 | 1 | 1 | 11.6450015 + 0 | 3 | 3 | 3 | 11.6450015 + 0 | 1 | 1 | 1 | 11.6450015 + 0 | 1 | 1 | 1 | 11.6450015 + 0 | 1 | 1 | 1 | 11.6450015 + 0 | 2 | 2 | 2 | 11.6450015 + 5 | 1 | 1 | 1 | 11.6450015 + 5 | 3 | 3 | 3 | 11.6450015 + 5 | 3 | 3 | 3 | 11.6450015 + 1 | 4 | 4 | 4 | 11.6450015 + 1 | 4 | 4 | 4 | 11.6450015 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.vn+ow_sale.qty) preceding and unbounded following ); -- mvd 5->4; 5->6; 5->7; + prc | qty | qty | to_char | vn | to_char | to_char +------+------+------+-------------------+----+-------------------+------------------- + 2400 | 1100 | 1100 | 316.4258734 | 40 | 1.0000000 | 12.0000000 + 0 | 1 | 1 | 316.4258734 | 10 | 1.0000000 | 12.0000000 + 0 | 1 | 1 | 316.4258734 | 40 | 1.0000000 | 12.0000000 + 0 | 1 | 1 | 316.4258734 | 20 | 1.0000000 | 12.0000000 + 0 | 1 | 1 | 316.4258734 | 30 | 1.0000000 | 12.0000000 + 0 | 1 | 1 | 316.4258734 | 50 | 1.0000000 | 12.0000000 + 0 | 1 | 1 | 316.4258734 | 50 | 1.0000000 | 12.0000000 + 5 | 12 | 12 | 316.4258734 | 30 | 1.0000000 | 12.0000000 + 5 | 12 | 12 | 316.4258734 | 30 | 1.0000000 | 12.0000000 + 5 | 12 | 12 | 316.4258734 | 30 | 1.0000000 | 12.0000000 + 1 | 1 | 1 | 316.4258734 | 40 | 1.0000000 | 12.0000000 + 1 | 1 | 1 | 316.4258734 | 40 | 1.0000000 | 12.0000000 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and current row ); -- mvd 2->4; + vn | pn | pn | to_char +----+-----+-----+------------------- + 40 | 100 | 100 | .0000000 + 10 | 200 | 200 | .0000000 + 40 | 200 | 200 | .0000000 + 20 | 100 | 100 | .0000000 + 30 | 300 | 300 | .0000000 + 50 | 400 | 400 | .0000000 + 50 | 400 | 400 | .0000000 + 30 | 500 | 500 | .0000000 + 30 | 500 | 500 | .0000000 + 30 | 600 | 600 | .0000000 + 40 | 700 | 700 | .0000000 + 40 | 800 | 800 | .0000000 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between current row and current row ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.vn desc), +win4 as (order by ow_sale.pn desc); -- mvd 4->3; 1->5; 1->6; 1->7; 4->8; 1->9; + pn | prc | to_char | vn | to_char | to_char | to_char | to_char | to_char +-----+------+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 800 | 1 | .0000000 | 40 | .0833333 | 1.0000000 | .0833333 | 2.0000000 | 1.0000000 + 700 | 1 | .0000000 | 40 | .1666667 | 2.0000000 | .1666667 | 2.0000000 | 2.0000000 + 600 | 5 | .0000000 | 30 | .2500000 | 3.0000000 | .2500000 | 3.0000000 | 3.0000000 + 500 | 5 | .0000000 | 30 | .4166667 | 4.0000000 | .4166667 | 3.0000000 | 4.0000000 + 500 | 5 | .0000000 | 30 | .4166667 | 4.0000000 | .4166667 | 3.0000000 | 4.0000000 + 400 | 0 | .0000000 | 50 | .5833333 | 5.0000000 | .5833333 | 1.0000000 | 5.0000000 + 400 | 0 | .0000000 | 50 | .5833333 | 5.0000000 | .5833333 | 1.0000000 | 5.0000000 + 300 | 0 | .0000000 | 30 | .6666667 | 6.0000000 | .6666667 | 3.0000000 | 6.0000000 + 200 | 0 | .0000000 | 40 | .8333333 | 7.0000000 | .8333333 | 2.0000000 | 7.0000000 + 200 | 0 | .0000000 | 10 | .8333333 | 7.0000000 | .8333333 | 5.0000000 | 7.0000000 + 100 | 2400 | .0000000 | 40 | 1.0000000 | 8.0000000 | 1.0000000 | 2.0000000 | 8.0000000 + 100 | 0 | .0000000 | 20 | 1.0000000 | 8.0000000 | 1.0000000 | 4.0000000 | 8.0000000 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn asc rows between current row and 1 following ); -- mvd 3,1->2; + pn | to_char | cn +-----+-------------------+---- + 100 | .7071068 | 2 + 200 | 1.4142136 | 1 + 200 | 1.4142136 | 3 + 100 | .0000000 | 1 + 300 | .0000000 | 1 + 400 | .7071068 | 1 + 400 | .7071068 | 2 + 500 | 1.4142136 | 1 + 500 | .0000000 | 3 + 600 | .7071068 | 3 + 700 | .0000000 | 4 + 800 | .0000000 | 4 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between current row and floor(ow_sale.pn) following ), +win2 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.pn order by ow_sale.pn asc); -- mvd 4->3; 1,6,2,4->5; + cn | vn | to_char | pn | to_char | qty +----+----+-------------------+-----+-------------------+------ + 2 | 40 | 229.6241989 | 100 | 1.0000000 | 1100 + 1 | 10 | 219.5035721 | 200 | 1.0000000 | 1 + 3 | 40 | 217.3067468 | 200 | 1.0000000 | 1 + 1 | 20 | 210.8185107 | 100 | 1.0000000 | 1 + 1 | 30 | 166.9045921 | 300 | 1.0000000 | 1 + 1 | 50 | 151.1857892 | 400 | 1.0000000 | 1 + 2 | 50 | 147.1960144 | 400 | 1.0000000 | 1 + 1 | 30 | 130.3840481 | 500 | 1.0000000 | 12 + 3 | 30 | 129.0994449 | 500 | 1.0000000 | 12 + 3 | 30 | 100.0000000 | 600 | 1.0000000 | 12 + 4 | 40 | 70.7106781 | 700 | 1.0000000 | 1 + 4 | 40 | .0000000 | 800 | 1.0000000 | 1 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and unbounded following ); -- mvd 4->5; + dt | cn | cn | pn | to_char +------------+----+----+-----+------------------- + 1401-01-01 | 2 | 2 | 100 | 1059.4452522 + 1401-03-01 | 1 | 1 | 200 | 1076.5264005 + 1401-04-01 | 3 | 3 | 200 | 1089.3423092 + 1401-05-01 | 1 | 1 | 100 | 1133.5784049 + 1401-05-02 | 1 | 1 | 300 | 1117.9541263 + 1401-06-01 | 1 | 1 | 400 | 1105.6133829 + 1401-06-01 | 2 | 2 | 400 | 1070.8252269 + 1401-06-01 | 1 | 1 | 500 | 1073.7783756 + 1401-06-01 | 3 | 3 | 500 | 805.7087977 + 1401-06-01 | 3 | 3 | 600 | 721.1102551 + 1401-06-01 | 4 | 4 | 700 | 282.8427125 + 1401-06-01 | 4 | 4 | 800 | .0000000 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 6,1->5; 6,1->7; 6,1->8; 1->9; 1->10; + pn | pn | pn | dt | to_char | cn | to_char | to_char | to_char | to_char +-----+-----+-----+------------+-------------------+----+-------------------+-------------------+-------------------+------------------- + 800 | 800 | 800 | 1401-06-01 | .0000000 | 4 | 4.0000000 | 1.0000000 | .0000000 | .0000000 + 700 | 700 | 700 | 1401-06-01 | .0000000 | 4 | 4.0000000 | 2.0000000 | .0909091 | .0000000 + 600 | 600 | 600 | 1401-06-01 | .0000000 | 3 | 4.0000000 | 3.0000000 | .1818182 | .0000000 + 500 | 500 | 500 | 1401-06-01 | .0000000 | 1 | 4.0000000 | 5.0000000 | .2727273 | .0000000 + 500 | 500 | 500 | 1401-06-01 | .0000000 | 3 | 4.0000000 | 4.0000000 | .2727273 | .0000000 + 400 | 400 | 400 | 1401-06-01 | .0000000 | 2 | 4.0000000 | 6.0000000 | .4545455 | .0000000 + 400 | 400 | 400 | 1401-06-01 | .0000000 | 1 | 4.0000000 | 7.0000000 | .4545455 | .0000000 + 300 | 300 | 300 | 1401-05-02 | .0000000 | 1 | 4.0000000 | 8.0000000 | .6363636 | .0000000 + 200 | 200 | 200 | 1401-04-01 | .0000000 | 3 | 4.0000000 | 10.0000000 | .7272727 | .0000000 + 200 | 200 | 200 | 1401-03-01 | .0000000 | 1 | 4.0000000 | 11.0000000 | .7272727 | .0000000 + 100 | 100 | 100 | 1401-01-01 | .0000000 | 2 | 4.0000000 | 12.0000000 | .9090909 | .0000000 + 100 | 100 | 100 | 1401-05-01 | .0000000 | 1 | 4.0000000 | 9.0000000 | .9090909 | .0000000 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.vn) following and 0 following ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.vn desc); -- mvd 5->4; 5->6; 5->7; 9->8; + qty | prc | qty | to_char | cn | to_char | to_char | to_char | vn +------+------+------+-------------------+----+-------------------+-------------------+-------------------+---- + 1 | 0 | 1 | .0000000 | 1 | .0000000 | 1.0000000 | 1.0000000 | 50 + 1 | 0 | 1 | .0000000 | 2 | .4545455 | 6.0000000 | 2.0000000 | 50 + 1 | 1 | 1 | .0000000 | 4 | .9090909 | 11.0000000 | 3.0000000 | 40 + 1 | 0 | 1 | .0000000 | 3 | .6363636 | 8.0000000 | 4.0000000 | 40 + 1 | 1 | 1 | .0000000 | 4 | .9090909 | 11.0000000 | 5.0000000 | 40 + 1100 | 2400 | 1100 | .0000000 | 2 | .4545455 | 6.0000000 | 6.0000000 | 40 + 12 | 5 | 12 | .0000000 | 1 | .0000000 | 1.0000000 | 7.0000000 | 30 + 1 | 0 | 1 | .0000000 | 1 | .0000000 | 1.0000000 | 8.0000000 | 30 + 12 | 5 | 12 | .0000000 | 3 | .6363636 | 8.0000000 | 9.0000000 | 30 + 12 | 5 | 12 | .0000000 | 3 | .6363636 | 8.0000000 | 10.0000000 | 30 + 1 | 0 | 1 | .0000000 | 1 | .0000000 | 1.0000000 | 11.0000000 | 20 + 1 | 0 | 1 | .0000000 | 1 | .0000000 | 1.0000000 | 12.0000000 | 10 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows between floor(ow_sale.prc) following and unbounded following ); -- mvd 8,1->7; + vn | qty | qty | pn | vn | qty | to_char | cn +----+------+------+-----+----+------+-------------------+---- + 40 | 1100 | 1100 | 100 | 40 | 1100 | .0000000 | 2 + 10 | 1 | 1 | 200 | 10 | 1 | 219.5035721 | 1 + 40 | 1 | 1 | 200 | 40 | 1 | 217.3067468 | 3 + 20 | 1 | 1 | 100 | 20 | 1 | 210.8185107 | 1 + 30 | 1 | 1 | 300 | 30 | 1 | 166.9045921 | 1 + 50 | 1 | 1 | 400 | 50 | 1 | 151.1857892 | 1 + 50 | 1 | 1 | 400 | 50 | 1 | 147.1960144 | 2 + 30 | 12 | 12 | 500 | 30 | 12 | .0000000 | 1 + 30 | 12 | 12 | 500 | 30 | 12 | .0000000 | 3 + 30 | 12 | 12 | 600 | 30 | 12 | .0000000 | 3 + 40 | 1 | 1 | 700 | 40 | 1 | .0000000 | 4 + 40 | 1 | 1 | 800 | 40 | 1 | .0000000 | 4 +(12 rows) + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.dt,ow_sale.prc,ow_sale.qty,ow_sale.dt order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty/ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.cn desc rows between 3 following and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.qty,ow_sale.dt order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 3->2; 5,3,6,1->4; 5,3,6,1->7; 5,3,6,1->8; 10->9; + qty | to_char | cn | to_char | prc | dt | to_char | to_char | to_char | pn +------+-------------------+----+-------------------+------+------------+-------------------+-------------------+-------------------+----- + 1100 | 3002.0826105 | 2 | 1.0000000 | 2400 | 1401-01-01 | 2402.0000000 | 1.0000000 | .0000000 | 100 + 1 | 3070.0162866 | 1 | 1.0000000 | 0 | 1401-03-01 | 1.0000000 | 1.0000000 | 40.0000000 | 200 + 1 | 3142.5649215 | 3 | 1.0000000 | 0 | 1401-04-01 | 3.0000000 | 1.0000000 | 40.0000000 | 200 + 1 | 3191.4991253 | 1 | 1.0000000 | 0 | 1401-05-01 | 1.0000000 | 1.0000000 | 30.0000000 | 100 + 1 | 3133.3687941 | 1 | 1.0000000 | 0 | 1401-05-02 | 1.0000000 | 1.0000000 | 50.0000000 | 300 + 1 | 3413.0875563 | 1 | 1.0000000 | 0 | 1401-06-01 | 1.0000000 | .5000000 | 50.0000000 | 400 + 1 | 3724.2448899 | 2 | 2.0000000 | 0 | 1401-06-01 | 2.0000000 | 1.0000000 | 50.0000000 | 400 + 12 | 70.7106781 | 1 | 1.0000000 | 5 | 1401-06-01 | 6.0000000 | .3333333 | .0000000 | 500 + 12 | .0000000 | 3 | 2.0000000 | 5 | 1401-06-01 | 8.0000000 | 1.0000000 | .0000000 | 500 + 12 | .0000000 | 3 | 2.0000000 | 5 | 1401-06-01 | 8.0000000 | 1.0000000 | .0000000 | 600 + 1 | .0000000 | 4 | 1.0000000 | 1 | 1401-06-01 | 5.0000000 | 1.0000000 | 40.0000000 | 700 + 1 | .0000000 | 4 | 1.0000000 | 1 | 1401-06-01 | 5.0000000 | 1.0000000 | 40.0000000 | 800 +(12 rows) + +-- STDDEV_SAMP() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.cn order by ow_sale.pn desc,ow_sale.pn desc); -- mvd 1,3,4->2; + cn | to_char | vn | pn +----+-------------------+----+----- + 1 | .0000000 | 20 | 100 + 1 | .0000000 | 10 | 200 + 3 | .0000000 | 40 | 200 + 2 | .0000000 | 50 | 400 + 3 | .0000000 | 30 | 600 + 4 | .0000000 | 40 | 800 + 2 | .0000000 | 40 | 100 + 1 | .0000000 | 30 | 300 + 1 | .0000000 | 50 | 400 + 1 | .0000000 | 30 | 500 + 3 | .0000000 | 30 | 500 + 4 | .0000000 | 40 | 700 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.pn order by ow_sale.vn desc range unbounded preceding ); -- mvd 1,8,9,3->7; + prc | cn | pn | prc | prc | pn | to_char | dt | vn +------+----+-----+------+------+-----+-------------------+------------+---- + 0 | 1 | 200 | 0 | 0 | 200 | .0000000 | 1401-03-01 | 10 + 5 | 3 | 600 | 5 | 5 | 600 | .0000000 | 1401-06-01 | 30 + 1 | 4 | 800 | 1 | 1 | 800 | .0000000 | 1401-06-01 | 40 + 2400 | 2 | 100 | 2400 | 2400 | 100 | .0000000 | 1401-01-01 | 40 + 0 | 1 | 100 | 0 | 0 | 100 | .0000000 | 1401-05-01 | 20 + 0 | 3 | 200 | 0 | 0 | 200 | .0000000 | 1401-04-01 | 40 + 0 | 1 | 300 | 0 | 0 | 300 | .0000000 | 1401-05-02 | 30 + 0 | 1 | 400 | 0 | 0 | 400 | .7071068 | 1401-06-01 | 50 + 0 | 2 | 400 | 0 | 0 | 400 | .7071068 | 1401-06-01 | 50 + 5 | 3 | 500 | 5 | 5 | 500 | 5.6568542 | 1401-06-01 | 30 + 5 | 1 | 500 | 5 | 5 | 500 | 5.6568542 | 1401-06-01 | 30 + 1 | 4 | 700 | 1 | 1 | 700 | .0000000 | 1401-06-01 | 40 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.dt order by ow_sale.vn asc range floor(ow_sale.vn/ow_sale.cn) preceding ); -- mvd 4,5,6,1->3; + qty | qty | to_char | prc | dt | vn +------+------+-------------------+------+------------+---- + 1 | 1 | .0000000 | 0 | 1401-04-01 | 40 + 1 | 1 | .0000000 | 0 | 1401-05-01 | 20 + 1 | 1 | 70.7106781 | 1 | 1401-06-01 | 40 + 1 | 1 | 70.7106781 | 1 | 1401-06-01 | 40 + 12 | 12 | 58.3209511 | 5 | 1401-06-01 | 30 + 12 | 12 | 58.3209511 | 5 | 1401-06-01 | 30 + 12 | 12 | 58.3209511 | 5 | 1401-06-01 | 30 + 1 | 1 | .0000000 | 0 | 1401-03-01 | 10 + 1 | 1 | .0000000 | 0 | 1401-05-02 | 30 + 1 | 1 | .7071068 | 0 | 1401-06-01 | 50 + 1 | 1 | .7071068 | 0 | 1401-06-01 | 50 + 1100 | 1100 | .0000000 | 2400 | 1401-01-01 | 40 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.qty,ow_sale.dt order by ow_sale.cn asc range floor(ow_sale.pn) preceding ), +win2 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.pn asc); -- mvd 6,7,1,2->5; 7,9->8; + qty | vn | prc | vn | to_char | cn | dt | to_char | pn +------+----+------+----+-------------------+----+------------+-------------------+----- + 1 | 20 | 0 | 20 | .0000000 | 1 | 1401-05-01 | .0000000 | 100 + 12 | 30 | 5 | 30 | .0000000 | 1 | 1401-06-01 | .0000000 | 500 + 12 | 30 | 5 | 30 | 11.5470054 | 3 | 1401-06-01 | .0000000 | 600 + 12 | 30 | 5 | 30 | 11.5470054 | 3 | 1401-06-01 | .0000000 | 500 + 1 | 40 | 0 | 40 | .0000000 | 3 | 1401-04-01 | .0000000 | 200 + 1 | 10 | 0 | 10 | .0000000 | 1 | 1401-03-01 | .0000000 | 200 + 1 | 30 | 0 | 30 | .0000000 | 1 | 1401-05-02 | .0000000 | 300 + 1100 | 40 | 2400 | 40 | .0000000 | 2 | 1401-01-01 | .0000000 | 100 + 1 | 40 | 1 | 40 | .0000000 | 4 | 1401-06-01 | .0000000 | 700 + 1 | 40 | 1 | 40 | .0000000 | 4 | 1401-06-01 | .0000000 | 800 + 1 | 50 | 0 | 50 | .0000000 | 1 | 1401-06-01 | .0000000 | 400 + 1 | 50 | 0 | 50 | 17.6776695 | 2 | 1401-06-01 | .0000000 | 400 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn asc range current row ); -- mvd 1,6->5; + cn | vn | pn | cn | to_char | dt +----+----+-----+----+-------------------+------------ + 1 | 10 | 200 | 1 | .0000000 | 1401-03-01 + 1 | 30 | 300 | 1 | .0000000 | 1401-05-02 + 1 | 50 | 400 | 1 | 3.5355339 | 1401-06-01 + 1 | 30 | 500 | 1 | 3.5355339 | 1401-06-01 + 2 | 50 | 400 | 2 | .0000000 | 1401-06-01 + 3 | 30 | 600 | 3 | .0000000 | 1401-06-01 + 3 | 30 | 500 | 3 | .0000000 | 1401-06-01 + 4 | 40 | 700 | 4 | .0000000 | 1401-06-01 + 4 | 40 | 800 | 4 | .0000000 | 1401-06-01 + 2 | 40 | 100 | 2 | .0000000 | 1401-01-01 + 3 | 40 | 200 | 3 | .0000000 | 1401-04-01 + 1 | 20 | 100 | 1 | .0000000 | 1401-05-01 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn asc range current row ), +win2 as (order by ow_sale.vn desc); -- mvd 5,6->4; 2->7; + qty | vn | vn | to_char | cn | dt | to_char +------+----+----+-------------------+----+------------+------------------- + 1 | 50 | 50 | 14.1421356 | 1 | 1401-06-01 | .0000000 + 1 | 50 | 50 | .0000000 | 2 | 1401-06-01 | .0000000 + 1 | 40 | 40 | .0000000 | 4 | 1401-06-01 | .1818182 + 1 | 40 | 40 | .0000000 | 4 | 1401-06-01 | .1818182 + 1100 | 40 | 40 | .0000000 | 2 | 1401-01-01 | .1818182 + 1 | 40 | 40 | .0000000 | 3 | 1401-04-01 | .1818182 + 1 | 30 | 30 | .0000000 | 1 | 1401-05-02 | .5454545 + 12 | 30 | 30 | .0000000 | 3 | 1401-06-01 | .5454545 + 12 | 30 | 30 | .0000000 | 3 | 1401-06-01 | .5454545 + 12 | 30 | 30 | 14.1421356 | 1 | 1401-06-01 | .5454545 + 1 | 20 | 20 | .0000000 | 1 | 1401-05-01 | .9090909 + 1 | 10 | 10 | .0000000 | 1 | 1401-03-01 | 1.0000000 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.pn asc range between unbounded preceding and 2 preceding ); -- mvd 5,6->4; + vn | qty | dt | to_char | prc | pn +----+------+------------+-------------------+------+----- + 40 | 1 | 1401-06-01 | .0000000 | 1 | 700 + 40 | 1 | 1401-06-01 | .0000000 | 1 | 800 + 20 | 1 | 1401-05-01 | .0000000 | 0 | 100 + 40 | 1 | 1401-04-01 | .0000000 | 0 | 200 + 10 | 1 | 1401-03-01 | .0000000 | 0 | 200 + 30 | 1 | 1401-05-02 | .0000000 | 0 | 300 + 50 | 1 | 1401-06-01 | .0000000 | 0 | 400 + 50 | 1 | 1401-06-01 | .0000000 | 0 | 400 + 30 | 12 | 1401-06-01 | .0000000 | 5 | 500 + 30 | 12 | 1401-06-01 | .0000000 | 5 | 500 + 30 | 12 | 1401-06-01 | .0000000 | 5 | 600 + 40 | 1100 | 1401-01-01 | .0000000 | 2400 | 100 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.prc) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.prc) preceding ); -- mvd 1,4,2,5->3; 1,4,2,5->6; + cn | vn | to_char | qty | pn | to_char +----+----+-------------------+------+-----+------------------- + 1 | 10 | .0000000 | 1 | 200 | 1.0000000 + 1 | 20 | .0000000 | 1 | 100 | 1.0000000 + 3 | 30 | .0000000 | 12 | 600 | .0000000 + 3 | 40 | .0000000 | 1 | 200 | 1.0000000 + 4 | 40 | .0000000 | 1 | 800 | .0000000 + 2 | 50 | .0000000 | 1 | 400 | 1.0000000 + 1 | 30 | .0000000 | 1 | 300 | 1.0000000 + 1 | 30 | .0000000 | 12 | 500 | .0000000 + 3 | 30 | .0000000 | 12 | 500 | .0000000 + 4 | 40 | .0000000 | 1 | 700 | .0000000 + 2 | 40 | .0000000 | 1100 | 100 | .0000000 + 1 | 50 | .0000000 | 1 | 400 | 1.0000000 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.qty order by ow_sale.pn desc range between unbounded preceding and current row ); -- mvd 1,4,5,2->3; + prc | pn | to_char | cn | qty +------+-----+-------------------+----+------ + 0 | 300 | .0000000 | 1 | 1 + 0 | 400 | .0000000 | 1 | 1 + 1 | 800 | .0000000 | 4 | 1 + 5 | 600 | .0000000 | 3 | 12 + 0 | 100 | .0000000 | 1 | 1 + 0 | 200 | .0000000 | 1 | 1 + 0 | 400 | .0000000 | 2 | 1 + 0 | 200 | .0000000 | 3 | 1 + 1 | 700 | .0000000 | 4 | 1 + 5 | 500 | .0000000 | 1 | 12 + 5 | 500 | .0000000 | 3 | 12 + 2400 | 100 | .0000000 | 2 | 1100 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc range between unbounded preceding and 0 following ); -- mvd 4,1,5,6->3; + dt | qty | to_char | cn | vn | pn +------------+------+-------------------+----+----+----- + 1401-05-01 | 1 | .0000000 | 1 | 20 | 100 + 1401-03-01 | 1 | .0000000 | 1 | 10 | 200 + 1401-04-01 | 1 | .0000000 | 3 | 40 | 200 + 1401-06-01 | 1 | .0000000 | 2 | 50 | 400 + 1401-06-01 | 12 | .0000000 | 3 | 30 | 600 + 1401-06-01 | 1 | .0000000 | 4 | 40 | 800 + 1401-01-01 | 1100 | .0000000 | 2 | 40 | 100 + 1401-05-02 | 1 | .0000000 | 1 | 30 | 300 + 1401-06-01 | 1 | .0000000 | 1 | 50 | 400 + 1401-06-01 | 12 | .0000000 | 1 | 30 | 500 + 1401-06-01 | 12 | .0000000 | 3 | 30 | 500 + 1401-06-01 | 1 | .0000000 | 4 | 40 | 700 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.dt order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.pn) following ), +win2 as (order by ow_sale.pn asc); -- mvd 3,1,4->2; 4->5; 3,1,4->6; + vn | to_char | dt | pn | to_char | to_char +----+-------------------+------------+-----+-------------------+------------------- + 40 | .0000000 | 1401-01-01 | 100 | .1666667 | 100.0000000 + 20 | .0000000 | 1401-05-01 | 100 | .1666667 | 100.0000000 + 40 | .0000000 | 1401-04-01 | 200 | .3333333 | 200.0000000 + 10 | .0000000 | 1401-03-01 | 200 | .3333333 | 200.0000000 + 30 | .0000000 | 1401-05-02 | 300 | .4166667 | 300.0000000 + 50 | .7071068 | 1401-06-01 | 400 | .5833333 | 400.0000000 + 50 | .7071068 | 1401-06-01 | 400 | .5833333 | 400.0000000 + 30 | 1.4142136 | 1401-06-01 | 500 | .7500000 | 500.0000000 + 30 | 1.4142136 | 1401-06-01 | 500 | .7500000 | 500.0000000 + 30 | .0000000 | 1401-06-01 | 600 | .8333333 | 600.0000000 + 40 | .0000000 | 1401-06-01 | 700 | .9166667 | 700.0000000 + 40 | .0000000 | 1401-06-01 | 800 | 1.0000000 | 800.0000000 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.pn asc range between unbounded preceding and unbounded following ); -- mvd 3,4,5,6->2; + qty | to_char | dt | cn | vn | pn +------+-------------------+------------+----+----+----- + 1 | .0000000 | 1401-05-01 | 1 | 20 | 100 + 1 | .0000000 | 1401-04-01 | 3 | 40 | 200 + 1 | .0000000 | 1401-06-01 | 4 | 40 | 700 + 1 | .0000000 | 1401-06-01 | 4 | 40 | 800 + 1 | .0000000 | 1401-06-01 | 2 | 50 | 400 + 1 | .0000000 | 1401-03-01 | 1 | 10 | 200 + 1 | .0000000 | 1401-05-02 | 1 | 30 | 300 + 12 | .0000000 | 1401-06-01 | 1 | 30 | 500 + 12 | .0000000 | 1401-06-01 | 3 | 30 | 500 + 12 | .0000000 | 1401-06-01 | 3 | 30 | 600 + 1100 | .0000000 | 1401-01-01 | 2 | 40 | 100 + 1 | .0000000 | 1401-06-01 | 1 | 50 | 400 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.cn desc range between unbounded preceding and unbounded following ); -- mvd 5,2->4; 5,2->6; + pn | vn | vn | to_char | cn | to_char +-----+----+----+-------------------+----+------------------- + 200 | 10 | 10 | .0000000 | 1 | 2.0000000 + 100 | 20 | 20 | .0000000 | 1 | 2.0000000 + 300 | 30 | 30 | 7.7781746 | 1 | 24.0000000 + 500 | 30 | 30 | 7.7781746 | 1 | 24.0000000 + 400 | 50 | 50 | .0000000 | 1 | 2.0000000 + 500 | 30 | 30 | .0000000 | 3 | 24.0000000 + 600 | 30 | 30 | .0000000 | 3 | 24.0000000 + 200 | 40 | 40 | .0000000 | 3 | 2.0000000 + 100 | 40 | 40 | .0000000 | 2 | 2200.0000000 + 400 | 50 | 50 | .0000000 | 2 | 2.0000000 + 800 | 40 | 40 | .0000000 | 4 | 2.0000000 + 700 | 40 | 40 | .0000000 | 4 | 2.0000000 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.pn desc range between 3 preceding and 3 preceding ); -- mvd 4->3; + prc | qty | to_char | pn +------+------+-------------------+----- + 0 | 1 | .0000000 | 300 + 0 | 1 | .0000000 | 400 + 0 | 1 | .0000000 | 400 + 5 | 12 | .0000000 | 500 + 5 | 12 | .0000000 | 500 + 1 | 1 | .0000000 | 800 + 0 | 1 | .0000000 | 100 + 2400 | 1100 | .0000000 | 100 + 0 | 1 | .0000000 | 200 + 0 | 1 | .0000000 | 200 + 5 | 12 | .0000000 | 600 + 1 | 1 | .0000000 | 700 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.prc,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty+ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.pn asc range between 2 preceding and floor(ow_sale.cn) preceding ), +win2 as (order by ow_sale.ord, ow_sale.vn asc), +win3 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.qty order by ow_sale.vn desc); -- mvd 7,4,8->6; 4->9; 11,1,4,8->10; + qty | prc | prc | vn | qty | to_char | cn | pn | to_char | to_char | dt +------+------+------+----+------+-------------------+----+-----+-------------------+-------------------+------------ + 1100 | 2400 | 2400 | 40 | 1100 | .0000000 | 2 | 100 | .0000000 | 1.0000000 | 1401-01-01 + 1 | 0 | 0 | 10 | 1 | .0000000 | 1 | 200 | .0000000 | 1.0000000 | 1401-03-01 + 1 | 0 | 0 | 40 | 1 | .0000000 | 3 | 200 | .0000000 | 1.0000000 | 1401-04-01 + 1 | 0 | 0 | 20 | 1 | .0000000 | 1 | 100 | .0000000 | 1.0000000 | 1401-05-01 + 1 | 0 | 0 | 30 | 1 | .0000000 | 1 | 300 | .0000000 | 1.0000000 | 1401-05-02 + 1 | 0 | 0 | 50 | 1 | .0000000 | 1 | 400 | .0000000 | 1.0000000 | 1401-06-01 + 1 | 0 | 0 | 50 | 1 | .0000000 | 2 | 400 | .0000000 | 1.0000000 | 1401-06-01 + 12 | 5 | 5 | 30 | 12 | .0000000 | 1 | 500 | .0000000 | 1.0000000 | 1401-06-01 + 12 | 5 | 5 | 30 | 12 | .0000000 | 3 | 500 | .0000000 | 1.0000000 | 1401-06-01 + 12 | 5 | 5 | 30 | 12 | .0000000 | 3 | 600 | .0000000 | 1.0000000 | 1401-06-01 + 1 | 1 | 1 | 40 | 1 | .0000000 | 4 | 700 | .0000000 | 1.0000000 | 1401-06-01 + 1 | 1 | 1 | 40 | 1 | .0000000 | 4 | 800 | .0000000 | 1.0000000 | 1401-06-01 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.dt order by ow_sale.cn asc range between 1 preceding and current row ); -- mvd 6,2,7->5; + qty | dt | qty | vn | to_char | cn | pn +------+------------+------+----+-------------------+----+----- + 1 | 1401-05-01 | 1 | 20 | .0000000 | 1 | 100 + 1 | 1401-04-01 | 1 | 40 | .0000000 | 3 | 200 + 1 | 1401-05-02 | 1 | 30 | .0000000 | 1 | 300 + 1 | 1401-06-01 | 1 | 50 | .0000000 | 1 | 400 + 12 | 1401-06-01 | 12 | 30 | .0000000 | 1 | 500 + 12 | 1401-06-01 | 12 | 30 | .0000000 | 3 | 500 + 1 | 1401-06-01 | 1 | 40 | .0000000 | 4 | 700 + 1100 | 1401-01-01 | 1100 | 40 | .0000000 | 2 | 100 + 1 | 1401-03-01 | 1 | 10 | .0000000 | 1 | 200 + 1 | 1401-06-01 | 1 | 50 | .0000000 | 2 | 400 + 12 | 1401-06-01 | 12 | 30 | .0000000 | 3 | 600 + 1 | 1401-06-01 | 1 | 40 | .0000000 | 4 | 800 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.dt,ow_sale.vn,ow_sale.prc order by ow_sale.cn desc range between 3 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn/ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.prc order by ow_sale.cn desc range between 3 preceding and current row ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,4,5,6->2; 3,4,5,6->7; 4->8; 6->9; + pn | to_char | prc | cn | dt | vn | to_char | to_char | to_char +-----+-------------------+------+----+------------+----+-------------------+-------------------+------------------- + 100 | .0000000 | 2400 | 2 | 1401-01-01 | 40 | 2400.0000000 | 6.0000000 | 1.0000000 + 200 | .0000000 | 0 | 1 | 1401-03-01 | 10 | .0000000 | 3.0000000 | 1.0000000 + 200 | .0000000 | 0 | 3 | 1401-04-01 | 40 | .0000000 | 10.0000000 | 1.0000000 + 100 | .0000000 | 0 | 1 | 1401-05-01 | 20 | .0000000 | 5.0000000 | 1.0000000 + 300 | .0000000 | 0 | 1 | 1401-05-02 | 30 | .0000000 | 2.0000000 | 1.0000000 + 400 | .0000000 | 0 | 1 | 1401-06-01 | 50 | .0000000 | 1.0000000 | 1.0000000 + 400 | .0000000 | 0 | 2 | 1401-06-01 | 50 | .0000000 | 7.0000000 | 1.0000000 + 500 | 57.7350269 | 5 | 1 | 1401-06-01 | 30 | 5.0000000 | 4.0000000 | 1.0000000 + 500 | 70.7106781 | 5 | 3 | 1401-06-01 | 30 | 5.0000000 | 8.0000000 | 1.0000000 + 600 | 70.7106781 | 5 | 3 | 1401-06-01 | 30 | 5.0000000 | 9.0000000 | .0000000 + 700 | 70.7106781 | 1 | 4 | 1401-06-01 | 40 | 1.0000000 | 12.0000000 | .0000000 + 800 | 70.7106781 | 1 | 4 | 1401-06-01 | 40 | 1.0000000 | 11.0000000 | .0000000 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.vn desc range between floor(ow_sale.pn+ow_sale.vn) preceding and floor(ow_sale.cn) following ); -- mvd 8,1,2->7; + vn | pn | qty | qty | cn | pn | to_char | prc +----+-----+------+------+----+-----+-------------------+------ + 30 | 300 | 1 | 1 | 1 | 300 | .0000000 | 0 + 50 | 400 | 1 | 1 | 2 | 400 | .0000000 | 0 + 50 | 400 | 1 | 1 | 1 | 400 | .0000000 | 0 + 40 | 700 | 1 | 1 | 4 | 700 | .0000000 | 1 + 30 | 500 | 12 | 12 | 1 | 500 | .0000000 | 5 + 30 | 500 | 12 | 12 | 3 | 500 | .0000000 | 5 + 20 | 100 | 1 | 1 | 1 | 100 | .0000000 | 0 + 40 | 200 | 1 | 1 | 3 | 200 | .0000000 | 0 + 10 | 200 | 1 | 1 | 1 | 200 | 21.2132034 | 0 + 40 | 800 | 1 | 1 | 4 | 800 | .0000000 | 1 + 30 | 600 | 12 | 12 | 3 | 600 | .0000000 | 5 + 40 | 100 | 1100 | 1100 | 2 | 100 | .0000000 | 2400 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty+ow_sale.prc) as int),cast (floor(ow_sale.prc/ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.qty,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.pn desc range between 3 preceding and floor(ow_sale.pn*ow_sale.cn) following ), +win2 as (partition by ow_sale.qty,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc); -- mvd 1,5->4; 7,3->6; 7,3->8; 7,3->9; + prc | vn | qty | to_char | pn | to_char | cn | to_char | to_char +------+----+------+-------------------+-----+-------------------+----+-------------------+------------------- + 1 | 40 | 1 | .0000000 | 800 | 2.0000000 | 4 | 1.0000000 | 1.0000000 + 1 | 40 | 1 | .0000000 | 700 | 2.0000000 | 4 | .8571429 | .8571429 + 0 | 50 | 1 | .0000000 | 400 | 1.0000000 | 1 | .5714286 | .5714286 + 0 | 50 | 1 | .0000000 | 400 | 1.0000000 | 2 | .7142857 | .7142857 + 0 | 30 | 1 | .0000000 | 300 | 1.0000000 | 1 | .4285714 | .4285714 + 0 | 10 | 1 | .0000000 | 200 | 1.0000000 | 1 | .0000000 | .0000000 + 0 | 40 | 1 | .0000000 | 200 | 1.0000000 | 3 | .1428571 | .1428571 + 0 | 20 | 1 | .0000000 | 100 | 1.0000000 | 1 | .2857143 | .2857143 + 5 | 30 | 12 | .0000000 | 600 | .0000000 | 3 | 1.0000000 | 1.0000000 + 5 | 30 | 12 | .0000000 | 500 | .0000000 | 1 | .0000000 | .0000000 + 5 | 30 | 12 | .0000000 | 500 | 17.0000000 | 3 | .5000000 | .5000000 + 2400 | 40 | 1100 | .0000000 | 100 | .0000000 | 2 | .0000000 | .0000000 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.vn desc range between floor(ow_sale.vn) preceding and unbounded following ); -- mvd 6,3->5; + prc | qty | pn | qty | to_char | vn +------+------+-----+------+-------------------+---- + 0 | 1 | 300 | 1 | .0000000 | 30 + 0 | 1 | 400 | 1 | .0000000 | 50 + 0 | 1 | 400 | 1 | .0000000 | 50 + 5 | 12 | 500 | 12 | .0000000 | 30 + 5 | 12 | 500 | 12 | .0000000 | 30 + 1 | 1 | 800 | 1 | .0000000 | 40 + 2400 | 1100 | 100 | 1100 | 777.1103525 | 40 + 0 | 1 | 100 | 1 | 777.1103525 | 20 + 0 | 1 | 200 | 1 | .0000000 | 40 + 0 | 1 | 200 | 1 | .0000000 | 10 + 5 | 12 | 600 | 12 | .0000000 | 30 + 1 | 1 | 700 | 1 | .0000000 | 40 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.qty,ow_sale.pn order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty/ow_sale.cn)) OVER(partition by ow_sale.dt order by ow_sale.cn desc range between 1 preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.pn) as int),cast (floor(ow_sale.pn-ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn desc range between 1 preceding and unbounded following ), +win2 as (partition by ow_sale.qty,ow_sale.pn order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 1,4->3; 2,6,7->5; 2,6,7->8; 1,4->9; 1->10; 1->11; + cn | vn | to_char | dt | to_char | qty | pn | to_char | to_char | to_char | to_char +----+----+-------------------+------------+-------------------+------+-----+-------------------+-------------------+-------------------+------------------- + 2 | 40 | .0000000 | 1401-01-01 | 1.0000000 | 1100 | 100 | 100.0000000 | 1.0000000 | 1.0000000 | .0000000 + 1 | 10 | .0000000 | 1401-03-01 | 1.0000000 | 1 | 200 | 200.0000000 | 1.0000000 | 1.0000000 | .0000000 + 3 | 40 | .0000000 | 1401-04-01 | .5000000 | 1 | 200 | 200.0000000 | 1.0000000 | 1.0000000 | .0000000 + 1 | 20 | .0000000 | 1401-05-01 | 1.0000000 | 1 | 100 | 100.0000000 | 1.0000000 | 1.0000000 | .0000000 + 1 | 30 | .0000000 | 1401-05-02 | 1.0000000 | 1 | 300 | 300.0000000 | 1.0000000 | 1.0000000 | .0000000 + 1 | 50 | 6.3508530 | 1401-06-01 | 1.0000000 | 1 | 400 | 400.0000000 | 3.0000000 | 1.0000000 | .0000000 + 2 | 50 | 6.0249481 | 1401-06-01 | 1.0000000 | 1 | 400 | 400.0000000 | 5.0000000 | 12.0000000 | .0000000 + 1 | 30 | 6.3508530 | 1401-06-01 | 1.0000000 | 12 | 500 | 500.0000000 | 3.0000000 | 12.0000000 | .0000000 + 3 | 30 | 5.8797473 | 1401-06-01 | 1.0000000 | 12 | 500 | 500.0000000 | 7.0000000 | 1.0000000 | .0000000 + 3 | 30 | 5.8797473 | 1401-06-01 | 1.0000000 | 12 | 600 | 600.0000000 | 7.0000000 | .0000000 | .0000000 + 4 | 40 | 5.8797473 | 1401-06-01 | 1.0000000 | 1 | 700 | 700.0000000 | 7.0000000 | .0000000 | .0000000 + 4 | 40 | 5.8797473 | 1401-06-01 | 1.0000000 | 1 | 800 | 800.0000000 | 7.0000000 | .0000000 | .0000000 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.vn desc range between current row and current row ); -- mvd 8,6,3->7; + qty | pn | vn | qty | prc | cn | to_char | dt +------+-----+----+------+------+----+-------------------+------------ + 1 | 100 | 20 | 1 | 0 | 1 | .0000000 | 1401-05-01 + 1 | 400 | 50 | 1 | 0 | 2 | .0000000 | 1401-06-01 + 1 | 200 | 40 | 1 | 0 | 3 | .0000000 | 1401-04-01 + 1 | 800 | 40 | 1 | 1 | 4 | 70.7106781 | 1401-06-01 + 1 | 700 | 40 | 1 | 1 | 4 | 70.7106781 | 1401-06-01 + 1 | 200 | 10 | 1 | 0 | 1 | .0000000 | 1401-03-01 + 1 | 300 | 30 | 1 | 0 | 1 | .0000000 | 1401-05-02 + 1 | 400 | 50 | 1 | 0 | 1 | .0000000 | 1401-06-01 + 12 | 500 | 30 | 12 | 5 | 1 | .0000000 | 1401-06-01 + 1100 | 100 | 40 | 1100 | 2400 | 2 | .0000000 | 1401-01-01 + 12 | 600 | 30 | 12 | 5 | 3 | 70.7106781 | 1401-06-01 + 12 | 500 | 30 | 12 | 5 | 3 | 70.7106781 | 1401-06-01 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.qty)) OVER(partition by ow_sale.prc,ow_sale.dt order by ow_sale.pn desc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt order by ow_sale.pn desc range between current row and current row ), +win2 as (order by ow_sale.cn asc); -- mvd 4,5,1->3; 2->6; 4,5,1->7; 4,5,1->8; 2->9; + pn | cn | to_char | prc | dt | to_char | to_char | to_char | to_char +-----+----+-------------------+------+------------+-------------------+-------------------+-------------------+------------------- + 400 | 1 | .0000000 | 0 | 1401-06-01 | 1.0000000 | 1.0000000 | .0000000 | 5.0000000 + 300 | 1 | .0000000 | 0 | 1401-05-02 | 1.0000000 | 1.0000000 | .0000000 | 5.0000000 + 200 | 1 | .0000000 | 0 | 1401-03-01 | 1.0000000 | 1.0000000 | .0000000 | 5.0000000 + 500 | 1 | .0000000 | 5 | 1401-06-01 | 1.0000000 | 12.0000000 | .0000000 | 5.0000000 + 100 | 1 | .0000000 | 0 | 1401-05-01 | 1.0000000 | 1.0000000 | .0000000 | 5.0000000 + 100 | 2 | .0000000 | 2400 | 1401-01-01 | 6.0000000 | 1100.0000000 | .0000000 | 7.0000000 + 400 | 2 | .0000000 | 0 | 1401-06-01 | 6.0000000 | 1.0000000 | .0000000 | 7.0000000 + 600 | 3 | .0000000 | 5 | 1401-06-01 | 8.0000000 | 12.0000000 | .0000000 | 10.0000000 + 500 | 3 | .0000000 | 5 | 1401-06-01 | 8.0000000 | 12.0000000 | .0000000 | 10.0000000 + 200 | 3 | .0000000 | 0 | 1401-04-01 | 8.0000000 | 1.0000000 | .0000000 | 10.0000000 + 800 | 4 | .0000000 | 1 | 1401-06-01 | 11.0000000 | 1.0000000 | .0000000 | 12.0000000 + 700 | 4 | .0000000 | 1 | 1401-06-01 | 11.0000000 | 1.0000000 | .0000000 | 12.0000000 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc range between current row and floor(ow_sale.prc) following ); -- mvd 4,1,5->3; + vn | vn | to_char | dt | pn +----+----+-------------------+------------+----- + 10 | 10 | .0000000 | 1401-03-01 | 200 + 30 | 30 | .0000000 | 1401-06-01 | 600 + 40 | 40 | .0000000 | 1401-06-01 | 700 + 40 | 40 | .0000000 | 1401-01-01 | 100 + 20 | 20 | .0000000 | 1401-05-01 | 100 + 40 | 40 | .0000000 | 1401-04-01 | 200 + 30 | 30 | .0000000 | 1401-05-02 | 300 + 50 | 50 | .7071068 | 1401-06-01 | 400 + 50 | 50 | .7071068 | 1401-06-01 | 400 + 30 | 30 | 1.4142136 | 1401-06-01 | 500 + 30 | 30 | 1.4142136 | 1401-06-01 | 500 + 40 | 40 | .0000000 | 1401-06-01 | 800 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc range between current row and 2 following ), +win2 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.pn desc); -- mvd 4,5,6->3; 4,5,6->7; 6,9->8; + prc | qty | to_char | cn | dt | vn | to_char | to_char | pn +------+------+-------------------+----+------------+----+-------------------+-------------------+----- + 0 | 1 | .0000000 | 1 | 1401-03-01 | 10 | 200.0000000 | 1.0000000 | 200 + 0 | 1 | .0000000 | 1 | 1401-05-01 | 20 | 100.0000000 | 1.0000000 | 100 + 5 | 12 | .0000000 | 3 | 1401-06-01 | 30 | 605.0000000 | 1.0000000 | 600 + 5 | 12 | .0000000 | 3 | 1401-06-01 | 30 | 605.0000000 | 2.0000000 | 500 + 5 | 12 | .0000000 | 1 | 1401-06-01 | 30 | 605.0000000 | 2.0000000 | 500 + 0 | 1 | .0000000 | 1 | 1401-05-02 | 30 | 300.0000000 | 4.0000000 | 300 + 1 | 1 | .0000000 | 4 | 1401-06-01 | 40 | 801.0000000 | 1.0000000 | 800 + 1 | 1 | .0000000 | 4 | 1401-06-01 | 40 | 801.0000000 | 2.0000000 | 700 + 0 | 1 | .0000000 | 3 | 1401-04-01 | 40 | 200.0000000 | 3.0000000 | 200 + 2400 | 1100 | .0000000 | 2 | 1401-01-01 | 40 | 2500.0000000 | 4.0000000 | 100 + 0 | 1 | .0000000 | 2 | 1401-06-01 | 50 | 400.0000000 | 1.0000000 | 400 + 0 | 1 | .0000000 | 1 | 1401-06-01 | 50 | 400.0000000 | 1.0000000 | 400 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn desc range between current row and unbounded following ); -- mvd 3,1->2; + vn | to_char | cn +----+-------------------+---- + 10 | .0000000 | 1 + 20 | .0000000 | 1 + 30 | 5.5000000 | 3 + 30 | 5.5000000 | 3 + 30 | 7.7781746 | 1 + 30 | 7.7781746 | 1 + 40 | 549.5000000 | 4 + 40 | 549.5000000 | 4 + 40 | 777.1103525 | 3 + 40 | .0000000 | 2 + 50 | .0000000 | 2 + 50 | .0000000 | 1 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.vn)) OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.prc order by ow_sale.vn asc range between current row and unbounded following ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.pn desc); -- mvd 4,5,6->3; 6->7; 9->8; 6->10; + qty | cn | to_char | prc | dt | vn | to_char | to_char | pn | to_char +------+----+-------------------+------+------------+----+-------------------+-------------------+-----+------------------- + 1 | 4 | 70.7106781 | 1 | 1401-06-01 | 40 | .1818182 | .0833333 | 800 | 4000.0000000 + 1 | 4 | 70.7106781 | 1 | 1401-06-01 | 40 | .1818182 | .1666667 | 700 | 4000.0000000 + 12 | 3 | 57.7350269 | 5 | 1401-06-01 | 30 | .5454545 | .2500000 | 600 | 4000.0000000 + 12 | 3 | 57.7350269 | 5 | 1401-06-01 | 30 | .5454545 | .4166667 | 500 | 4000.0000000 + 12 | 1 | 57.7350269 | 5 | 1401-06-01 | 30 | .5454545 | .4166667 | 500 | 4000.0000000 + 1 | 1 | .0000000 | 0 | 1401-06-01 | 50 | .0000000 | .5833333 | 400 | 20000.0000000 + 1 | 2 | .0000000 | 0 | 1401-06-01 | 50 | .0000000 | .5833333 | 400 | 20000.0000000 + 1 | 1 | .0000000 | 0 | 1401-05-02 | 30 | .5454545 | .6666667 | 300 | 4000.0000000 + 1 | 3 | .0000000 | 0 | 1401-04-01 | 40 | .1818182 | .8333333 | 200 | 4000.0000000 + 1 | 1 | .0000000 | 0 | 1401-03-01 | 10 | 1.0000000 | .8333333 | 200 | 2000.0000000 + 1100 | 2 | .0000000 | 2400 | 1401-01-01 | 40 | .1818182 | 1.0000000 | 100 | 4000.0000000 + 1 | 1 | .0000000 | 0 | 1401-05-01 | 20 | .9090909 | 1.0000000 | 100 | 2000.0000000 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.cn desc range between 2 following and floor(ow_sale.qty) following ); -- mvd 6,7->5; + qty | vn | qty | vn | to_char | cn | pn +------+----+------+----+-------------------+----+----- + 1 | 30 | 1 | 30 | .0000000 | 1 | 300 + 1 | 50 | 1 | 50 | .0000000 | 2 | 400 + 1 | 50 | 1 | 50 | .0000000 | 1 | 400 + 12 | 30 | 12 | 30 | .0000000 | 3 | 500 + 12 | 30 | 12 | 30 | .0000000 | 1 | 500 + 1 | 40 | 1 | 40 | .0000000 | 4 | 800 + 1100 | 40 | 1100 | 40 | .0000000 | 2 | 100 + 1 | 20 | 1 | 20 | .0000000 | 1 | 100 + 1 | 40 | 1 | 40 | .0000000 | 3 | 200 + 1 | 10 | 1 | 10 | .0000000 | 1 | 200 + 12 | 30 | 12 | 30 | .0000000 | 3 | 600 + 1 | 40 | 1 | 40 | .0000000 | 4 | 700 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.pn desc range between 4 following and unbounded following ); -- mvd 4->3; + qty | prc | to_char | pn +------+------+-------------------+----- + 1 | 0 | .0000000 | 300 + 1 | 0 | .0000000 | 400 + 1 | 0 | .0000000 | 400 + 12 | 5 | .0000000 | 500 + 12 | 5 | .0000000 | 500 + 1 | 1 | .0000000 | 800 + 1 | 0 | .0000000 | 100 + 1100 | 2400 | .0000000 | 100 + 1 | 0 | .0000000 | 200 + 1 | 0 | .0000000 | 200 + 12 | 5 | .0000000 | 600 + 1 | 1 | .0000000 | 700 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn asc rows unbounded preceding ); -- mvd 7,5,1,2->6; + vn | pn | vn | qty | cn | to_char | prc +----+-----+----+------+----+-------------------+------ + 10 | 200 | 10 | 1 | 1 | .0000000 | 0 + 20 | 100 | 20 | 1 | 1 | .0000000 | 0 + 30 | 300 | 30 | 1 | 1 | .0000000 | 0 + 50 | 400 | 50 | 1 | 1 | .0000000 | 0 + 30 | 500 | 30 | 12 | 1 | .0000000 | 5 + 40 | 200 | 40 | 1 | 3 | .0000000 | 0 + 30 | 500 | 30 | 12 | 3 | .0000000 | 5 + 30 | 600 | 30 | 12 | 3 | .0000000 | 5 + 40 | 700 | 40 | 1 | 4 | .0000000 | 1 + 40 | 800 | 40 | 1 | 4 | .0000000 | 1 + 50 | 400 | 50 | 1 | 2 | .0000000 | 0 + 40 | 100 | 40 | 1100 | 2 | .0000000 | 2400 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc rows unbounded preceding ), +win2 as (order by ow_sale.cn asc); -- mvd 3,4,1->2; 4->5; + pn | to_char | dt | cn | to_char +-----+-------------------+------------+----+------------------- + 100 | .0000000 | 1401-05-01 | 1 | 1.0000000 + 200 | .0000000 | 1401-03-01 | 1 | 1.0000000 + 300 | .0000000 | 1401-05-02 | 1 | 1.0000000 + 400 | .0000000 | 1401-06-01 | 1 | 1.0000000 + 500 | .7071068 | 1401-06-01 | 1 | 1.0000000 + 100 | .0000000 | 1401-01-01 | 2 | 6.0000000 + 400 | .0000000 | 1401-06-01 | 2 | 6.0000000 + 200 | .0000000 | 1401-04-01 | 3 | 8.0000000 + 500 | .0000000 | 1401-06-01 | 3 | 8.0000000 + 600 | .0000000 | 1401-06-01 | 3 | 8.0000000 + 700 | .0000000 | 1401-06-01 | 4 | 11.0000000 + 800 | .0000000 | 1401-06-01 | 4 | 11.0000000 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc*ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc rows floor(ow_sale.qty/ow_sale.vn) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc rows floor(ow_sale.qty/ow_sale.vn) preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 1,8,4,3,9->7; 1->10; 1,8,4,3,9->11; + cn | cn | vn | qty | vn | vn | to_char | dt | pn | to_char | to_char +----+----+----+------+----+----+-------------------+------------+-----+-------------------+------------------- + 2 | 2 | 40 | 1100 | 40 | 40 | .0000000 | 1401-01-01 | 100 | 1.0000000 | 4800.0000000 + 1 | 1 | 10 | 1 | 10 | 10 | .0000000 | 1401-03-01 | 200 | 1.0000000 | .0000000 + 3 | 3 | 40 | 1 | 40 | 40 | .0000000 | 1401-04-01 | 200 | 1.0000000 | .0000000 + 1 | 1 | 20 | 1 | 20 | 20 | .0000000 | 1401-05-01 | 100 | 1.0000000 | .0000000 + 1 | 1 | 30 | 1 | 30 | 30 | .0000000 | 1401-05-02 | 300 | 1.0000000 | .0000000 + 1 | 1 | 50 | 1 | 50 | 50 | .0000000 | 1401-06-01 | 400 | 1.0000000 | .0000000 + 2 | 2 | 50 | 1 | 50 | 50 | .0000000 | 1401-06-01 | 400 | 12.0000000 | .0000000 + 1 | 1 | 30 | 12 | 30 | 30 | .0000000 | 1401-06-01 | 500 | 12.0000000 | 5.0000000 + 3 | 3 | 30 | 12 | 30 | 30 | .0000000 | 1401-06-01 | 500 | 1.0000000 | 15.0000000 + 3 | 3 | 30 | 12 | 30 | 30 | .0000000 | 1401-06-01 | 600 | .0000000 | 15.0000000 + 4 | 4 | 40 | 1 | 40 | 40 | .0000000 | 1401-06-01 | 700 | .0000000 | 4.0000000 + 4 | 4 | 40 | 1 | 40 | 40 | .0000000 | 1401-06-01 | 800 | .0000000 | 4.0000000 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc rows current row ); -- mvd 4,1,5,6,2->3; + cn | pn | to_char | prc | qty | vn +----+-----+-------------------+------+------+---- + 1 | 500 | .0000000 | 5 | 12 | 30 + 3 | 500 | .0000000 | 5 | 12 | 30 + 3 | 600 | .0000000 | 5 | 12 | 30 + 2 | 400 | .0000000 | 0 | 1 | 50 + 1 | 200 | .0000000 | 0 | 1 | 10 + 1 | 100 | .0000000 | 0 | 1 | 20 + 1 | 300 | .0000000 | 0 | 1 | 30 + 2 | 100 | .0000000 | 2400 | 1100 | 40 + 3 | 200 | .0000000 | 0 | 1 | 40 + 4 | 700 | .0000000 | 1 | 1 | 40 + 4 | 800 | .0000000 | 1 | 1 | 40 + 1 | 400 | .0000000 | 0 | 1 | 50 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.qty)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc rows current row ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.prc order by ow_sale.vn desc), +win3 as (order by ow_sale.vn desc); -- mvd 6,2,3,7->5; 6,2,3,7->8; 6,2,3,7->9; 11,2,6,3,7->10; 3->12; + qty | cn | vn | cn | to_char | dt | pn | to_char | to_char | to_char | prc | to_char +------+----+----+----+-------------------+------------+-----+-------------------+-------------------+-------------------+------+------------------- + 1 | 1 | 50 | 1 | .0000000 | 1401-06-01 | 400 | 50.0000000 | 49.0000000 | .0000000 | 0 | 1.0000000 + 1 | 2 | 50 | 2 | .0000000 | 1401-06-01 | 400 | 50.0000000 | 49.0000000 | .0000000 | 0 | 1.0000000 + 1100 | 2 | 40 | 2 | .0000000 | 1401-01-01 | 100 | 40.0000000 | -1060.0000000 | .0000000 | 2400 | 3.0000000 + 1 | 4 | 40 | 4 | .0000000 | 1401-06-01 | 800 | 40.0000000 | 39.0000000 | .0000000 | 1 | 3.0000000 + 1 | 3 | 40 | 3 | .0000000 | 1401-04-01 | 200 | 40.0000000 | 39.0000000 | .0000000 | 0 | 3.0000000 + 1 | 4 | 40 | 4 | .0000000 | 1401-06-01 | 700 | 40.0000000 | 39.0000000 | .0000000 | 1 | 3.0000000 + 1 | 1 | 30 | 1 | .0000000 | 1401-05-02 | 300 | 30.0000000 | 29.0000000 | .0000000 | 0 | 7.0000000 + 12 | 1 | 30 | 1 | .0000000 | 1401-06-01 | 500 | 30.0000000 | 18.0000000 | .0000000 | 5 | 7.0000000 + 12 | 3 | 30 | 3 | .0000000 | 1401-06-01 | 500 | 30.0000000 | 18.0000000 | .0000000 | 5 | 7.0000000 + 12 | 3 | 30 | 3 | .0000000 | 1401-06-01 | 600 | 30.0000000 | 18.0000000 | .0000000 | 5 | 7.0000000 + 1 | 1 | 20 | 1 | .0000000 | 1401-05-01 | 100 | 20.0000000 | 19.0000000 | .0000000 | 0 | 11.0000000 + 1 | 1 | 10 | 1 | .0000000 | 1401-03-01 | 200 | 10.0000000 | 9.0000000 | .0000000 | 0 | 12.0000000 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.vn) preceding ); -- mvd 3,4,1,5,6->2; + cn | to_char | prc | dt | qty | pn +----+-------------------+------+------------+------+----- + 1 | .0000000 | 0 | 1401-03-01 | 1 | 200 + 2 | .0000000 | 0 | 1401-06-01 | 1 | 400 + 4 | .0000000 | 1 | 1401-06-01 | 1 | 700 + 1 | .0000000 | 5 | 1401-06-01 | 12 | 500 + 3 | .0000000 | 5 | 1401-06-01 | 12 | 500 + 1 | .0000000 | 0 | 1401-05-01 | 1 | 100 + 3 | .0000000 | 0 | 1401-04-01 | 1 | 200 + 1 | .0000000 | 0 | 1401-05-02 | 1 | 300 + 1 | .0000000 | 0 | 1401-06-01 | 1 | 400 + 4 | .0000000 | 1 | 1401-06-01 | 1 | 800 + 3 | .0000000 | 5 | 1401-06-01 | 12 | 600 + 2 | .0000000 | 2400 | 1401-01-01 | 1100 | 100 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.qty)) OVER(partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.vn*ow_sale.vn) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.vn*ow_sale.vn) preceding ); -- mvd 8,1->7; 8,1->9; + vn | vn | qty | vn | cn | qty | to_char | dt | to_char +----+----+------+----+----+------+-------------------+------------+------------------- + 10 | 10 | 1 | 10 | 1 | 1 | .0000000 | 1401-03-01 | .0000000 + 30 | 30 | 1 | 30 | 1 | 1 | .0000000 | 1401-05-02 | .0000000 + 30 | 30 | 12 | 30 | 1 | 12 | .0000000 | 1401-06-01 | .0000000 + 30 | 30 | 12 | 30 | 3 | 12 | .0000000 | 1401-06-01 | .0000000 + 30 | 30 | 12 | 30 | 3 | 12 | .0000000 | 1401-06-01 | .0000000 + 40 | 40 | 1 | 40 | 4 | 1 | .0000000 | 1401-06-01 | .0000000 + 40 | 40 | 1 | 40 | 4 | 1 | .0000000 | 1401-06-01 | .0000000 + 50 | 50 | 1 | 50 | 1 | 1 | .0000000 | 1401-06-01 | .0000000 + 50 | 50 | 1 | 50 | 2 | 1 | .0000000 | 1401-06-01 | .0000000 + 20 | 20 | 1 | 20 | 1 | 1 | .0000000 | 1401-05-01 | .0000000 + 40 | 40 | 1100 | 40 | 2 | 1100 | .0000000 | 1401-01-01 | .0000000 + 40 | 40 | 1 | 40 | 3 | 1 | .0000000 | 1401-04-01 | .0000000 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and current row ); -- mvd 1,4->3; + cn | pn | to_char | vn +----+-----+-------------------+---- + 1 | 200 | .0000000 | 10 + 1 | 100 | .0000000 | 20 + 1 | 300 | .0000000 | 30 + 1 | 500 | .0000000 | 30 + 1 | 400 | .0000000 | 50 + 3 | 500 | .0000000 | 30 + 3 | 600 | .0000000 | 30 + 3 | 200 | .0000000 | 40 + 2 | 100 | .0000000 | 40 + 2 | 400 | .0000000 | 50 + 4 | 700 | .0000000 | 40 + 4 | 800 | .0000000 | 40 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn/ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.vn desc); -- mvd 5,3,1,6->4; 8,1->7; 5,3,1,6->9; 5,3,1,6->10; 8,1->11; 8,1->12; + vn | qty | cn | to_char | dt | pn | to_char | prc | to_char | to_char | to_char | to_char +----+------+----+-------------------+------------+-----+-------------------+------+-------------------+-------------------+-------------------+------------------- + 20 | 1 | 1 | .0000000 | 1401-05-01 | 100 | 1.0000000 | 0 | 20.0000000 | 1.0000000 | 1.0000000 | 101.0000000 + 50 | 1 | 2 | .0000000 | 1401-06-01 | 400 | 1.0000000 | 0 | 50.0000000 | 1.0000000 | 1.0000000 | 402.0000000 + 40 | 1 | 3 | .0000000 | 1401-04-01 | 200 | 1.0000000 | 0 | 40.0000000 | 1.0000000 | 1.0000000 | 203.0000000 + 40 | 1 | 4 | .0000000 | 1401-06-01 | 700 | 1.0000000 | 1 | 40.0000000 | 1.0000000 | 1.0000000 | 804.0000000 + 40 | 1 | 4 | .0000000 | 1401-06-01 | 800 | 1.0000000 | 1 | 40.0000000 | 2.0000000 | 1.0000000 | 804.0000000 + 10 | 1 | 1 | .0000000 | 1401-03-01 | 200 | 1.0000000 | 0 | 10.0000000 | 1.0000000 | 1.0000000 | 201.0000000 + 30 | 1 | 1 | .0000000 | 1401-05-02 | 300 | 1.0000000 | 0 | 30.0000000 | 1.0000000 | 1.0000000 | 301.0000000 + 30 | 12 | 1 | .0000000 | 1401-06-01 | 500 | 1.0000000 | 5 | 2.0000000 | 1.0000000 | 1.0000000 | 603.0000000 + 50 | 1 | 1 | .0000000 | 1401-06-01 | 400 | 1.0000000 | 0 | 50.0000000 | 1.0000000 | 1.0000000 | 402.0000000 + 40 | 1100 | 2 | .0000000 | 1401-01-01 | 100 | 1.0000000 | 2400 | .0000000 | 1.0000000 | 1.0000000 | 102.0000000 + 30 | 12 | 3 | .0000000 | 1401-06-01 | 500 | 1.0000000 | 5 | 2.0000000 | 1.0000000 | 1.0000000 | 603.0000000 + 30 | 12 | 3 | .0000000 | 1401-06-01 | 600 | 1.0000000 | 5 | 2.0000000 | 2.0000000 | 1.0000000 | 603.0000000 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and floor(ow_sale.vn) following ); -- mvd 4,1,5->3; + cn | vn | to_char | dt | pn +----+----+-------------------+------------+----- + 1 | 20 | .0000000 | 1401-05-01 | 100 + 3 | 40 | .0000000 | 1401-04-01 | 200 + 1 | 30 | .0000000 | 1401-05-02 | 300 + 1 | 50 | .0000000 | 1401-06-01 | 400 + 1 | 30 | .0000000 | 1401-06-01 | 500 + 3 | 30 | .0000000 | 1401-06-01 | 500 + 4 | 40 | .0000000 | 1401-06-01 | 700 + 2 | 40 | .0000000 | 1401-01-01 | 100 + 1 | 10 | .0000000 | 1401-03-01 | 200 + 2 | 50 | .0000000 | 1401-06-01 | 400 + 3 | 30 | .0000000 | 1401-06-01 | 600 + 4 | 40 | .0000000 | 1401-06-01 | 800 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 5,1->4; + vn | pn | pn | to_char | cn +----+-----+-----+-------------------+---- + 10 | 200 | 200 | .0000000 | 1 + 20 | 100 | 100 | .0000000 | 1 + 30 | 300 | 300 | 123.5161933 | 1 + 30 | 500 | 500 | 123.5161933 | 1 + 30 | 500 | 500 | 123.5161933 | 3 + 30 | 600 | 600 | 123.5161933 | 3 + 40 | 100 | 100 | 1456.7544977 | 2 + 40 | 200 | 200 | 1456.7544977 | 3 + 40 | 700 | 700 | 1456.7544977 | 4 + 40 | 800 | 800 | 1456.7544977 | 4 + 50 | 400 | 400 | .0000000 | 1 + 50 | 400 | 400 | .0000000 | 2 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn order by ow_sale.pn desc); -- mvd 4,1,2->3; 1,6->5; + vn | qty | to_char | cn | to_char | pn +----+------+-------------------+----+-------------------+----- + 30 | 12 | .0000000 | 1 | 1.0000000 | 500 + 50 | 1 | .0000000 | 2 | 1.0000000 | 400 + 30 | 12 | .0000000 | 3 | 1.0000000 | 500 + 30 | 12 | .0000000 | 3 | 1.0000000 | 600 + 40 | 1 | .0000000 | 4 | 1.0000000 | 700 + 40 | 1 | .0000000 | 4 | 1.0000000 | 800 + 10 | 1 | 17.0782513 | 1 | 1.0000000 | 200 + 20 | 1 | 17.0782513 | 1 | 1.0000000 | 100 + 30 | 1 | 17.0782513 | 1 | 1.0000000 | 300 + 50 | 1 | 17.0782513 | 1 | 1.0000000 | 400 + 40 | 1100 | .0000000 | 2 | 1.0000000 | 100 + 40 | 1 | .0000000 | 3 | 1.0000000 | 200 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.pn+ow_sale.vn) preceding and 4 preceding ); -- mvd 3,8,6->7; + qty | pn | dt | qty | dt | vn | to_char | cn +------+-----+------------+------+------------+----+-------------------+---- + 1 | 100 | 1401-05-01 | 1 | 1401-05-01 | 20 | .0000000 | 1 + 1 | 400 | 1401-06-01 | 1 | 1401-06-01 | 50 | .0000000 | 2 + 1 | 200 | 1401-04-01 | 1 | 1401-04-01 | 40 | .0000000 | 3 + 1 | 700 | 1401-06-01 | 1 | 1401-06-01 | 40 | .0000000 | 4 + 1 | 800 | 1401-06-01 | 1 | 1401-06-01 | 40 | .0000000 | 4 + 1 | 200 | 1401-03-01 | 1 | 1401-03-01 | 10 | .0000000 | 1 + 1 | 300 | 1401-05-02 | 1 | 1401-05-02 | 30 | .0000000 | 1 + 1 | 400 | 1401-06-01 | 1 | 1401-06-01 | 50 | .0000000 | 1 + 12 | 500 | 1401-06-01 | 12 | 1401-06-01 | 30 | .0000000 | 1 + 1100 | 100 | 1401-01-01 | 1100 | 1401-01-01 | 40 | .0000000 | 2 + 12 | 500 | 1401-06-01 | 12 | 1401-06-01 | 30 | .0000000 | 3 + 12 | 600 | 1401-06-01 | 12 | 1401-06-01 | 30 | .0000000 | 3 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.dt,ow_sale.dt order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.pn asc rows between floor(ow_sale.qty) preceding and floor(ow_sale.pn) preceding ), +win2 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.cn asc), +win3 as (order by ow_sale.cn desc); -- mvd 5->4; 3,7->6; 5->8; 3->9; 3,7->10; + vn | vn | cn | to_char | pn | to_char | dt | to_char | to_char | to_char +----+----+----+-------------------+-----+-------------------+------------+-------------------+-------------------+------------------- + 40 | 40 | 4 | .0000000 | 800 | 6.0000000 | 1401-06-01 | .0000000 | 1.0000000 | 1.0000000 + 40 | 40 | 4 | .0000000 | 700 | 6.0000000 | 1401-06-01 | .0000000 | 1.0000000 | 1.0000000 + 40 | 40 | 3 | .0000000 | 200 | 1.0000000 | 1401-04-01 | .0000000 | 3.0000000 | 1.0000000 + 30 | 30 | 3 | .0000000 | 600 | 4.0000000 | 1401-06-01 | .0000000 | 3.0000000 | .7142857 + 30 | 30 | 3 | .0000000 | 500 | 4.0000000 | 1401-06-01 | .0000000 | 3.0000000 | .7142857 + 50 | 50 | 2 | .0000000 | 400 | 3.0000000 | 1401-06-01 | .0000000 | 6.0000000 | .4285714 + 40 | 40 | 2 | .0000000 | 100 | 1.0000000 | 1401-01-01 | .0000000 | 6.0000000 | 1.0000000 + 20 | 20 | 1 | .0000000 | 100 | 1.0000000 | 1401-05-01 | .0000000 | 8.0000000 | 1.0000000 + 10 | 10 | 1 | .0000000 | 200 | 1.0000000 | 1401-03-01 | .0000000 | 8.0000000 | 1.0000000 + 30 | 30 | 1 | .0000000 | 300 | 1.0000000 | 1401-05-02 | .0000000 | 8.0000000 | 1.0000000 + 50 | 50 | 1 | .0000000 | 400 | 1.0000000 | 1401-06-01 | .0000000 | 8.0000000 | .2857143 + 30 | 30 | 1 | .0000000 | 500 | 1.0000000 | 1401-06-01 | .0000000 | 8.0000000 | .2857143 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between floor(ow_sale.qty) preceding and current row ); -- mvd 3,1,4->2; + cn | to_char | prc | pn +----+-------------------+------+----- + 1 | .0000000 | 0 | 100 + 1 | .0000000 | 0 | 200 + 2 | .0000000 | 0 | 400 + 3 | .0000000 | 0 | 200 + 4 | .0000000 | 1 | 700 + 3 | .0000000 | 5 | 600 + 1 | .0000000 | 0 | 300 + 1 | .0000000 | 0 | 400 + 4 | .0000000 | 1 | 800 + 1 | .0000000 | 5 | 500 + 3 | .0000000 | 5 | 500 + 2 | .0000000 | 2400 | 100 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between floor(ow_sale.pn/ow_sale.vn) preceding and floor(ow_sale.vn+ow_sale.qty) following ); -- mvd 4,5,6,1,7->3; + vn | vn | to_char | prc | cn | qty | pn +----+----+-------------------+------+----+------+----- + 10 | 10 | .0000000 | 0 | 1 | 1 | 200 + 20 | 20 | .0000000 | 0 | 1 | 1 | 100 + 30 | 30 | 14.1421356 | 5 | 1 | 12 | 500 + 30 | 30 | 14.1421356 | 5 | 3 | 12 | 500 + 40 | 40 | .0000000 | 0 | 3 | 1 | 200 + 40 | 40 | .0000000 | 1 | 4 | 1 | 800 + 30 | 30 | .0000000 | 0 | 1 | 1 | 300 + 30 | 30 | .0000000 | 5 | 3 | 12 | 600 + 40 | 40 | .0000000 | 2400 | 2 | 1100 | 100 + 40 | 40 | .0000000 | 1 | 4 | 1 | 700 + 50 | 50 | 17.6776695 | 0 | 1 | 1 | 400 + 50 | 50 | 17.6776695 | 0 | 2 | 1 | 400 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc rows between floor(ow_sale.qty*ow_sale.prc) preceding and floor(ow_sale.prc) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc rows between floor(ow_sale.qty*ow_sale.prc) preceding and floor(ow_sale.prc) following ), +win2 as (partition by ow_sale.qty order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,5->6; 2,1->7; 3,5->8; 2->9; + qty | vn | dt | cn | pn | to_char | to_char | to_char | to_char +------+----+------------+----+-----+-------------------+-------------------+-------------------+------------------- + 1100 | 40 | 1401-01-01 | 2 | 100 | .0000000 | .0000000 | 2.0000000 | .0000000 + 1 | 10 | 1401-03-01 | 1 | 200 | .0000000 | 1.0000000 | 1.0000000 | 100.0000000 + 1 | 40 | 1401-04-01 | 3 | 200 | .0000000 | .2857143 | 3.0000000 | .0000000 + 1 | 20 | 1401-05-01 | 1 | 100 | .0000000 | .8571429 | 1.0000000 | 200.0000000 + 1 | 30 | 1401-05-02 | 1 | 300 | .0000000 | .7142857 | 1.0000000 | 100.0000000 + 1 | 50 | 1401-06-01 | 1 | 400 | .0000000 | .0000000 | 1.0000000 | 300.0000000 + 1 | 50 | 1401-06-01 | 2 | 400 | .0000000 | .0000000 | 2.0000000 | 300.0000000 + 12 | 30 | 1401-06-01 | 1 | 500 | 2.4397502 | .0000000 | 4.0000000 | 400.0000000 + 12 | 30 | 1401-06-01 | 3 | 500 | 2.4397502 | .0000000 | 4.0000000 | 400.0000000 + 12 | 30 | 1401-06-01 | 3 | 600 | 2.4397502 | .0000000 | 4.0000000 | 400.0000000 + 1 | 40 | 1401-06-01 | 4 | 700 | 2.3094011 | .2857143 | 4.0000000 | 400.0000000 + 1 | 40 | 1401-06-01 | 4 | 800 | .0000000 | .2857143 | 4.0000000 | 500.0000000 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between 8 preceding and unbounded following ); -- mvd 4,6,7,2->5; + qty | pn | qty | cn | to_char | dt | vn +------+-----+------+----+-------------------+------------+---- + 1 | 200 | 1 | 1 | .0000000 | 1401-03-01 | 10 + 12 | 600 | 12 | 3 | .0000000 | 1401-06-01 | 30 + 1 | 700 | 1 | 4 | .0000000 | 1401-06-01 | 40 + 1100 | 100 | 1100 | 2 | .0000000 | 1401-01-01 | 40 + 1 | 100 | 1 | 1 | .0000000 | 1401-05-01 | 20 + 1 | 200 | 1 | 3 | .0000000 | 1401-04-01 | 40 + 1 | 300 | 1 | 1 | .0000000 | 1401-05-02 | 30 + 1 | 400 | 1 | 1 | .0000000 | 1401-06-01 | 50 + 1 | 400 | 1 | 2 | .0000000 | 1401-06-01 | 50 + 12 | 500 | 12 | 1 | .0000000 | 1401-06-01 | 30 + 12 | 500 | 12 | 3 | .0000000 | 1401-06-01 | 30 + 1 | 800 | 1 | 4 | .0000000 | 1401-06-01 | 40 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows between 2 preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows between 2 preceding and unbounded following ); -- mvd 6,3->5; 6,3->7; + cn | qty | vn | pn | to_char | dt | to_char +----+------+----+-----+-------------------+------------+------------------- + 1 | 1 | 10 | 200 | .0000000 | 1401-03-01 | 10.0000000 + 1 | 1 | 30 | 300 | .0000000 | 1401-05-02 | 30.0000000 + 1 | 12 | 30 | 500 | .0000000 | 1401-06-01 | 360.0000000 + 3 | 12 | 30 | 500 | .0000000 | 1401-06-01 | 360.0000000 + 3 | 12 | 30 | 600 | .0000000 | 1401-06-01 | 360.0000000 + 4 | 1 | 40 | 700 | .0000000 | 1401-06-01 | 40.0000000 + 4 | 1 | 40 | 800 | .0000000 | 1401-06-01 | 40.0000000 + 1 | 1 | 50 | 400 | .0000000 | 1401-06-01 | 50.0000000 + 2 | 1 | 50 | 400 | .0000000 | 1401-06-01 | 50.0000000 + 2 | 1100 | 40 | 100 | .0000000 | 1401-01-01 | 44000.0000000 + 3 | 1 | 40 | 200 | .0000000 | 1401-04-01 | 40.0000000 + 1 | 1 | 20 | 100 | .0000000 | 1401-05-01 | 20.0000000 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc rows between current row and current row ); -- mvd 1,4,6,7->5; + cn | prc | cn | dt | to_char | vn | pn +----+------+----+------------+-------------------+----+----- + 3 | 0 | 3 | 1401-04-01 | .0000000 | 40 | 200 + 1 | 0 | 1 | 1401-05-01 | .0000000 | 20 | 100 + 2 | 0 | 2 | 1401-06-01 | .0000000 | 50 | 400 + 4 | 1 | 4 | 1401-06-01 | .0000000 | 40 | 700 + 4 | 1 | 4 | 1401-06-01 | .0000000 | 40 | 800 + 2 | 2400 | 2 | 1401-01-01 | .0000000 | 40 | 100 + 1 | 0 | 1 | 1401-03-01 | .0000000 | 10 | 200 + 1 | 0 | 1 | 1401-05-02 | .0000000 | 30 | 300 + 1 | 0 | 1 | 1401-06-01 | .0000000 | 50 | 400 + 1 | 5 | 1 | 1401-06-01 | .0000000 | 30 | 500 + 3 | 5 | 3 | 1401-06-01 | .0000000 | 30 | 500 + 3 | 5 | 3 | 1401-06-01 | .0000000 | 30 | 600 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between current row and current row ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.cn desc), +win4 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.vn asc); -- mvd 5,6,3,2->4; 2->7; 5->8; 6,10,2->9; + prc | pn | qty | to_char | cn | dt | to_char | to_char | to_char | vn +------+-----+------+-------------------+----+------------+-------------------+-------------------+-------------------+---- + 2400 | 100 | 1100 | .0000000 | 2 | 1401-01-01 | .1666667 | .0000000 | 1.0000000 | 40 + 0 | 200 | 1 | .0000000 | 1 | 1401-03-01 | .3333333 | 40.0000000 | 1.0000000 | 10 + 0 | 200 | 1 | .0000000 | 3 | 1401-04-01 | .3333333 | 20.0000000 | 1.0000000 | 40 + 0 | 100 | 1 | .0000000 | 1 | 1401-05-01 | .1666667 | 30.0000000 | 1.0000000 | 20 + 0 | 300 | 1 | .0000000 | 1 | 1401-05-02 | .4166667 | 50.0000000 | 1.0000000 | 30 + 0 | 400 | 1 | .0000000 | 1 | 1401-06-01 | .5833333 | 50.0000000 | 1.0000000 | 50 + 0 | 400 | 1 | .0000000 | 2 | 1401-06-01 | .5833333 | 30.0000000 | 1.0000000 | 50 + 5 | 500 | 12 | .0000000 | 1 | 1401-06-01 | .7500000 | .0000000 | 1.0000000 | 30 + 5 | 500 | 12 | .0000000 | 3 | 1401-06-01 | .7500000 | .0000000 | 1.0000000 | 30 + 5 | 600 | 12 | .0000000 | 3 | 1401-06-01 | .8333333 | .0000000 | 1.0000000 | 30 + 1 | 700 | 1 | .0000000 | 4 | 1401-06-01 | .9166667 | 40.0000000 | 1.0000000 | 40 + 1 | 800 | 1 | .0000000 | 4 | 1401-06-01 | 1.0000000 | .0000000 | 1.0000000 | 40 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between current row and 4 following ); -- mvd 2,6,4->5; + qty | cn | qty | pn | to_char | vn +------+----+------+-----+-------------------+---- + 1 | 1 | 1 | 300 | .0000000 | 30 + 12 | 1 | 12 | 500 | .0000000 | 30 + 12 | 3 | 12 | 500 | .0000000 | 30 + 1 | 4 | 1 | 800 | .0000000 | 40 + 1 | 1 | 1 | 400 | .0000000 | 50 + 1 | 2 | 1 | 400 | .0000000 | 50 + 1 | 1 | 1 | 200 | .0000000 | 10 + 1 | 1 | 1 | 100 | .0000000 | 20 + 12 | 3 | 12 | 600 | .0000000 | 30 + 1100 | 2 | 1100 | 100 | .0000000 | 40 + 1 | 3 | 1 | 200 | .0000000 | 40 + 1 | 4 | 1 | 700 | .0000000 | 40 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.vn+ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows between current row and 1 following ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc); -- mvd 4,5,1->3; 4,5,1->6; 8->7; 5,1,10,11->9; 5,1,10,11->12; 4,5,1->13; + vn | vn | to_char | prc | dt | to_char | to_char | cn | to_char | qty | pn | to_char | to_char +----+----+-------------------+------+------------+-------------------+-------------------+----+-------------------+------+-----+-------------------+------------------- + 40 | 40 | .0000000 | 1 | 1401-06-01 | 4.0000000 | .0000000 | 4 | .0000000 | 1 | 700 | 1.0000000 | 2.0000000 + 40 | 40 | .0000000 | 1 | 1401-06-01 | 4.0000000 | .0000000 | 4 | .0000000 | 1 | 800 | 1.0000000 | 1.0000000 + 40 | 40 | .0000000 | 0 | 1401-04-01 | 3.0000000 | .1818182 | 3 | .0000000 | 1 | 200 | 1.0000000 | 1.0000000 + 30 | 30 | .0000000 | 5 | 1401-06-01 | 3.0000000 | .1818182 | 3 | .0000000 | 12 | 500 | 2.0000000 | 2.0000000 + 30 | 30 | .0000000 | 5 | 1401-06-01 | 3.0000000 | .1818182 | 3 | .0000000 | 12 | 600 | 1.0000000 | 1.0000000 + 50 | 50 | .0000000 | 0 | 1401-06-01 | 2.0000000 | .4545455 | 2 | .0000000 | 1 | 400 | 2.0000000 | 1.0000000 + 40 | 40 | .0000000 | 2400 | 1401-01-01 | 2.0000000 | .4545455 | 2 | .0000000 | 1100 | 100 | 1.0000000 | 1.0000000 + 20 | 20 | .0000000 | 0 | 1401-05-01 | 1.0000000 | .6363636 | 1 | .0000000 | 1 | 100 | 1.0000000 | 1.0000000 + 30 | 30 | 1.4142136 | 5 | 1401-06-01 | 1.0000000 | .6363636 | 1 | .0000000 | 12 | 500 | 1.0000000 | 2.0000000 + 10 | 10 | .0000000 | 0 | 1401-03-01 | 1.0000000 | .6363636 | 1 | .0000000 | 1 | 200 | 1.0000000 | 1.0000000 + 50 | 50 | .7071068 | 0 | 1401-06-01 | 1.0000000 | .6363636 | 1 | .0000000 | 1 | 400 | 1.0000000 | 2.0000000 + 30 | 30 | .0000000 | 0 | 1401-05-02 | 1.0000000 | .6363636 | 1 | .0000000 | 1 | 300 | 1.0000000 | 1.0000000 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc rows between current row and unbounded following ); -- mvd 1,5,6->4; + cn | cn | cn | to_char | dt | qty +----+----+----+-------------------+------------+------ + 3 | 3 | 3 | .0000000 | 1401-04-01 | 1 + 1 | 1 | 1 | .0000000 | 1401-05-01 | 1 + 2 | 2 | 2 | .0000000 | 1401-06-01 | 1 + 4 | 4 | 4 | .0000000 | 1401-06-01 | 1 + 4 | 4 | 4 | .0000000 | 1401-06-01 | 1 + 1 | 1 | 1 | .0000000 | 1401-06-01 | 12 + 3 | 3 | 3 | .0000000 | 1401-06-01 | 12 + 3 | 3 | 3 | .0000000 | 1401-06-01 | 12 + 2 | 2 | 2 | .0000000 | 1401-01-01 | 1100 + 1 | 1 | 1 | .0000000 | 1401-03-01 | 1 + 1 | 1 | 1 | .0000000 | 1401-05-02 | 1 + 1 | 1 | 1 | .0000000 | 1401-06-01 | 1 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc), +win4 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,5,6,7->4; 5->8; 5->9; 3,5,6,7->10; + qty | qty | prc | to_char | cn | dt | pn | to_char | to_char | to_char +------+------+------+-------------------+----+------------+-----+-------------------+-------------------+------------------- + 1 | 1 | 1 | .0000000 | 4 | 1401-06-01 | 800 | .0000000 | .0000000 | .0000000 + 1 | 1 | 1 | .0000000 | 4 | 1401-06-01 | 700 | .0000000 | .0000000 | .0000000 + 12 | 12 | 5 | .0000000 | 3 | 1401-06-01 | 500 | .1818182 | .0000000 | .0000000 + 1 | 1 | 0 | .0000000 | 3 | 1401-04-01 | 200 | .1818182 | .0000000 | .0000000 + 12 | 12 | 5 | .0000000 | 3 | 1401-06-01 | 600 | .1818182 | .0000000 | .0000000 + 1 | 1 | 0 | .0000000 | 2 | 1401-06-01 | 400 | .4545455 | .0000000 | .0000000 + 1100 | 1100 | 2400 | .0000000 | 2 | 1401-01-01 | 100 | .4545455 | .0000000 | .0000000 + 12 | 12 | 5 | 1.4142136 | 1 | 1401-06-01 | 500 | .6363636 | .0000000 | .0000000 + 1 | 1 | 0 | .7071068 | 1 | 1401-06-01 | 400 | .6363636 | .0000000 | .0000000 + 1 | 1 | 0 | .0000000 | 1 | 1401-05-02 | 300 | .6363636 | .0000000 | .0000000 + 1 | 1 | 0 | .0000000 | 1 | 1401-05-01 | 100 | .6363636 | .0000000 | .0000000 + 1 | 1 | 0 | .0000000 | 1 | 1401-03-01 | 200 | .6363636 | .0000000 | .0000000 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.prc)) OVER(partition by ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.pn) following and floor(ow_sale.pn+ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(partition by ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.pn) following and floor(ow_sale.pn+ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.pn) following and floor(ow_sale.pn+ow_sale.qty) following ); -- mvd 6,7,8->5; 6,7,8->9; 6,7,8->10; 6,7,8->11; + vn | cn | cn | vn | to_char | dt | qty | pn | to_char | to_char | to_char +----+----+----+----+-------------------+------------+------+-----+-------------------+-------------------+------------------- + 40 | 3 | 3 | 40 | .0000000 | 1401-04-01 | 1 | 200 | .0000000 | .0000000 | .0000000 + 20 | 1 | 1 | 20 | .0000000 | 1401-05-01 | 1 | 100 | .0000000 | .0000000 | .0000000 + 30 | 1 | 1 | 30 | .0000000 | 1401-06-01 | 12 | 500 | .0000000 | .0000000 | .0000000 + 30 | 3 | 3 | 30 | .0000000 | 1401-06-01 | 12 | 500 | .0000000 | .0000000 | .0000000 + 30 | 3 | 3 | 30 | .0000000 | 1401-06-01 | 12 | 600 | .0000000 | .0000000 | .0000000 + 10 | 1 | 1 | 10 | .0000000 | 1401-03-01 | 1 | 200 | .0000000 | .0000000 | .0000000 + 30 | 1 | 1 | 30 | .0000000 | 1401-05-02 | 1 | 300 | .0000000 | .0000000 | .0000000 + 50 | 1 | 1 | 50 | .0000000 | 1401-06-01 | 1 | 400 | .0000000 | .0000000 | .0000000 + 50 | 2 | 2 | 50 | .0000000 | 1401-06-01 | 1 | 400 | .0000000 | .0000000 | .0000000 + 40 | 4 | 4 | 40 | .0000000 | 1401-06-01 | 1 | 700 | .0000000 | .0000000 | .0000000 + 40 | 4 | 4 | 40 | .0000000 | 1401-06-01 | 1 | 800 | .0000000 | .0000000 | .0000000 + 40 | 2 | 2 | 40 | .0000000 | 1401-01-01 | 1100 | 100 | .0000000 | .0000000 | .0000000 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc rows between 9 following and unbounded following ); -- mvd 4,5,1->3; + pn | qty | to_char | dt | cn +-----+------+-------------------+------------+---- + 100 | 1 | .0000000 | 1401-05-01 | 1 + 400 | 1 | .0000000 | 1401-06-01 | 2 + 200 | 1 | .0000000 | 1401-04-01 | 3 + 700 | 1 | .0000000 | 1401-06-01 | 4 + 800 | 1 | .0000000 | 1401-06-01 | 4 + 200 | 1 | .0000000 | 1401-03-01 | 1 + 300 | 1 | .0000000 | 1401-05-02 | 1 + 400 | 1 | .0000000 | 1401-06-01 | 1 + 500 | 12 | .0000000 | 1401-06-01 | 1 + 100 | 1100 | .0000000 | 1401-01-01 | 2 + 500 | 12 | .0000000 | 1401-06-01 | 3 + 600 | 12 | .0000000 | 1401-06-01 | 3 +(12 rows) + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between floor(ow_sale.pn*ow_sale.cn) following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 2,3->5; 4->6; 2,3->7; + prc | vn | pn | cn | to_char | to_char | to_char +------+----+-----+----+-------------------+-------------------+------------------- + 2400 | 40 | 100 | 2 | .0000000 | .0000000 | .0000000 + 0 | 10 | 200 | 1 | .0000000 | 40.0000000 | .0000000 + 0 | 40 | 200 | 3 | .0000000 | .0000000 | .0000000 + 0 | 20 | 100 | 1 | .0000000 | 40.0000000 | .0000000 + 0 | 30 | 300 | 1 | .0000000 | 20.0000000 | .0000000 + 0 | 50 | 400 | 1 | .0000000 | 30.0000000 | .0000000 + 0 | 50 | 400 | 2 | .0000000 | 30.0000000 | .0000000 + 5 | 30 | 500 | 1 | .0000000 | 50.0000000 | .0000000 + 5 | 30 | 500 | 3 | .0000000 | 50.0000000 | .0000000 + 5 | 30 | 600 | 3 | .0000000 | 50.0000000 | .0000000 + 1 | 40 | 700 | 4 | .0000000 | 50.0000000 | .0000000 + 1 | 40 | 800 | 4 | .0000000 | 30.0000000 | .0000000 +(12 rows) + +-- SUM() function with NULL OVER() clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (); -- mvd 2->2; + pn | to_char +-----+------------------- + 200 | 2417.0000000 + 200 | 2417.0000000 + 100 | 2417.0000000 + 400 | 2417.0000000 + 600 | 2417.0000000 + 800 | 2417.0000000 + 100 | 2417.0000000 + 300 | 2417.0000000 + 400 | 2417.0000000 + 500 | 2417.0000000 + 500 | 2417.0000000 + 700 | 2417.0000000 +(12 rows) + +-- SUM() function with NULL OVER() clause in combination with other window functions -- +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.vn)) OVER(),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.prc order by ow_sale.pn desc), +win3 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.pn desc), +win4 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.vn asc); -- mvd 3->3; 2,5,6,7,1,8->4; 3->9; 7,8->10; 3->11; 5,6,1,8->12; + vn | prc | to_char | to_char | cn | dt | qty | pn | to_char | to_char | to_char | to_char +----+------+-------------------+-------------------+----+------------+------+-----+-------------------+-------------------+-------------------+------------------- + 30 | 5 | 940.0000000 | 1.0000000 | 1 | 1401-06-01 | 12 | 500 | 11.0000000 | .0000000 | 12.0000000 | .0000000 + 30 | 5 | 940.0000000 | 2.0000000 | 3 | 1401-06-01 | 12 | 500 | 11.0000000 | .0000000 | 12.0000000 | .0000000 + 30 | 5 | 940.0000000 | 1.0000000 | 3 | 1401-06-01 | 12 | 600 | 11.0000000 | .0000000 | 12.0000000 | .0000000 + 40 | 2400 | 940.0000000 | 1.0000000 | 2 | 1401-01-01 | 1100 | 100 | 11.0000000 | .0000000 | 12.0000000 | .0000000 + 10 | 0 | 940.0000000 | 1.0000000 | 1 | 1401-03-01 | 1 | 200 | 11.0000000 | .0000000 | 12.0000000 | .0000000 + 40 | 0 | 940.0000000 | 1.0000000 | 3 | 1401-04-01 | 1 | 200 | 11.0000000 | 1.0000000 | 12.0000000 | .0000000 + 20 | 0 | 940.0000000 | 1.0000000 | 1 | 1401-05-01 | 1 | 100 | 11.0000000 | 1.0000000 | 12.0000000 | .0000000 + 30 | 0 | 940.0000000 | 1.0000000 | 1 | 1401-05-02 | 1 | 300 | 11.0000000 | 1.0000000 | 12.0000000 | .0000000 + 50 | 0 | 940.0000000 | 1.0000000 | 1 | 1401-06-01 | 1 | 400 | 11.0000000 | 1.0000000 | 12.0000000 | .0000000 + 50 | 0 | 940.0000000 | 1.0000000 | 2 | 1401-06-01 | 1 | 400 | 11.0000000 | 1.0000000 | 12.0000000 | .0000000 + 40 | 1 | 940.0000000 | 2.0000000 | 4 | 1401-06-01 | 1 | 700 | 11.0000000 | 1.0000000 | 12.0000000 | .0000000 + 40 | 1 | 940.0000000 | 1.0000000 | 4 | 1401-06-01 | 1 | 800 | 11.0000000 | 1.0000000 | 12.0000000 | .0000000 +(12 rows) + +-- SUM() function with OVER() clause having ONLY PARTITION BY -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn); -- mvd 3,4->2; + pn | to_char | dt | vn +-----+-------------------+------------+---- + 100 | -80.0000000 | 1401-05-01 | 20 + 100 | -60.0000000 | 1401-01-01 | 40 + 200 | -160.0000000 | 1401-04-01 | 40 + 200 | -190.0000000 | 1401-03-01 | 10 + 300 | -270.0000000 | 1401-05-02 | 30 + 500 | -1510.0000000 | 1401-06-01 | 30 + 600 | -1510.0000000 | 1401-06-01 | 30 + 500 | -1510.0000000 | 1401-06-01 | 30 + 800 | -1420.0000000 | 1401-06-01 | 40 + 700 | -1420.0000000 | 1401-06-01 | 40 + 400 | -700.0000000 | 1401-06-01 | 50 + 400 | -700.0000000 | 1401-06-01 | 50 +(12 rows) + +-- SUM() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.dt,ow_sale.dt order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc), +win2 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.cn asc); -- mvd 3->2; 1,5->4; 3->6; 1,5->7; + cn | to_char | prc | to_char | dt | to_char | to_char +----+-------------------+------+-------------------+------------+-------------------+------------------- + 4 | 8.0000000 | 1 | .8333333 | 1401-06-01 | 2.0000000 | 1.0000000 + 4 | 8.0000000 | 1 | .8333333 | 1401-06-01 | 2.0000000 | 1.0000000 + 1 | 9.0000000 | 0 | .0000000 | 1401-03-01 | 6.0000000 | 1.0000000 + 1 | 9.0000000 | 0 | .0000000 | 1401-05-02 | 6.0000000 | 1.0000000 + 1 | 9.0000000 | 0 | .0000000 | 1401-06-01 | 6.0000000 | .2857143 + 2 | 9.0000000 | 0 | .3333333 | 1401-06-01 | 6.0000000 | .4285714 + 3 | 9.0000000 | 0 | .0000000 | 1401-04-01 | 6.0000000 | 1.0000000 + 1 | 9.0000000 | 0 | .0000000 | 1401-05-01 | 6.0000000 | 1.0000000 + 1 | 7.0000000 | 5 | .0000000 | 1401-06-01 | 3.0000000 | .2857143 + 3 | 7.0000000 | 5 | .5000000 | 1401-06-01 | 3.0000000 | .7142857 + 3 | 7.0000000 | 5 | .5000000 | 1401-06-01 | 3.0000000 | .7142857 + 2 | 2.0000000 | 2400 | .0000000 | 1401-01-01 | 1.0000000 | 1.0000000 +(12 rows) + +-- SUM() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc,ow_sale.vn asc,ow_sale.cn asc); -- mvd 1,3,4->2; + cn | to_char | vn | pn +----+-------------------+----+----- + 4 | 800.0000000 | 40 | 800 + 4 | 1500.0000000 | 40 | 700 + 3 | 2100.0000000 | 30 | 600 + 1 | 2600.0000000 | 30 | 500 + 3 | 3100.0000000 | 30 | 500 + 1 | 3500.0000000 | 50 | 400 + 2 | 3900.0000000 | 50 | 400 + 1 | 4200.0000000 | 30 | 300 + 1 | 4400.0000000 | 10 | 200 + 3 | 4600.0000000 | 40 | 200 + 1 | 4700.0000000 | 20 | 100 + 2 | 4800.0000000 | 40 | 100 +(12 rows) + +-- SUM() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(order by ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn desc); -- mvd 1,3,4->2; 1,3,4->5; 1,3,4->6; 1,3,4->7; 1,3,4->8; 1,3,4->9; + cn | to_char | vn | pn | to_char | to_char | to_char | to_char | to_char +----+-------------------+----+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 4 | -799.0000000 | 40 | 800 | .0000000 | 1.0000000 | 1.0000000 | 4.0000000 | 1.0000000 + 4 | -1498.0000000 | 40 | 700 | .0909091 | 2.0000000 | 2.0000000 | 4.0000000 | 2.0000000 + 3 | -1698.0000000 | 40 | 200 | .1818182 | 3.0000000 | 3.0000000 | 3.0000000 | 3.0000000 + 3 | -2293.0000000 | 30 | 600 | .2727273 | 4.0000000 | 4.0000000 | 3.0000000 | 4.0000000 + 3 | -2788.0000000 | 30 | 500 | .3636364 | 5.0000000 | 5.0000000 | 3.0000000 | 5.0000000 + 2 | -3188.0000000 | 50 | 400 | .4545455 | 6.0000000 | 6.0000000 | 2.0000000 | 6.0000000 + 2 | -888.0000000 | 40 | 100 | .5454545 | 7.0000000 | 7.0000000 | 2.0000000 | 7.0000000 + 1 | -1288.0000000 | 50 | 400 | .6363636 | 8.0000000 | 8.0000000 | 1.0000000 | 8.0000000 + 1 | -1783.0000000 | 30 | 500 | .7272727 | 9.0000000 | 9.0000000 | 1.0000000 | 9.0000000 + 1 | -2083.0000000 | 30 | 300 | .8181818 | 10.0000000 | 10.0000000 | 1.0000000 | 10.0000000 + 1 | -2183.0000000 | 20 | 100 | .9090909 | 11.0000000 | 11.0000000 | 1.0000000 | 11.0000000 + 1 | -2383.0000000 | 10 | 200 | 1.0000000 | 12.0000000 | 12.0000000 | 1.0000000 | 12.0000000 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range unbounded preceding ); -- mvd 3->5; + qty | cn | pn | qty | to_char +------+----+-----+------+------------------- + 1 | 1 | 100 | 1 | 2000.0000000 + 1100 | 2 | 100 | 1100 | 2000.0000000 + 1 | 1 | 200 | 1 | 3700.0000000 + 1 | 3 | 200 | 1 | 3700.0000000 + 1 | 1 | 300 | 1 | 4600.0000000 + 1 | 1 | 400 | 1 | 9600.0000000 + 1 | 2 | 400 | 1 | 9600.0000000 + 12 | 1 | 500 | 12 | 11400.0000000 + 12 | 3 | 500 | 12 | 11400.0000000 + 12 | 3 | 600 | 12 | 12300.0000000 + 1 | 4 | 700 | 1 | 13900.0000000 + 1 | 4 | 800 | 1 | 15500.0000000 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.pn)) OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range unbounded preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 3->4; 6->5; 6->7; + vn | dt | pn | to_char | to_char | cn | to_char +----+------------+-----+-------------------+-------------------+----+------------------- + 40 | 1401-06-01 | 700 | 2.0000000 | .1666667 | 4 | 701.0000000 + 40 | 1401-06-01 | 800 | 1.0000000 | .1666667 | 4 | 701.0000000 + 40 | 1401-04-01 | 200 | 17.0000000 | .4166667 | 3 | 201.0000000 + 30 | 1401-06-01 | 600 | 7.0000000 | .4166667 | 3 | 201.0000000 + 30 | 1401-06-01 | 500 | 17.0000000 | .4166667 | 3 | 201.0000000 + 40 | 1401-01-01 | 100 | 2417.0000000 | .5833333 | 2 | 201.0000000 + 50 | 1401-06-01 | 400 | 17.0000000 | .5833333 | 2 | 201.0000000 + 30 | 1401-05-02 | 300 | 17.0000000 | 1.0000000 | 1 | 101.0000000 + 10 | 1401-03-01 | 200 | 17.0000000 | 1.0000000 | 1 | 101.0000000 + 50 | 1401-06-01 | 400 | 17.0000000 | 1.0000000 | 1 | 101.0000000 + 20 | 1401-05-01 | 100 | 2417.0000000 | 1.0000000 | 1 | 101.0000000 + 30 | 1401-06-01 | 500 | 17.0000000 | 1.0000000 | 1 | 101.0000000 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range 2 preceding ); -- mvd 3->2; + qty | to_char | cn +------+-------------------+---- + 1 | 60000.0000000 | 4 + 1 | 60000.0000000 | 4 + 12 | 101000.0000000 | 3 + 1 | 101000.0000000 | 3 + 12 | 101000.0000000 | 3 + 1 | 125000.0000000 | 2 + 1100 | 125000.0000000 | 2 + 1 | 113000.0000000 | 1 + 1 | 113000.0000000 | 1 + 12 | 113000.0000000 | 1 + 1 | 113000.0000000 | 1 + 1 | 113000.0000000 | 1 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn+ow_sale.vn) as int),cast (floor(ow_sale.qty*ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range 2 preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 3->2; 5->4; 5->6; + qty | to_char | cn | to_char | pn | to_char +------+-------------------+----+-------------------+-----+------------------- + 1100 | 2414.0000000 | 2 | .0000000 | 100 | .0000000 + 1 | 10.0000000 | 1 | 80.0000000 | 200 | .0909091 + 1 | 2433.0000000 | 3 | 40.0000000 | 200 | .1818182 + 1 | 10.0000000 | 1 | 60.0000000 | 100 | .2727273 + 1 | 10.0000000 | 1 | 100.0000000 | 300 | .3636364 + 1 | 10.0000000 | 1 | 100.0000000 | 400 | .4545455 + 1 | 2414.0000000 | 2 | 60.0000000 | 400 | .5454545 + 12 | 10.0000000 | 1 | .0000000 | 500 | .6363636 + 12 | 2433.0000000 | 3 | .0000000 | 500 | .7272727 + 12 | 2433.0000000 | 3 | .0000000 | 600 | .8181818 + 1 | 2433.0000000 | 4 | 80.0000000 | 700 | .9090909 + 1 | 2433.0000000 | 4 | .0000000 | 800 | 1.0000000 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ); -- mvd 4->3; + dt | pn | to_char | cn +------------+-----+-------------------+---- + 1401-06-01 | 800 | 2.0000000 | 4 + 1401-06-01 | 700 | 2.0000000 | 4 + 1401-06-01 | 500 | 10.0000000 | 3 + 1401-04-01 | 200 | 10.0000000 | 3 + 1401-06-01 | 600 | 10.0000000 | 3 + 1401-06-01 | 400 | 2400.0000000 | 2 + 1401-01-01 | 100 | 2400.0000000 | 2 + 1401-05-02 | 300 | 5.0000000 | 1 + 1401-06-01 | 400 | 5.0000000 | 1 + 1401-06-01 | 500 | 5.0000000 | 1 + 1401-03-01 | 200 | 5.0000000 | 1 + 1401-05-01 | 100 | 5.0000000 | 1 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.cn) preceding ); -- mvd 6->5; + qty | qty | pn | dt | to_char | cn +------+------+-----+------------+-------------------+---- + 1 | 1 | 200 | 1401-03-01 | .0000000 | 1 + 1 | 1 | 100 | 1401-05-01 | .0000000 | 1 + 1 | 1 | 300 | 1401-05-02 | .0000000 | 1 + 1 | 1 | 400 | 1401-06-01 | .0000000 | 1 + 12 | 12 | 500 | 1401-06-01 | .0000000 | 1 + 1100 | 1100 | 100 | 1401-01-01 | .0000000 | 2 + 1 | 1 | 400 | 1401-06-01 | .0000000 | 2 + 1 | 1 | 200 | 1401-04-01 | .0000000 | 3 + 12 | 12 | 600 | 1401-06-01 | .0000000 | 3 + 12 | 12 | 500 | 1401-06-01 | .0000000 | 3 + 1 | 1 | 700 | 1401-06-01 | .0000000 | 4 + 1 | 1 | 800 | 1401-06-01 | .0000000 | 4 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.vn,ow_sale.vn order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and 2 preceding ), +win2 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.vn desc); -- mvd 2->5; 3->6; 3->7; 3->8; 3->9; + dt | cn | vn | vn | to_char | to_char | to_char | to_char | to_char +------------+----+----+----+-------------------+-------------------+-------------------+-------------------+------------------- + 1401-06-01 | 4 | 40 | 40 | .0000000 | .0000000 | .0000000 | .0000000 | 1.0000000 + 1401-06-01 | 4 | 40 | 40 | .0000000 | .0000000 | .0000000 | .0000000 | 1.0000000 + 1401-06-01 | 3 | 30 | 30 | .0000000 | .0000000 | .0000000 | .0000000 | 1.0000000 + 1401-04-01 | 3 | 40 | 40 | .0000000 | .0000000 | .0000000 | .0000000 | 1.0000000 + 1401-06-01 | 3 | 30 | 30 | .0000000 | .0000000 | .0000000 | .0000000 | 1.0000000 + 1401-06-01 | 2 | 50 | 50 | 2.0000000 | .0000000 | .0000000 | .0000000 | 1.0000000 + 1401-01-01 | 2 | 40 | 40 | 2.0000000 | .0000000 | .0000000 | .0000000 | 1.0000000 + 1401-06-01 | 1 | 50 | 50 | 12.0000000 | .0000000 | .0000000 | .0000000 | 1.0000000 + 1401-05-01 | 1 | 20 | 20 | 12.0000000 | .0000000 | .0000000 | .0000000 | 1.0000000 + 1401-05-02 | 1 | 30 | 30 | 12.0000000 | .0000000 | .0000000 | .0000000 | 1.0000000 + 1401-06-01 | 1 | 30 | 30 | 12.0000000 | .0000000 | .0000000 | .0000000 | 1.0000000 + 1401-03-01 | 1 | 10 | 10 | 12.0000000 | .0000000 | .0000000 | .0000000 | 1.0000000 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and current row ); -- mvd 6->5; + vn | dt | prc | vn | to_char | pn +----+------------+------+----+-------------------+----- + 20 | 1401-05-01 | 0 | 20 | 60.0000000 | 100 + 40 | 1401-01-01 | 2400 | 40 | 60.0000000 | 100 + 10 | 1401-03-01 | 0 | 10 | 110.0000000 | 200 + 40 | 1401-04-01 | 0 | 40 | 110.0000000 | 200 + 30 | 1401-05-02 | 0 | 30 | 140.0000000 | 300 + 50 | 1401-06-01 | 0 | 50 | 240.0000000 | 400 + 50 | 1401-06-01 | 0 | 50 | 240.0000000 | 400 + 30 | 1401-06-01 | 5 | 30 | 300.0000000 | 500 + 30 | 1401-06-01 | 5 | 30 | 300.0000000 | 500 + 30 | 1401-06-01 | 5 | 30 | 330.0000000 | 600 + 40 | 1401-06-01 | 1 | 40 | 370.0000000 | 700 + 40 | 1401-06-01 | 1 | 40 | 410.0000000 | 800 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.prc-ow_sale.prc) following ); -- mvd 5->4; + prc | dt | vn | to_char | cn +------+------------+----+-------------------+---- + 1 | 1401-06-01 | 40 | 2.0000000 | 4 + 1 | 1401-06-01 | 40 | 2.0000000 | 4 + 5 | 1401-06-01 | 30 | 27.0000000 | 3 + 0 | 1401-04-01 | 40 | 27.0000000 | 3 + 5 | 1401-06-01 | 30 | 27.0000000 | 3 + 0 | 1401-06-01 | 50 | 1128.0000000 | 2 + 2400 | 1401-01-01 | 40 | 1128.0000000 | 2 + 0 | 1401-05-02 | 30 | 1144.0000000 | 1 + 0 | 1401-06-01 | 50 | 1144.0000000 | 1 + 5 | 1401-06-01 | 30 | 1144.0000000 | 1 + 0 | 1401-05-01 | 20 | 1144.0000000 | 1 + 0 | 1401-03-01 | 10 | 1144.0000000 | 1 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn*ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty/ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and 4 following ), +win2 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 7->6; 1,7->8; 2->9; 1,7->10; + dt | vn | vn | vn | prc | to_char | cn | to_char | to_char | to_char +------------+----+----+----+------+-------------------+----+-------------------+-------------------+------------------- + 1401-01-01 | 40 | 40 | 40 | 2400 | 4800.0000000 | 2 | .0000000 | .0000000 | 1.0000000 + 1401-03-01 | 10 | 10 | 10 | 0 | 4800.0000000 | 1 | .0000000 | 1.0000000 | 1.0000000 + 1401-04-01 | 40 | 40 | 40 | 0 | 4800.0000000 | 3 | .0000000 | .0000000 | 1.0000000 + 1401-05-01 | 20 | 20 | 20 | 0 | 4800.0000000 | 1 | .0000000 | 1.0000000 | 1.0000000 + 1401-05-02 | 30 | 30 | 30 | 0 | 4800.0000000 | 1 | .0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 50 | 50 | 50 | 0 | 4800.0000000 | 1 | .0000000 | 1.0000000 | .5000000 + 1401-06-01 | 50 | 50 | 50 | 0 | 4800.0000000 | 2 | .0000000 | .0000000 | 1.0000000 + 1401-06-01 | 30 | 30 | 30 | 5 | 4800.0000000 | 1 | .0000000 | .0000000 | 1.0000000 + 1401-06-01 | 30 | 30 | 30 | 5 | 4800.0000000 | 3 | .0000000 | .0000000 | .5000000 + 1401-06-01 | 30 | 30 | 30 | 5 | 4800.0000000 | 3 | .0000000 | .0000000 | 1.0000000 + 1401-06-01 | 40 | 40 | 40 | 1 | 4800.0000000 | 4 | .0000000 | .0000000 | .5000000 + 1401-06-01 | 40 | 40 | 40 | 1 | 4800.0000000 | 4 | .0000000 | .0000000 | 1.0000000 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and unbounded following ); -- mvd 4->3; + vn | cn | to_char | pn +----+----+-------------------+----- + 20 | 1 | 26.0000000 | 100 + 40 | 2 | 26.0000000 | 100 + 10 | 1 | 26.0000000 | 200 + 40 | 3 | 26.0000000 | 200 + 30 | 1 | 26.0000000 | 300 + 50 | 1 | 26.0000000 | 400 + 50 | 2 | 26.0000000 | 400 + 30 | 1 | 26.0000000 | 500 + 30 | 3 | 26.0000000 | 500 + 30 | 3 | 26.0000000 | 600 + 40 | 4 | 26.0000000 | 700 + 40 | 4 | 26.0000000 | 800 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.pn desc); -- mvd 3->2; 5->4; 5->6; 5->7; + dt | to_char | vn | to_char | pn | to_char | to_char +------------+-------------------+----+-------------------+-----+-------------------+------------------- + 1401-06-01 | 410.0000000 | 40 | 1.0000000 | 800 | 1.0000000 | 1.0000000 + 1401-06-01 | 410.0000000 | 40 | 2.0000000 | 700 | 2.0000000 | 2.0000000 + 1401-06-01 | 410.0000000 | 30 | 3.0000000 | 600 | 3.0000000 | 3.0000000 + 1401-06-01 | 410.0000000 | 30 | 4.0000000 | 500 | 4.0000000 | 4.0000000 + 1401-06-01 | 410.0000000 | 30 | 5.0000000 | 500 | 4.0000000 | 4.0000000 + 1401-06-01 | 410.0000000 | 50 | 6.0000000 | 400 | 5.0000000 | 5.0000000 + 1401-06-01 | 410.0000000 | 50 | 7.0000000 | 400 | 5.0000000 | 5.0000000 + 1401-05-02 | 410.0000000 | 30 | 8.0000000 | 300 | 6.0000000 | 6.0000000 + 1401-03-01 | 410.0000000 | 10 | 9.0000000 | 200 | 7.0000000 | 7.0000000 + 1401-04-01 | 410.0000000 | 40 | 10.0000000 | 200 | 7.0000000 | 7.0000000 + 1401-01-01 | 410.0000000 | 40 | 11.0000000 | 100 | 8.0000000 | 8.0000000 + 1401-05-01 | 410.0000000 | 20 | 12.0000000 | 100 | 8.0000000 | 8.0000000 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 2 preceding and floor(ow_sale.qty) preceding ); -- mvd 4->3; + vn | vn | to_char | cn +----+----+-------------------+---- + 20 | 20 | .0000000 | 1 + 10 | 10 | .0000000 | 1 + 30 | 30 | .0000000 | 1 + 50 | 50 | .0000000 | 1 + 30 | 30 | .0000000 | 1 + 40 | 40 | .0000000 | 2 + 50 | 50 | 5.0000000 | 2 + 40 | 40 | 9.0000000 | 3 + 30 | 30 | .0000000 | 3 + 30 | 30 | .0000000 | 3 + 40 | 40 | 13.0000000 | 4 + 40 | 40 | 13.0000000 | 4 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 3 preceding and floor(ow_sale.qty) preceding ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.pn desc), +win3 as (partition by ow_sale.vn order by ow_sale.vn desc); -- mvd 2->3; 5,6->4; 5->7; + qty | cn | to_char | to_char | vn | pn | to_char +------+----+-------------------+-------------------+----+-----+------------------- + 1 | 4 | .0000000 | .0000000 | 40 | 700 | 1.0000000 + 1 | 4 | .0000000 | .0000000 | 40 | 800 | 1.0000000 + 12 | 3 | .0000000 | .0000000 | 30 | 600 | 1.0000000 + 1 | 3 | 2.0000000 | .0000000 | 40 | 200 | 1.0000000 + 12 | 3 | .0000000 | .0000000 | 30 | 500 | 1.0000000 + 1 | 2 | 27.0000000 | .0000000 | 50 | 400 | 1.0000000 + 1100 | 2 | .0000000 | .0000000 | 40 | 100 | 1.0000000 + 1 | 1 | 1128.0000000 | .0000000 | 50 | 400 | 1.0000000 + 1 | 1 | 1128.0000000 | .0000000 | 20 | 100 | 1.0000000 + 1 | 1 | 1128.0000000 | .0000000 | 30 | 300 | 1.0000000 + 12 | 1 | .0000000 | .0000000 | 30 | 500 | 1.0000000 + 1 | 1 | 1128.0000000 | .0000000 | 10 | 200 | 1.0000000 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.cn+ow_sale.cn) preceding and current row ); -- mvd 3->2; + qty | to_char | pn +------+-------------------+----- + 1 | 2202.0000000 | 100 + 1100 | 2202.0000000 | 100 + 1 | 4.0000000 | 200 + 1 | 4.0000000 | 200 + 1 | 2.0000000 | 300 + 1 | 4.0000000 | 400 + 1 | 4.0000000 | 400 + 12 | 48.0000000 | 500 + 12 | 48.0000000 | 500 + 12 | 24.0000000 | 600 + 1 | 2.0000000 | 700 + 1 | 2.0000000 | 800 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 1 preceding and current row ), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.prc order by ow_sale.pn asc); -- mvd 7->6; 7->8; 10,3,7,2->9; 10,3,7,2->11; 10,3,13,2->12; 10,3,7,2->14; + qty | pn | cn | cn | qty | to_char | vn | to_char | to_char | prc | to_char | to_char | dt | to_char +------+-----+----+----+------+-------------------+----+-------------------+-------------------+------+-------------------+-------------------+------------+------------------- + 1 | 400 | 2 | 2 | 1 | 102.0000000 | 50 | 400.0000000 | .0000000 | 0 | 1.0000000 | .0000000 | 1401-06-01 | 1.0000000 + 1 | 400 | 1 | 1 | 1 | 102.0000000 | 50 | 400.0000000 | .0000000 | 0 | 1.0000000 | .0000000 | 1401-06-01 | 1.0000000 + 1100 | 100 | 2 | 2 | 1100 | 1263.0000000 | 40 | 800.0000000 | .0000000 | 2400 | 1100.0000000 | .0000000 | 1401-01-01 | 1.0000000 + 1 | 800 | 4 | 4 | 1 | 1263.0000000 | 40 | 800.0000000 | .0000000 | 1 | 1.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 1 | 200 | 3 | 3 | 1 | 1263.0000000 | 40 | 800.0000000 | .0000000 | 0 | 1.0000000 | .0000000 | 1401-04-01 | 1.0000000 + 1 | 700 | 4 | 4 | 1 | 1263.0000000 | 40 | 800.0000000 | .0000000 | 1 | 1.0000000 | .0000000 | 1401-06-01 | 1.0000000 + 12 | 600 | 3 | 3 | 12 | 157.0000000 | 30 | 600.0000000 | .0000000 | 5 | 12.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 1 | 300 | 1 | 1 | 1 | 157.0000000 | 30 | 600.0000000 | .0000000 | 0 | 1.0000000 | .0000000 | 1401-05-02 | 1.0000000 + 12 | 500 | 1 | 1 | 12 | 157.0000000 | 30 | 600.0000000 | .0000000 | 5 | 12.0000000 | .0000000 | 1401-06-01 | 1.0000000 + 12 | 500 | 3 | 3 | 12 | 157.0000000 | 30 | 600.0000000 | .0000000 | 5 | 12.0000000 | .0000000 | 1401-06-01 | 1.0000000 + 1 | 100 | 1 | 1 | 1 | 21.0000000 | 20 | 100.0000000 | .0000000 | 0 | 1.0000000 | .0000000 | 1401-05-01 | 1.0000000 + 1 | 200 | 1 | 1 | 1 | 11.0000000 | 10 | 200.0000000 | .0000000 | 0 | 1.0000000 | .0000000 | 1401-03-01 | 1.0000000 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.vn) preceding and 4 following ); -- mvd 5->4; + vn | qty | dt | to_char | cn +----+------+------------+-------------------+---- + 40 | 1 | 1401-06-01 | 4390.0000000 | 4 + 40 | 1 | 1401-06-01 | 4390.0000000 | 4 + 30 | 12 | 1401-06-01 | 4390.0000000 | 3 + 40 | 1 | 1401-04-01 | 4390.0000000 | 3 + 30 | 12 | 1401-06-01 | 4390.0000000 | 3 + 50 | 1 | 1401-06-01 | 4390.0000000 | 2 + 40 | 1100 | 1401-01-01 | 4390.0000000 | 2 + 30 | 1 | 1401-05-02 | 4390.0000000 | 1 + 50 | 1 | 1401-06-01 | 4390.0000000 | 1 + 30 | 12 | 1401-06-01 | 4390.0000000 | 1 + 10 | 1 | 1401-03-01 | 4390.0000000 | 1 + 20 | 1 | 1401-05-01 | 4390.0000000 | 1 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 3 preceding and unbounded following ); -- mvd 1->2; + pn | to_char +-----+------------------- + 100 | 4843.0000000 + 100 | 4843.0000000 + 200 | 43.0000000 + 200 | 43.0000000 + 300 | 43.0000000 + 400 | 43.0000000 + 400 | 43.0000000 + 500 | 43.0000000 + 500 | 43.0000000 + 600 | 23.0000000 + 700 | 8.0000000 + 800 | 4.0000000 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and current row ); -- mvd 4->5; + pn | pn | qty | cn | to_char +-----+-----+------+----+------------------- + 800 | 800 | 1 | 4 | 80.0000000 + 700 | 700 | 1 | 4 | 80.0000000 + 500 | 500 | 12 | 3 | 100.0000000 + 200 | 200 | 1 | 3 | 100.0000000 + 600 | 600 | 12 | 3 | 100.0000000 + 400 | 400 | 1 | 2 | 90.0000000 + 100 | 100 | 1100 | 2 | 90.0000000 + 300 | 300 | 1 | 1 | 140.0000000 + 400 | 400 | 1 | 1 | 140.0000000 + 500 | 500 | 12 | 1 | 140.0000000 + 100 | 100 | 1 | 1 | 140.0000000 + 200 | 200 | 1 | 1 | 140.0000000 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and current row ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 3->2; 5->4; 5->6; 5->7; + prc | to_char | vn | to_char | pn | to_char | to_char +------+-------------------+----+-------------------+-----+-------------------+------------------- + 2400 | 4804.0000000 | 40 | 1.0000000 | 100 | .1666667 | .0000000 + 0 | .0000000 | 10 | 2.0000000 | 200 | .3333333 | .0000000 + 0 | 4804.0000000 | 40 | 2.0000000 | 200 | .3333333 | .0000000 + 0 | .0000000 | 20 | 1.0000000 | 100 | .1666667 | .0000000 + 0 | 30.0000000 | 30 | 3.0000000 | 300 | .4166667 | .0000000 + 0 | .0000000 | 50 | 4.0000000 | 400 | .5833333 | .0000000 + 0 | .0000000 | 50 | 4.0000000 | 400 | .5833333 | .0000000 + 5 | 30.0000000 | 30 | 5.0000000 | 500 | .7500000 | .0000000 + 5 | 30.0000000 | 30 | 5.0000000 | 500 | .7500000 | .0000000 + 5 | 30.0000000 | 30 | 6.0000000 | 600 | .8333333 | .0000000 + 1 | 4804.0000000 | 40 | 7.0000000 | 700 | .9166667 | .0000000 + 1 | 4804.0000000 | 40 | 8.0000000 | 800 | 1.0000000 | .0000000 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and 4 following ); -- mvd 4->5; + pn | pn | pn | cn | to_char +-----+-----+-----+----+------------------- + 300 | 300 | 300 | 1 | 26.0000000 + 400 | 400 | 400 | 1 | 26.0000000 + 500 | 500 | 500 | 1 | 26.0000000 + 200 | 200 | 200 | 1 | 26.0000000 + 100 | 100 | 100 | 1 | 26.0000000 + 100 | 100 | 100 | 2 | 21.0000000 + 400 | 400 | 400 | 2 | 21.0000000 + 500 | 500 | 500 | 3 | 17.0000000 + 200 | 200 | 200 | 3 | 17.0000000 + 600 | 600 | 600 | 3 | 17.0000000 + 700 | 700 | 700 | 4 | 8.0000000 + 800 | 800 | 800 | 4 | 8.0000000 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.prc)) OVER(order by ow_sale.cn desc range between current row and floor(ow_sale.prc*ow_sale.prc) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and floor(ow_sale.prc*ow_sale.prc) following ); -- mvd 2->3; 2->4; 2->5; + qty | cn | to_char | to_char | to_char +------+----+-------------------+-------------------+------------------- + 1 | 4 | .0000000 | 3.0000000 | 5.0000000 + 1 | 4 | .0000000 | 3.0000000 | 5.0000000 + 12 | 3 | 24.0000000 | 3.0000000 | 10.0000000 + 12 | 3 | 24.0000000 | 3.0000000 | 10.0000000 + 1 | 3 | .0000000 | 3.0000000 | 3.0000000 + 1 | 2 | 24.0000000 | 2.0000000 | 2.0000000 + 1100 | 2 | 24.0000000 | 2.0000000 | 7.0000000 + 1 | 1 | .0000000 | 1.0000000 | 5.0000000 + 12 | 1 | .0000000 | 1.0000000 | 5.0000000 + 1 | 1 | .0000000 | 1.0000000 | 5.0000000 + 1 | 1 | .0000000 | 1.0000000 | 5.0000000 + 1 | 1 | .0000000 | 1.0000000 | 5.0000000 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and unbounded following ); -- mvd 4->5; + qty | prc | cn | pn | to_char +------+------+----+-----+------------------- + 1 | 1 | 4 | 800 | 4800.0000000 + 1 | 1 | 4 | 700 | 4000.0000000 + 12 | 5 | 3 | 600 | 3300.0000000 + 12 | 5 | 1 | 500 | 2700.0000000 + 12 | 5 | 3 | 500 | 2700.0000000 + 1 | 0 | 1 | 400 | 1700.0000000 + 1 | 0 | 2 | 400 | 1700.0000000 + 1 | 0 | 1 | 300 | 900.0000000 + 1 | 0 | 1 | 200 | 600.0000000 + 1 | 0 | 3 | 200 | 600.0000000 + 1 | 0 | 1 | 100 | 200.0000000 + 1100 | 2400 | 2 | 100 | 200.0000000 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.pn/ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and unbounded following ), +win2 as (partition by ow_sale.qty order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc), +win4 as (order by ow_sale.cn desc); -- mvd 3->2; 3,5->4; 7->6; 3,5->8; 3->9; + pn | to_char | cn | to_char | qty | to_char | vn | to_char | to_char +-----+-------------------+----+-------------------+------+-------------------+----+-------------------+------------------- + 100 | 2405.0000000 | 2 | 1.0000000 | 1100 | 2400.0000000 | 40 | 2500.0000000 | 3.0000000 + 200 | 5.0000000 | 1 | 1.0000000 | 1 | .0000000 | 10 | 801.0000000 | 4.0000000 + 200 | 2415.0000000 | 3 | .3750000 | 1 | .0000000 | 40 | 801.0000000 | 2.0000000 + 100 | 5.0000000 | 1 | 1.0000000 | 1 | .0000000 | 20 | 801.0000000 | 4.0000000 + 300 | 5.0000000 | 1 | 1.0000000 | 1 | .0000000 | 30 | 801.0000000 | 4.0000000 + 400 | 5.0000000 | 1 | 1.0000000 | 1 | .0000000 | 50 | 801.0000000 | 4.0000000 + 400 | 2405.0000000 | 2 | .5000000 | 1 | .0000000 | 50 | 801.0000000 | 3.0000000 + 500 | 5.0000000 | 1 | 1.0000000 | 12 | .0000000 | 30 | 605.0000000 | 4.0000000 + 500 | 2415.0000000 | 3 | .6666667 | 12 | .0000000 | 30 | 605.0000000 | 2.0000000 + 600 | 2415.0000000 | 3 | .6666667 | 12 | .0000000 | 30 | 605.0000000 | 2.0000000 + 700 | 2417.0000000 | 4 | .2500000 | 1 | .0000000 | 40 | 801.0000000 | 1.0000000 + 800 | 2417.0000000 | 4 | .2500000 | 1 | .0000000 | 40 | 801.0000000 | 1.0000000 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 0 following and 4 following ); -- mvd 3->6; + prc | qty | vn | vn | prc | to_char +------+------+----+----+------+------------------- + 0 | 1 | 50 | 50 | 0 | 3.0000000 + 0 | 1 | 50 | 50 | 0 | 3.0000000 + 2400 | 1100 | 40 | 40 | 2400 | 13.0000000 + 1 | 1 | 40 | 40 | 1 | 13.0000000 + 0 | 1 | 40 | 40 | 0 | 13.0000000 + 1 | 1 | 40 | 40 | 1 | 13.0000000 + 5 | 12 | 30 | 30 | 5 | 8.0000000 + 0 | 1 | 30 | 30 | 0 | 8.0000000 + 5 | 12 | 30 | 30 | 5 | 8.0000000 + 5 | 12 | 30 | 30 | 5 | 8.0000000 + 0 | 1 | 20 | 20 | 0 | 1.0000000 + 0 | 1 | 10 | 10 | 0 | 1.0000000 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn+ow_sale.pn)) OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 4 following and floor(ow_sale.pn) following ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.cn asc); -- mvd 3->6; 3->7; 5->8; 1->9; 5->10; + cn | cn | pn | prc | vn | to_char | to_char | to_char | to_char | to_char +----+----+-----+------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | 1 | 500 | 5 | 30 | 2400.0000000 | 7.0000000 | 3.0000000 | 1.0000000 | 10.0000000 + 1 | 1 | 300 | 0 | 30 | 2400.0000000 | 4.0000000 | 3.0000000 | 1.0000000 | 10.0000000 + 1 | 1 | 400 | 0 | 50 | 2400.0000000 | 5.0000000 | 1.0000000 | 1.0000000 | 2.0000000 + 1 | 1 | 200 | 0 | 10 | 2400.0000000 | 2.0000000 | 5.0000000 | 1.0000000 | 12.0000000 + 1 | 1 | 100 | 0 | 20 | .0000000 | .0000000 | 4.0000000 | 1.0000000 | 11.0000000 + 2 | 2 | 400 | 0 | 50 | 2400.0000000 | 5.0000000 | 1.0000000 | 2.0000000 | 2.0000000 + 2 | 2 | 100 | 2400 | 40 | .0000000 | .0000000 | 2.0000000 | 2.0000000 | 6.0000000 + 3 | 3 | 600 | 5 | 30 | 2410.0000000 | 9.0000000 | 3.0000000 | 3.0000000 | 10.0000000 + 3 | 3 | 500 | 5 | 30 | 2400.0000000 | 7.0000000 | 3.0000000 | 3.0000000 | 10.0000000 + 3 | 3 | 200 | 0 | 40 | 2400.0000000 | 2.0000000 | 2.0000000 | 3.0000000 | 6.0000000 + 4 | 4 | 800 | 1 | 40 | 2416.0000000 | 11.0000000 | 2.0000000 | 4.0000000 | 6.0000000 + 4 | 4 | 700 | 1 | 40 | 2415.0000000 | 10.0000000 | 2.0000000 | 4.0000000 | 6.0000000 +(12 rows) + +-- SUM() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.qty*ow_sale.cn) following and unbounded following ); -- mvd 4->3; + vn | pn | to_char | cn +----+-----+-------------------+---- + 40 | 800 | .0000000 | 4 + 40 | 700 | .0000000 | 4 + 30 | 500 | .0000000 | 3 + 40 | 200 | .0000000 | 3 + 30 | 600 | .0000000 | 3 + 50 | 400 | .0000000 | 2 + 40 | 100 | .0000000 | 2 + 30 | 300 | .0000000 | 1 + 50 | 400 | .0000000 | 1 + 30 | 500 | .0000000 | 1 + 10 | 200 | .0000000 | 1 + 20 | 100 | .0000000 | 1 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.pn desc rows unbounded preceding ); -- mvd 3,4->6; + dt | qty | cn | pn | qty | to_char +------------+------+----+-----+------+------------------- + 1401-01-01 | 1100 | 2 | 100 | 1100 | 2.0000000 + 1401-03-01 | 1 | 1 | 200 | 1 | 3.0000000 + 1401-04-01 | 1 | 3 | 200 | 1 | 6.0000000 + 1401-05-01 | 1 | 1 | 100 | 1 | 7.0000000 + 1401-05-02 | 1 | 1 | 300 | 1 | 8.0000000 + 1401-06-01 | 1 | 1 | 400 | 1 | 9.0000000 + 1401-06-01 | 1 | 2 | 400 | 1 | 11.0000000 + 1401-06-01 | 12 | 1 | 500 | 12 | 12.0000000 + 1401-06-01 | 12 | 3 | 500 | 12 | 15.0000000 + 1401-06-01 | 12 | 3 | 600 | 12 | 18.0000000 + 1401-06-01 | 1 | 4 | 700 | 1 | 22.0000000 + 1401-06-01 | 1 | 4 | 800 | 1 | 26.0000000 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn*ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows unbounded preceding ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.cn desc); -- mvd 1,4->3; 1,6,4->5; 1,6,4->7; + cn | prc | to_char | pn | to_char | vn | to_char +----+------+-------------------+-----+-------------------+----+------------------- + 2 | 2400 | .0000000 | 100 | .0000000 | 40 | 80.0000000 + 1 | 0 | .0000000 | 200 | .0000000 | 10 | 10.0000000 + 3 | 0 | .0000000 | 200 | .0000000 | 40 | 120.0000000 + 1 | 0 | .0000000 | 100 | .0000000 | 20 | 20.0000000 + 1 | 0 | .0000000 | 300 | .0000000 | 30 | 30.0000000 + 1 | 0 | .0000000 | 400 | .0000000 | 50 | 50.0000000 + 2 | 0 | .0000000 | 400 | .0000000 | 50 | 100.0000000 + 1 | 5 | .0000000 | 500 | .0000000 | 30 | 30.0000000 + 3 | 5 | .0000000 | 500 | .0000000 | 30 | 90.0000000 + 3 | 5 | .0000000 | 600 | .0000000 | 30 | 90.0000000 + 4 | 1 | .0000000 | 700 | .0000000 | 40 | 160.0000000 + 4 | 1 | .0000000 | 800 | .0000000 | 40 | 160.0000000 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows floor(ow_sale.qty) preceding ); -- mvd 6->5; + dt | cn | prc | vn | to_char | pn +------------+----+------+----+-------------------+----- + 1401-01-01 | 2 | 2400 | 40 | .0000000 | 100 + 1401-03-01 | 1 | 0 | 10 | 200.0000000 | 200 + 1401-04-01 | 3 | 0 | 40 | 400.0000000 | 200 + 1401-05-01 | 1 | 0 | 20 | 300.0000000 | 100 + 1401-05-02 | 1 | 0 | 30 | 400.0000000 | 300 + 1401-06-01 | 1 | 0 | 50 | 700.0000000 | 400 + 1401-06-01 | 2 | 0 | 50 | 800.0000000 | 400 + 1401-06-01 | 1 | 5 | 30 | 1641.0000000 | 500 + 1401-06-01 | 3 | 5 | 30 | 1682.0000000 | 500 + 1401-06-01 | 3 | 5 | 30 | 1732.0000000 | 600 + 1401-06-01 | 4 | 1 | 40 | 750.0000000 | 700 + 1401-06-01 | 4 | 1 | 40 | 1500.0000000 | 800 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows 1 preceding ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc); -- mvd 1,3->5; 1,3->6; 1,3->7; + vn | vn | pn | dt | to_char | to_char | to_char +----+----+-----+------------+-------------------+-------------------+------------------- + 40 | 40 | 100 | 1401-01-01 | 60.0000000 | .0000000 | 1.0000000 + 10 | 10 | 200 | 1401-03-01 | 250.0000000 | .0000000 | 1.0000000 + 40 | 40 | 200 | 1401-04-01 | 350.0000000 | .0000000 | 1.0000000 + 20 | 20 | 100 | 1401-05-01 | 240.0000000 | .0000000 | 1.0000000 + 30 | 30 | 300 | 1401-05-02 | 350.0000000 | .0000000 | 1.0000000 + 50 | 50 | 400 | 1401-06-01 | 620.0000000 | 2.0000000 | 1.0000000 + 50 | 50 | 400 | 1401-06-01 | 700.0000000 | .0000000 | 2.0000000 + 30 | 30 | 500 | 1401-06-01 | 820.0000000 | .0000000 | 1.0000000 + 30 | 30 | 500 | 1401-06-01 | 940.0000000 | .0000000 | 2.0000000 + 30 | 30 | 600 | 1401-06-01 | 1040.0000000 | .0000000 | 1.0000000 + 40 | 40 | 700 | 1401-06-01 | 1230.0000000 | .0000000 | 1.0000000 + 40 | 40 | 800 | 1401-06-01 | 1420.0000000 | .0000000 | 1.0000000 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.cn desc rows current row ); -- mvd 4,5->3; + vn | vn | to_char | cn | pn +----+----+-------------------+----+----- + 40 | 40 | 2.0000000 | 2 | 100 + 10 | 10 | 1.0000000 | 1 | 200 + 40 | 40 | 3.0000000 | 3 | 200 + 20 | 20 | 1.0000000 | 1 | 100 + 30 | 30 | 1.0000000 | 1 | 300 + 50 | 50 | 1.0000000 | 1 | 400 + 50 | 50 | 2.0000000 | 2 | 400 + 30 | 30 | 1.0000000 | 1 | 500 + 30 | 30 | 3.0000000 | 3 | 500 + 30 | 30 | 3.0000000 | 3 | 600 + 40 | 40 | 4.0000000 | 4 | 700 + 40 | 40 | 4.0000000 | 4 | 800 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows current row ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 6->5; 6,4,8->7; 8->9; + vn | qty | prc | dt | to_char | cn | to_char | pn | to_char +----+------+------+------------+-------------------+----+-------------------+-----+------------------- + 40 | 1100 | 2400 | 1401-01-01 | 3500.0000000 | 2 | 1.0000000 | 100 | .0000000 + 10 | 1 | 0 | 1401-03-01 | 1.0000000 | 1 | 1.0000000 | 200 | 40.0000000 + 40 | 1 | 0 | 1401-04-01 | 1.0000000 | 3 | 1.0000000 | 200 | .0000000 + 20 | 1 | 0 | 1401-05-01 | 1.0000000 | 1 | 1.0000000 | 100 | 40.0000000 + 30 | 1 | 0 | 1401-05-02 | 1.0000000 | 1 | 1.0000000 | 300 | 20.0000000 + 50 | 1 | 0 | 1401-06-01 | 1.0000000 | 1 | 1.0000000 | 400 | 30.0000000 + 50 | 1 | 0 | 1401-06-01 | 1.0000000 | 2 | 1.0000000 | 400 | 30.0000000 + 30 | 12 | 5 | 1401-06-01 | 17.0000000 | 1 | 1.0000000 | 500 | 10.0000000 + 30 | 12 | 5 | 1401-06-01 | 17.0000000 | 3 | 1.0000000 | 500 | 40.0000000 + 30 | 12 | 5 | 1401-06-01 | 17.0000000 | 3 | 1.0000000 | 600 | 10.0000000 + 40 | 1 | 1 | 1401-06-01 | 2.0000000 | 4 | 1.0000000 | 700 | 50.0000000 + 40 | 1 | 1 | 1401-06-01 | 2.0000000 | 4 | 1.0000000 | 800 | 50.0000000 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between unbounded preceding and floor(ow_sale.qty) preceding ); -- mvd 2->3; + qty | vn | to_char +------+----+------------------- + 1100 | 40 | .0000000 + 1 | 10 | 2440.0000000 + 1 | 40 | 2450.0000000 + 1 | 20 | 2490.0000000 + 1 | 30 | 2510.0000000 + 1 | 50 | 2540.0000000 + 1 | 50 | 2590.0000000 + 12 | 30 | .0000000 + 12 | 30 | .0000000 + 12 | 30 | .0000000 + 1 | 40 | 2745.0000000 + 1 | 40 | 2786.0000000 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.pn-ow_sale.pn) preceding ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.dt order by ow_sale.cn desc); -- mvd 3,5->4; 2,3,7,1->6; + pn | prc | cn | to_char | vn | to_char | dt +-----+------+----+-------------------+----+-------------------+------------ + 100 | 2400 | 2 | 40.0000000 | 40 | .0000000 | 1401-01-01 + 200 | 0 | 1 | 50.0000000 | 10 | .0000000 | 1401-03-01 + 200 | 0 | 3 | 90.0000000 | 40 | .0000000 | 1401-04-01 + 100 | 0 | 1 | 110.0000000 | 20 | .0000000 | 1401-05-01 + 300 | 0 | 1 | 140.0000000 | 30 | .0000000 | 1401-05-02 + 400 | 0 | 1 | 190.0000000 | 50 | 1.0000000 | 1401-06-01 + 400 | 0 | 2 | 240.0000000 | 50 | .0000000 | 1401-06-01 + 500 | 5 | 1 | 270.0000000 | 30 | 1.0000000 | 1401-06-01 + 500 | 5 | 3 | 300.0000000 | 30 | .0000000 | 1401-06-01 + 600 | 5 | 3 | 330.0000000 | 30 | .0000000 | 1401-06-01 + 700 | 1 | 4 | 370.0000000 | 40 | .0000000 | 1401-06-01 + 800 | 1 | 4 | 410.0000000 | 40 | .0000000 | 1401-06-01 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 3->2; + qty | to_char | cn +------+-------------------+---- + 1100 | 1100.0000000 | 2 + 1 | 1101.0000000 | 1 + 1 | 1102.0000000 | 3 + 1 | 1103.0000000 | 1 + 1 | 1104.0000000 | 1 + 1 | 1105.0000000 | 1 + 1 | 1106.0000000 | 2 + 12 | 1118.0000000 | 1 + 12 | 1130.0000000 | 3 + 12 | 1142.0000000 | 3 + 1 | 1143.0000000 | 4 + 1 | 1144.0000000 | 4 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty/ow_sale.pn) as int),cast (floor(ow_sale.prc+ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.vn desc); -- mvd 3->2; 3->4; 3->5; 7->6; 9,3->8; 3->10; + qty | to_char | pn | to_char | to_char | to_char | cn | to_char | vn | to_char +------+-------------------+-----+-------------------+-------------------+-------------------+----+-------------------+----+------------------- + 1 | 4800.0000000 | 800 | 12.0000000 | 10.0000000 | 1.0000000 | 4 | .0000000 | 40 | 1.0000000 + 1 | 4000.0000000 | 700 | 11.0000000 | 10.0000000 | 1.0000000 | 4 | .0000000 | 40 | 1.0000000 + 12 | 2700.0000000 | 500 | 9.0000000 | 10.0000000 | 2.0000000 | 3 | .0000000 | 30 | 1.0000000 + 1 | 500.0000000 | 200 | 3.0000000 | 10.0000000 | 2.0000000 | 3 | .0000000 | 40 | 1.0000000 + 12 | 3300.0000000 | 600 | 10.0000000 | 10.0000000 | 2.0000000 | 3 | .0000000 | 30 | 1.0000000 + 1 | 1700.0000000 | 400 | 7.0000000 | 10.0000000 | 3.0000000 | 2 | .0000000 | 50 | 1.0000000 + 1100 | 100.0000000 | 100 | 1.0000000 | 40.0000000 | 3.0000000 | 2 | .0000000 | 40 | 1100.0000000 + 12 | 2200.0000000 | 500 | 8.0000000 | 10.0000000 | 4.0000000 | 1 | .0000000 | 30 | 1.0000000 + 1 | 1300.0000000 | 400 | 6.0000000 | 10.0000000 | 4.0000000 | 1 | .0000000 | 50 | 1.0000000 + 1 | 900.0000000 | 300 | 5.0000000 | 10.0000000 | 4.0000000 | 1 | .0000000 | 30 | 1.0000000 + 1 | 600.0000000 | 100 | 4.0000000 | 10.0000000 | 4.0000000 | 1 | .0000000 | 20 | 1.0000000 + 1 | 300.0000000 | 200 | 2.0000000 | 10.0000000 | 4.0000000 | 1 | .0000000 | 10 | 1.0000000 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.qty) following ); -- mvd 4->3; + vn | qty | to_char | cn +----+------+-------------------+---- + 40 | 1100 | 1144.0000000 | 2 + 10 | 1 | 1102.0000000 | 1 + 40 | 1 | 1103.0000000 | 3 + 20 | 1 | 1104.0000000 | 1 + 30 | 1 | 1105.0000000 | 1 + 50 | 1 | 1106.0000000 | 1 + 50 | 1 | 1118.0000000 | 2 + 30 | 12 | 1144.0000000 | 1 + 30 | 12 | 1144.0000000 | 3 + 30 | 12 | 1144.0000000 | 3 + 40 | 1 | 1144.0000000 | 4 + 40 | 1 | 1144.0000000 | 4 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc,ow_sale.pn desc rows between unbounded preceding and 4 following ), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.pn order by ow_sale.vn asc), +win3 as (order by ow_sale.vn asc), +win4 as (order by ow_sale.cn desc); -- mvd 3,6->5; 8,3,6->7; 3->9; 2->10; 3,6->11; + qty | cn | vn | vn | to_char | pn | to_char | dt | to_char | to_char | to_char +------+----+----+----+-------------------+-----+-------------------+------------+-------------------+-------------------+------------------- + 1 | 4 | 40 | 40 | 4800.0000000 | 700 | 1.0000000 | 1401-06-01 | 4.0000000 | 1.0000000 | .0000000 + 1 | 4 | 40 | 40 | 4800.0000000 | 800 | 1.0000000 | 1401-06-01 | 4.0000000 | 1.0000000 | .0000000 + 12 | 3 | 30 | 30 | 4800.0000000 | 600 | 1.0000000 | 1401-06-01 | 3.0000000 | 3.0000000 | .0000000 + 1 | 3 | 40 | 40 | 1700.0000000 | 200 | 1.0000000 | 1401-04-01 | 4.0000000 | 3.0000000 | .0000000 + 12 | 3 | 30 | 30 | 4800.0000000 | 500 | 2.0000000 | 1401-06-01 | 3.0000000 | 3.0000000 | .0000000 + 1 | 2 | 50 | 50 | 4000.0000000 | 400 | 2.0000000 | 1401-06-01 | 5.0000000 | 6.0000000 | .0000000 + 1100 | 2 | 40 | 40 | 900.0000000 | 100 | 1.0000000 | 1401-01-01 | 4.0000000 | 6.0000000 | .0000000 + 1 | 1 | 50 | 50 | 3300.0000000 | 400 | 1.0000000 | 1401-06-01 | 5.0000000 | 8.0000000 | .0000000 + 1 | 1 | 20 | 20 | 2200.0000000 | 100 | 1.0000000 | 1401-05-01 | 2.0000000 | 8.0000000 | .0000000 + 12 | 1 | 30 | 30 | 4800.0000000 | 500 | 1.0000000 | 1401-06-01 | 3.0000000 | 8.0000000 | .0000000 + 1 | 1 | 30 | 30 | 2700.0000000 | 300 | 1.0000000 | 1401-05-02 | 3.0000000 | 8.0000000 | .0000000 + 1 | 1 | 10 | 10 | 1300.0000000 | 200 | 1.0000000 | 1401-03-01 | 1.0000000 | 8.0000000 | .0000000 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.vn desc); -- mvd 4->3; 4->5; 7->6; + cn | dt | to_char | pn | to_char | to_char | vn +----+------------+-------------------+-----+-------------------+-------------------+---- + 2 | 1401-06-01 | 15500.0000000 | 400 | 2200.0000000 | .0000000 | 50 + 1 | 1401-06-01 | 15500.0000000 | 400 | 2200.0000000 | .0000000 | 50 + 4 | 1401-06-01 | 15500.0000000 | 800 | 2200.0000000 | .1818182 | 40 + 3 | 1401-04-01 | 15500.0000000 | 200 | 2200.0000000 | .1818182 | 40 + 4 | 1401-06-01 | 15500.0000000 | 700 | 2200.0000000 | .1818182 | 40 + 2 | 1401-01-01 | 15500.0000000 | 100 | 2200.0000000 | .1818182 | 40 + 1 | 1401-06-01 | 15500.0000000 | 500 | 2200.0000000 | .5454545 | 30 + 3 | 1401-06-01 | 15500.0000000 | 500 | 2200.0000000 | .5454545 | 30 + 3 | 1401-06-01 | 15500.0000000 | 600 | 2200.0000000 | .5454545 | 30 + 1 | 1401-05-02 | 15500.0000000 | 300 | 2200.0000000 | .5454545 | 30 + 1 | 1401-05-01 | 15500.0000000 | 100 | 2200.0000000 | .9090909 | 20 + 1 | 1401-03-01 | 15500.0000000 | 200 | 2200.0000000 | 1.0000000 | 10 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between 2 preceding and floor(ow_sale.pn-ow_sale.vn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between 2 preceding and floor(ow_sale.pn-ow_sale.vn) preceding ), +win2 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 3,1->2; 3,1->4; 6,3,1->5; 8->7; 8->9; 8->10; + pn | to_char | cn | to_char | to_char | dt | to_char | vn | to_char | to_char +-----+-------------------+----+-------------------+-------------------+------------+-------------------+----+-------------------+------------------- + 100 | .0000000 | 2 | .0000000 | 1.0000000 | 1401-01-01 | .0000000 | 40 | .0000000 | 40.0000000 + 200 | .0000000 | 1 | .0000000 | 1.0000000 | 1401-03-01 | 40.0000000 | 10 | .0909091 | 40.0000000 + 200 | .0000000 | 3 | .0000000 | 1.0000000 | 1401-04-01 | .0000000 | 40 | .1818182 | 40.0000000 + 100 | .0000000 | 1 | .0000000 | 1.0000000 | 1401-05-01 | 40.0000000 | 20 | .2727273 | 40.0000000 + 300 | .0000000 | 1 | .0000000 | 1.0000000 | 1401-05-02 | 20.0000000 | 30 | .3636364 | 40.0000000 + 400 | .0000000 | 1 | .0000000 | 1.0000000 | 1401-06-01 | 30.0000000 | 50 | .4545455 | 50.0000000 + 400 | .0000000 | 2 | .0000000 | 1.0000000 | 1401-06-01 | 30.0000000 | 50 | .5454545 | 50.0000000 + 500 | .0000000 | 1 | .0000000 | 2.0000000 | 1401-06-01 | 50.0000000 | 30 | .6363636 | 50.0000000 + 500 | .0000000 | 3 | .0000000 | 1.0000000 | 1401-06-01 | 50.0000000 | 30 | .7272727 | 50.0000000 + 600 | .0000000 | 3 | .0000000 | 2.0000000 | 1401-06-01 | 50.0000000 | 30 | .8181818 | 50.0000000 + 700 | .0000000 | 4 | .0000000 | 1.0000000 | 1401-06-01 | 50.0000000 | 40 | .9090909 | 50.0000000 + 800 | .0000000 | 4 | .0000000 | 2.0000000 | 1401-06-01 | 30.0000000 | 40 | 1.0000000 | 50.0000000 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows between 9 preceding and current row ); -- mvd 3,6->5; + qty | qty | cn | vn | to_char | pn +------+------+----+----+-------------------+----- + 1100 | 1100 | 2 | 40 | 1100.0000000 | 100 + 1 | 1 | 1 | 10 | 1101.0000000 | 200 + 1 | 1 | 3 | 40 | 1102.0000000 | 200 + 1 | 1 | 1 | 20 | 1103.0000000 | 100 + 1 | 1 | 1 | 30 | 1104.0000000 | 300 + 1 | 1 | 1 | 50 | 1105.0000000 | 400 + 1 | 1 | 2 | 50 | 1106.0000000 | 400 + 12 | 12 | 1 | 30 | 1118.0000000 | 500 + 12 | 12 | 3 | 30 | 1130.0000000 | 500 + 12 | 12 | 3 | 30 | 1142.0000000 | 600 + 1 | 1 | 4 | 40 | 43.0000000 | 700 + 1 | 1 | 4 | 40 | 43.0000000 | 800 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc rows between floor(ow_sale.cn) preceding and current row ); -- mvd 3,1->2; 3,1->4; + pn | to_char | cn | to_char +-----+-------------------+----+------------------- + 100 | 1100.0000000 | 2 | 1.0000000 + 200 | 1101.0000000 | 1 | 2.0000000 + 200 | 1102.0000000 | 3 | 3.0000000 + 100 | 2.0000000 | 1 | 2.0000000 + 300 | 2.0000000 | 1 | 2.0000000 + 400 | 2.0000000 | 1 | 2.0000000 + 400 | 3.0000000 | 2 | 3.0000000 + 500 | 13.0000000 | 1 | 2.0000000 + 500 | 26.0000000 | 3 | 4.0000000 + 600 | 37.0000000 | 3 | 4.0000000 + 700 | 38.0000000 | 4 | 5.0000000 + 800 | 38.0000000 | 4 | 5.0000000 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.vn+ow_sale.qty) preceding and floor(ow_sale.qty) following ); -- mvd 4->5; + vn | prc | cn | pn | to_char +----+------+----+-----+------------------- + 40 | 2400 | 2 | 100 | .0000000 + 10 | 0 | 1 | 200 | .0000000 + 40 | 0 | 3 | 200 | .0000000 + 20 | 0 | 1 | 100 | .0000000 + 30 | 0 | 1 | 300 | .0000000 + 50 | 0 | 1 | 400 | .0000000 + 50 | 0 | 2 | 400 | .0000000 + 30 | 5 | 1 | 500 | .0000000 + 30 | 5 | 3 | 500 | .0000000 + 30 | 5 | 3 | 600 | .0000000 + 40 | 1 | 4 | 700 | .0000000 + 40 | 1 | 4 | 800 | .0000000 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.cn asc rows between 9 preceding and unbounded following ); -- mvd 6,4->5; + qty | qty | dt | pn | to_char | cn +------+------+------------+-----+-------------------+---- + 1100 | 1100 | 1401-01-01 | 100 | 2417.0000000 | 2 + 1 | 1 | 1401-03-01 | 200 | 2417.0000000 | 1 + 1 | 1 | 1401-04-01 | 200 | 2417.0000000 | 3 + 1 | 1 | 1401-05-01 | 100 | 2417.0000000 | 1 + 1 | 1 | 1401-05-02 | 300 | 2417.0000000 | 1 + 1 | 1 | 1401-06-01 | 400 | 2417.0000000 | 1 + 1 | 1 | 1401-06-01 | 400 | 2417.0000000 | 2 + 12 | 12 | 1401-06-01 | 500 | 2417.0000000 | 1 + 12 | 12 | 1401-06-01 | 500 | 2417.0000000 | 3 + 12 | 12 | 1401-06-01 | 600 | 2417.0000000 | 3 + 1 | 1 | 1401-06-01 | 700 | 17.0000000 | 4 + 1 | 1 | 1401-06-01 | 800 | 17.0000000 | 4 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between 3 preceding and unbounded following ), +win2 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc), +win4 as (partition by ow_sale.prc,ow_sale.dt order by ow_sale.pn asc); -- mvd 4,6->5; 2,4,3,8->7; 4->9; 4,6->10; 1,2,8->11; 1,2,8->12; + prc | dt | qty | cn | to_char | vn | to_char | pn | to_char | to_char | to_char | to_char +------+------------+------+----+-------------------+----+-------------------+-----+-------------------+-------------------+-------------------+------------------- + 2400 | 1401-01-01 | 1100 | 2 | 2417.0000000 | 40 | 1.0000000 | 100 | .0000000 | 12.0000000 | 1.0000000 | 1.0000000 + 0 | 1401-03-01 | 1 | 1 | 2417.0000000 | 10 | 1.0000000 | 200 | 2.0000000 | 12.0000000 | 1.0000000 | 1.0000000 + 0 | 1401-04-01 | 1 | 3 | 2417.0000000 | 40 | 1.0000000 | 200 | 1.0000000 | 12.0000000 | 1.0000000 | 1.0000000 + 0 | 1401-05-01 | 1 | 1 | 2417.0000000 | 20 | 1.0000000 | 100 | 3.0000000 | 12.0000000 | 1.0000000 | 1.0000000 + 0 | 1401-05-02 | 1 | 1 | 17.0000000 | 30 | 1.0000000 | 300 | 1.0000000 | 11.0000000 | 1.0000000 | 1.0000000 + 0 | 1401-06-01 | 1 | 1 | 17.0000000 | 50 | 1.0000000 | 400 | 1.0000000 | 10.0000000 | 1.0000000 | 2.0000000 + 0 | 1401-06-01 | 1 | 2 | 17.0000000 | 50 | 1.0000000 | 400 | 1.0000000 | 9.0000000 | 1.0000000 | 1.0000000 + 5 | 1401-06-01 | 12 | 1 | 17.0000000 | 30 | 1.0000000 | 500 | .0000000 | 8.0000000 | 1.0000000 | 1.0000000 + 5 | 1401-06-01 | 12 | 3 | 17.0000000 | 30 | 1.0000000 | 500 | .0000000 | 7.0000000 | 1.0000000 | 2.0000000 + 5 | 1401-06-01 | 12 | 3 | 17.0000000 | 30 | 1.0000000 | 600 | .0000000 | 6.0000000 | 3.0000000 | 3.0000000 + 1 | 1401-06-01 | 1 | 4 | 17.0000000 | 40 | 1.0000000 | 700 | 3.0000000 | 5.0000000 | 1.0000000 | 1.0000000 + 1 | 1401-06-01 | 1 | 4 | 12.0000000 | 40 | 1.0000000 | 800 | 3.0000000 | 4.0000000 | 2.0000000 | 2.0000000 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between current row and current row ); -- mvd 5->4; + qty | vn | dt | to_char | cn +------+----+------------+-------------------+---- + 1100 | 40 | 1401-01-01 | .0000000 | 2 + 1 | 10 | 1401-03-01 | .0000000 | 1 + 1 | 40 | 1401-04-01 | .0000000 | 3 + 1 | 20 | 1401-05-01 | .0000000 | 1 + 1 | 30 | 1401-05-02 | .0000000 | 1 + 1 | 50 | 1401-06-01 | .0000000 | 1 + 1 | 50 | 1401-06-01 | .0000000 | 2 + 12 | 30 | 1401-06-01 | .0000000 | 1 + 12 | 30 | 1401-06-01 | .0000000 | 3 + 12 | 30 | 1401-06-01 | .0000000 | 3 + 1 | 40 | 1401-06-01 | .0000000 | 4 + 1 | 40 | 1401-06-01 | .0000000 | 4 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between current row and current row ), +win2 as (order by ow_sale.cn asc); -- mvd 1->4; 6->5; + vn | vn | pn | to_char | to_char | cn +----+----+-----+-------------------+-------------------+---- + 50 | 50 | 400 | 401.0000000 | 1.0000000 | 1 + 10 | 10 | 200 | 201.0000000 | 1.0000000 | 1 + 30 | 30 | 500 | 512.0000000 | 1.0000000 | 1 + 20 | 20 | 100 | 101.0000000 | 1.0000000 | 1 + 30 | 30 | 300 | 301.0000000 | 1.0000000 | 1 + 40 | 40 | 100 | 1200.0000000 | 2.0000000 | 2 + 50 | 50 | 400 | 401.0000000 | 2.0000000 | 2 + 40 | 40 | 200 | 201.0000000 | 3.0000000 | 3 + 30 | 30 | 500 | 512.0000000 | 3.0000000 | 3 + 30 | 30 | 600 | 612.0000000 | 3.0000000 | 3 + 40 | 40 | 700 | 701.0000000 | 4.0000000 | 4 + 40 | 40 | 800 | 801.0000000 | 4.0000000 | 4 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between current row and floor(ow_sale.vn/ow_sale.cn) following ); -- mvd 5->4; + qty | prc | cn | to_char | vn +------+------+----+-------------------+---- + 1100 | 2400 | 2 | 1144.0000000 | 40 + 1 | 0 | 1 | 44.0000000 | 10 + 1 | 0 | 3 | 43.0000000 | 40 + 1 | 0 | 1 | 42.0000000 | 20 + 1 | 0 | 1 | 41.0000000 | 30 + 1 | 0 | 1 | 40.0000000 | 50 + 1 | 0 | 2 | 39.0000000 | 50 + 12 | 5 | 1 | 38.0000000 | 30 + 12 | 5 | 3 | 26.0000000 | 30 + 12 | 5 | 3 | 14.0000000 | 30 + 1 | 1 | 4 | 2.0000000 | 40 + 1 | 1 | 4 | 1.0000000 | 40 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between current row and 0 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between current row and 0 following ); -- mvd 1,3->2; 1,3->4; + cn | to_char | vn | to_char +----+-------------------+----+------------------- + 2 | 1210000.0000000 | 40 | 1.0000000 + 1 | 1.0000000 | 10 | 1.0000000 + 3 | 1.0000000 | 40 | 1.0000000 + 1 | 1.0000000 | 20 | 1.0000000 + 1 | 1.0000000 | 30 | 1.0000000 + 1 | 1.0000000 | 50 | 1.0000000 + 2 | 1.0000000 | 50 | 1.0000000 + 1 | 144.0000000 | 30 | 1.0000000 + 3 | 144.0000000 | 30 | 1.0000000 + 3 | 144.0000000 | 30 | 1.0000000 + 4 | 1.0000000 | 40 | 1.0000000 + 4 | 1.0000000 | 40 | 1.0000000 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ); -- mvd 4->3; + qty | qty | to_char | cn +------+------+-------------------+---- + 1100 | 1100 | -1118.0000000 | 2 + 1 | 1 | -20.0000000 | 1 + 1 | 1 | -20.0000000 | 3 + 1 | 1 | -22.0000000 | 1 + 1 | 1 | -22.0000000 | 1 + 1 | 1 | -22.0000000 | 1 + 1 | 1 | -22.0000000 | 2 + 12 | 12 | -23.0000000 | 1 + 12 | 12 | -12.0000000 | 3 + 12 | 12 | -3.0000000 | 3 + 1 | 1 | 6.0000000 | 4 + 1 | 1 | 3.0000000 | 4 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.cn order by ow_sale.pn desc); -- mvd 4,5->3; 4,5->6; 8->7; 8->9; 1,4,5->10; + prc | prc | to_char | cn | pn | to_char | to_char | vn | to_char | to_char +------+------+-------------------+----+-----+-------------------+-------------------+----+-------------------+------------------- + 2400 | 2400 | 1144.0000000 | 2 | 100 | 800.0000000 | .0000000 | 40 | .0833333 | 1.0000000 + 0 | 0 | 44.0000000 | 1 | 200 | 800.0000000 | 10.0000000 | 10 | .1666667 | 3.0000000 + 0 | 0 | 43.0000000 | 3 | 200 | 800.0000000 | 40.0000000 | 40 | .2500000 | 1.0000000 + 0 | 0 | 42.0000000 | 1 | 100 | 800.0000000 | 20.0000000 | 20 | .3333333 | 4.0000000 + 0 | 0 | 41.0000000 | 1 | 300 | 800.0000000 | 30.0000000 | 30 | .4166667 | 2.0000000 + 0 | 0 | 40.0000000 | 1 | 400 | 800.0000000 | 50.0000000 | 50 | .5000000 | 1.0000000 + 0 | 0 | 39.0000000 | 2 | 400 | 800.0000000 | 50.0000000 | 50 | .5833333 | 1.0000000 + 5 | 5 | 38.0000000 | 1 | 500 | 800.0000000 | .0000000 | 30 | .6666667 | 1.0000000 + 5 | 5 | 26.0000000 | 3 | 500 | 800.0000000 | .0000000 | 30 | .7500000 | 2.0000000 + 5 | 5 | 14.0000000 | 3 | 600 | 800.0000000 | .0000000 | 30 | .8333333 | 1.0000000 + 1 | 1 | 2.0000000 | 4 | 700 | 800.0000000 | 40.0000000 | 40 | .9166667 | 2.0000000 + 1 | 1 | 1.0000000 | 4 | 800 | 800.0000000 | .0000000 | 40 | 1.0000000 | 1.0000000 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.pn asc rows between 3 following and floor(ow_sale.cn-ow_sale.cn) following ); -- mvd 1->4; + pn | qty | cn | to_char +-----+------+----+------------------- + 100 | 1100 | 2 | .0000000 + 200 | 1 | 1 | .0000000 + 200 | 1 | 3 | .0000000 + 100 | 1 | 1 | .0000000 + 300 | 1 | 1 | .0000000 + 400 | 1 | 1 | .0000000 + 400 | 1 | 2 | .0000000 + 500 | 12 | 1 | .0000000 + 500 | 12 | 3 | .0000000 + 600 | 12 | 3 | .0000000 + 700 | 1 | 4 | .0000000 + 800 | 1 | 4 | .0000000 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 3 following and floor(ow_sale.qty+ow_sale.qty) following ), +win2 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.dt,ow_sale.vn order by ow_sale.pn asc); -- mvd 4->3; 6,1,7,8->5; 4->9; + dt | dt | to_char | cn | to_char | prc | vn | pn | to_char +------------+------------+-------------------+----+-------------------+------+----+-----+------------------- + 1401-01-01 | 1401-01-01 | 320.0000000 | 2 | 1.0000000 | 2400 | 40 | 100 | .0000000 + 1401-03-01 | 1401-03-01 | .0000000 | 1 | 1.0000000 | 0 | 10 | 200 | .0000000 + 1401-04-01 | 1401-04-01 | .0000000 | 3 | 1.0000000 | 0 | 40 | 200 | .0000000 + 1401-05-01 | 1401-05-01 | .0000000 | 1 | 1.0000000 | 0 | 20 | 100 | .0000000 + 1401-05-02 | 1401-05-02 | .0000000 | 1 | 1.0000000 | 0 | 30 | 300 | .0000000 + 1401-06-01 | 1401-06-01 | .0000000 | 1 | 1.0000000 | 0 | 50 | 400 | .0000000 + 1401-06-01 | 1401-06-01 | .0000000 | 2 | 1.0000000 | 0 | 50 | 400 | .0000000 + 1401-06-01 | 1401-06-01 | 80.0000000 | 1 | 1.0000000 | 5 | 30 | 500 | 1.0000000 + 1401-06-01 | 1401-06-01 | 40.0000000 | 3 | 1.0000000 | 5 | 30 | 500 | 1.0000000 + 1401-06-01 | 1401-06-01 | .0000000 | 3 | 1.0000000 | 5 | 30 | 600 | .0000000 + 1401-06-01 | 1401-06-01 | .0000000 | 4 | 1.0000000 | 1 | 40 | 700 | .0000000 + 1401-06-01 | 1401-06-01 | .0000000 | 4 | 1.0000000 | 1 | 40 | 800 | .0000000 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between 3 following and unbounded following ); -- mvd 3->4; + cn | pn | vn | to_char +----+-----+----+------------------- + 2 | 100 | 40 | 42.0000000 + 1 | 200 | 10 | 41.0000000 + 3 | 200 | 40 | 40.0000000 + 1 | 100 | 20 | 39.0000000 + 1 | 300 | 30 | 38.0000000 + 1 | 400 | 50 | 26.0000000 + 2 | 400 | 50 | 14.0000000 + 1 | 500 | 30 | 2.0000000 + 3 | 500 | 30 | 1.0000000 + 3 | 600 | 30 | .0000000 + 4 | 700 | 40 | .0000000 + 4 | 800 | 40 | .0000000 +(12 rows) + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty-ow_sale.qty) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.vn*ow_sale.qty) following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (order by ow_sale.pn desc); -- mvd 4->3; 4->5; 7->6; 7->8; + qty | dt | to_char | vn | to_char | to_char | pn | to_char +------+------------+-------------------+----+-------------------+-------------------+-----+------------------- + 1 | 1401-06-01 | .0000000 | 40 | .0000000 | .0000000 | 800 | 1.0000000 + 1 | 1401-06-01 | .0000000 | 40 | .0000000 | .0000000 | 700 | 2.0000000 + 12 | 1401-06-01 | .0000000 | 30 | .0000000 | .0000000 | 600 | 3.0000000 + 12 | 1401-06-01 | .0000000 | 30 | .0000000 | .0000000 | 500 | 4.0000000 + 12 | 1401-06-01 | .0000000 | 30 | .0000000 | .0000000 | 500 | 4.0000000 + 1 | 1401-06-01 | .0000000 | 50 | .0000000 | .0000000 | 400 | 5.0000000 + 1 | 1401-06-01 | .0000000 | 50 | .0000000 | .0000000 | 400 | 5.0000000 + 1 | 1401-05-02 | .0000000 | 30 | .0000000 | .0000000 | 300 | 6.0000000 + 1 | 1401-04-01 | .0000000 | 40 | .0000000 | .0000000 | 200 | 7.0000000 + 1 | 1401-03-01 | 4.0000000 | 10 | 1.0000000 | .0000000 | 200 | 7.0000000 + 1100 | 1401-01-01 | .0000000 | 40 | .0000000 | .0000000 | 100 | 8.0000000 + 1 | 1401-05-01 | .0000000 | 20 | .0000000 | .0000000 | 100 | 8.0000000 +(12 rows) + +-- SUM() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.qty order by ow_sale.pn desc,ow_sale.cn asc); -- mvd 7,8,2,9,1->6; + pn | qty | qty | qty | qty | to_char | cn | dt | vn +-----+------+------+------+------+-------------------+----+------------+---- + 100 | 1100 | 1100 | 1100 | 1100 | 2400.0000000 | 2 | 1401-01-01 | 40 + 200 | 1 | 1 | 1 | 1 | .0000000 | 1 | 1401-03-01 | 10 + 300 | 1 | 1 | 1 | 1 | .0000000 | 1 | 1401-05-02 | 30 + 800 | 1 | 1 | 1 | 1 | 1.0000000 | 4 | 1401-06-01 | 40 + 700 | 1 | 1 | 1 | 1 | 2.0000000 | 4 | 1401-06-01 | 40 + 400 | 1 | 1 | 1 | 1 | .0000000 | 1 | 1401-06-01 | 50 + 400 | 1 | 1 | 1 | 1 | .0000000 | 2 | 1401-06-01 | 50 + 200 | 1 | 1 | 1 | 1 | .0000000 | 3 | 1401-04-01 | 40 + 100 | 1 | 1 | 1 | 1 | .0000000 | 1 | 1401-05-01 | 20 + 600 | 12 | 12 | 12 | 12 | 5.0000000 | 3 | 1401-06-01 | 30 + 500 | 12 | 12 | 12 | 12 | 10.0000000 | 1 | 1401-06-01 | 30 + 500 | 12 | 12 | 12 | 12 | 15.0000000 | 3 | 1401-06-01 | 30 +(12 rows) + +-- SUM() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.prc,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.vn order by ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(partition by ow_sale.vn order by ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.vn order by ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn desc); -- mvd 3,5,6->4; 3,5,6->7; 3,5,6->8; 3,5,6->9; + prc | dt | cn | to_char | vn | pn | to_char | to_char | to_char +------+------------+----+-------------------+----+-----+-------------------+-------------------+------------------- + 0 | 1401-03-01 | 1 | 210.0000000 | 10 | 200 | 1.0000000 | 1.0000000 | 1.0000000 + 0 | 1401-05-01 | 1 | 120.0000000 | 20 | 100 | 1.0000000 | 1.0000000 | 1.0000000 + 5 | 1401-06-01 | 1 | 530.0000000 | 30 | 500 | 1.0000000 | 1.0000000 | .2500000 + 0 | 1401-05-02 | 1 | 860.0000000 | 30 | 300 | 1.0000000 | 2.0000000 | .5000000 + 5 | 1401-06-01 | 3 | 1490.0000000 | 30 | 600 | 3.0000000 | 3.0000000 | .7500000 + 5 | 1401-06-01 | 3 | 2020.0000000 | 30 | 500 | 3.0000000 | 4.0000000 | 1.0000000 + 2400 | 1401-01-01 | 2 | 140.0000000 | 40 | 100 | 2.0000000 | 1.0000000 | .2500000 + 0 | 1401-04-01 | 3 | 380.0000000 | 40 | 200 | 3.0000000 | 2.0000000 | .5000000 + 1 | 1401-06-01 | 4 | 1220.0000000 | 40 | 800 | 4.0000000 | 3.0000000 | .7500000 + 1 | 1401-06-01 | 4 | 1960.0000000 | 40 | 700 | 4.0000000 | 4.0000000 | 1.0000000 + 0 | 1401-06-01 | 1 | 450.0000000 | 50 | 400 | 1.0000000 | 1.0000000 | .5000000 + 0 | 1401-06-01 | 2 | 900.0000000 | 50 | 400 | 2.0000000 | 2.0000000 | 1.0000000 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.cn desc range unbounded preceding ); -- mvd 3,5,6->4; + qty | qty | cn | to_char | vn | pn +------+------+----+-------------------+----+----- + 1 | 1 | 1 | -19.0000000 | 20 | 100 + 1 | 1 | 1 | -9.0000000 | 10 | 200 + 1 | 1 | 2 | -48.0000000 | 50 | 400 + 1 | 1 | 3 | -37.0000000 | 40 | 200 + 12 | 12 | 3 | -27.0000000 | 30 | 600 + 1 | 1 | 4 | -36.0000000 | 40 | 800 + 1 | 1 | 1 | -29.0000000 | 30 | 300 + 1 | 1 | 1 | -49.0000000 | 50 | 400 + 12 | 12 | 1 | -29.0000000 | 30 | 500 + 1100 | 1100 | 2 | -38.0000000 | 40 | 100 + 12 | 12 | 3 | -27.0000000 | 30 | 500 + 1 | 1 | 4 | -36.0000000 | 40 | 700 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.pn desc range floor(ow_sale.cn+ow_sale.vn) preceding ); -- mvd 3,1->2; + pn | to_char | vn +-----+-------------------+---- + 300 | .0000000 | 30 + 500 | 10.0000000 | 30 + 500 | 10.0000000 | 30 + 800 | 1.0000000 | 40 + 400 | .0000000 | 50 + 400 | .0000000 | 50 + 200 | .0000000 | 10 + 100 | .0000000 | 20 + 600 | 5.0000000 | 30 + 100 | 2400.0000000 | 40 + 200 | .0000000 | 40 + 700 | 1.0000000 | 40 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.qty) as int),cast (floor(ow_sale.prc+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn+ow_sale.pn) as int),cast (floor(ow_sale.vn+ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn/ow_sale.vn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.prc order by ow_sale.cn desc range floor(ow_sale.qty) preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc); -- mvd 6,7,8->5; 7->9; 6,7,11->10; 6,7,11->12; + qty | pn | pn | pn | to_char | prc | cn | dt | to_char | to_char | vn | to_char +------+-----+-----+-----+-------------------+------+----+------------+-------------------+-------------------+----+------------------- + 1100 | 100 | 100 | 100 | 100.0000000 | 2400 | 2 | 1401-01-01 | .0000000 | .0000000 | 40 | 1.0000000 + 1 | 200 | 200 | 200 | 200.0000000 | 0 | 1 | 1401-03-01 | 1140.0000000 | .0000000 | 10 | 1.0000000 + 1 | 200 | 200 | 200 | 200.0000000 | 0 | 3 | 1401-04-01 | 11.0000000 | .0000000 | 40 | 1.0000000 + 1 | 100 | 100 | 100 | 100.0000000 | 0 | 1 | 1401-05-01 | 41.0000000 | .0000000 | 20 | 1.0000000 + 1 | 300 | 300 | 300 | 300.0000000 | 0 | 1 | 1401-05-02 | 21.0000000 | .0000000 | 30 | 1.0000000 + 1 | 400 | 400 | 400 | 800.0000000 | 0 | 1 | 1401-06-01 | 31.0000000 | .0000000 | 50 | 1.0000000 + 1 | 400 | 400 | 400 | 400.0000000 | 0 | 2 | 1401-06-01 | 51.0000000 | .0000000 | 50 | 1.0000000 + 12 | 500 | 500 | 500 | 1600.0000000 | 5 | 1 | 1401-06-01 | .0000000 | .0000000 | 30 | 1.0000000 + 12 | 500 | 500 | 500 | 1100.0000000 | 5 | 3 | 1401-06-01 | .0000000 | .0000000 | 30 | 1.0000000 + 12 | 600 | 600 | 600 | 1100.0000000 | 5 | 3 | 1401-06-01 | .0000000 | .0000000 | 30 | 1.0000000 + 1 | 700 | 700 | 700 | 1500.0000000 | 1 | 4 | 1401-06-01 | 42.0000000 | .0000000 | 40 | 1.0000000 + 1 | 800 | 800 | 800 | 1500.0000000 | 1 | 4 | 1401-06-01 | 42.0000000 | .0000000 | 40 | 1.0000000 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.pn asc range current row ); -- mvd 4,3->6; + cn | qty | pn | dt | prc | to_char +----+------+-----+------------+------+------------------- + 1 | 1 | 200 | 1401-03-01 | 0 | 1.0000000 + 3 | 12 | 600 | 1401-06-01 | 5 | 12.0000000 + 4 | 1 | 700 | 1401-06-01 | 1 | 1.0000000 + 2 | 1100 | 100 | 1401-01-01 | 2400 | 1100.0000000 + 1 | 1 | 100 | 1401-05-01 | 0 | 1.0000000 + 3 | 1 | 200 | 1401-04-01 | 0 | 1.0000000 + 1 | 1 | 300 | 1401-05-02 | 0 | 1.0000000 + 2 | 1 | 400 | 1401-06-01 | 0 | 2.0000000 + 1 | 1 | 400 | 1401-06-01 | 0 | 2.0000000 + 1 | 12 | 500 | 1401-06-01 | 5 | 24.0000000 + 3 | 12 | 500 | 1401-06-01 | 5 | 24.0000000 + 4 | 1 | 800 | 1401-06-01 | 1 | 1.0000000 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.qty) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.cn desc range current row ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.qty order by ow_sale.vn asc); -- mvd 6,1,7->5; 1,7->8; 4,2->9; + cn | qty | dt | vn | to_char | prc | pn | to_char | to_char +----+------+------------+----+-------------------+------+-----+-------------------+------------------- + 1 | 1 | 1401-05-02 | 30 | 30.0000000 | 0 | 300 | .0000000 | .3750000 + 2 | 1 | 1401-06-01 | 50 | 100.0000000 | 0 | 400 | .0000000 | 1.0000000 + 1 | 1 | 1401-06-01 | 50 | 50.0000000 | 0 | 400 | .0000000 | 1.0000000 + 4 | 1 | 1401-06-01 | 40 | 160.0000000 | 1 | 700 | .0000000 | .7500000 + 3 | 12 | 1401-06-01 | 30 | 90.0000000 | 5 | 500 | .0000000 | 1.0000000 + 1 | 12 | 1401-06-01 | 30 | 30.0000000 | 5 | 500 | .0000000 | 1.0000000 + 1 | 1 | 1401-05-01 | 20 | 20.0000000 | 0 | 100 | .0000000 | .2500000 + 3 | 1 | 1401-04-01 | 40 | 120.0000000 | 0 | 200 | .0000000 | .7500000 + 1 | 1 | 1401-03-01 | 10 | 10.0000000 | 0 | 200 | .0000000 | .1250000 + 4 | 1 | 1401-06-01 | 40 | 160.0000000 | 1 | 800 | .0000000 | .7500000 + 3 | 12 | 1401-06-01 | 30 | 90.0000000 | 5 | 600 | .0000000 | 1.0000000 + 2 | 1100 | 1401-01-01 | 40 | 80.0000000 | 2400 | 100 | .0000000 | 1.0000000 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn asc range between unbounded preceding and 2 preceding ); -- mvd 3,2->4; + qty | dt | cn | to_char +------+------------+----+------------------- + 1 | 1401-03-01 | 1 | .0000000 + 1 | 1401-05-02 | 1 | .0000000 + 12 | 1401-06-01 | 1 | .0000000 + 1 | 1401-06-01 | 1 | .0000000 + 1 | 1401-06-01 | 2 | .0000000 + 12 | 1401-06-01 | 3 | 13.0000000 + 12 | 1401-06-01 | 3 | 13.0000000 + 1 | 1401-06-01 | 4 | 14.0000000 + 1 | 1401-06-01 | 4 | 14.0000000 + 1100 | 1401-01-01 | 2 | .0000000 + 1 | 1401-04-01 | 3 | .0000000 + 1 | 1401-05-01 | 1 | .0000000 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn+ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.prc) as int),cast (floor(ow_sale.pn*ow_sale.qty) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.pn desc range between unbounded preceding and 1 preceding ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc), +win4 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc), +win5 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,1,5->4; 3->6; 3,8,5->7; 10,3,1,5->9; 3->11; + vn | vn | cn | to_char | pn | to_char | to_char | dt | to_char | prc | to_char +----+----+----+-------------------+-----+-------------------+-------------------+------------+-------------------+------+------------------- + 40 | 40 | 2 | .0000000 | 100 | .5833333 | .0000000 | 1401-01-01 | .0000000 | 2400 | .0000000 + 10 | 10 | 1 | .0000000 | 200 | 1.0000000 | 10.0000000 | 1401-03-01 | .0000000 | 0 | .0000000 + 40 | 40 | 3 | .0000000 | 200 | .4166667 | 40.0000000 | 1401-04-01 | .0000000 | 0 | .0000000 + 20 | 20 | 1 | .0000000 | 100 | 1.0000000 | 20.0000000 | 1401-05-01 | .0000000 | 0 | .0000000 + 30 | 30 | 1 | 6.0000000 | 300 | 1.0000000 | 30.0000000 | 1401-05-02 | .0000000 | 0 | .0000000 + 50 | 50 | 1 | .0000000 | 400 | 1.0000000 | 50.0000000 | 1401-06-01 | .0000000 | 0 | .0000000 + 50 | 50 | 2 | .0000000 | 400 | .5833333 | 50.0000000 | 1401-06-01 | .0000000 | 0 | .0000000 + 30 | 30 | 1 | .0000000 | 500 | 1.0000000 | .0000000 | 1401-06-01 | .0000000 | 5 | .0000000 + 30 | 30 | 3 | 8.0000000 | 500 | .4166667 | .0000000 | 1401-06-01 | .0000000 | 5 | .0000000 + 30 | 30 | 3 | .0000000 | 600 | .4166667 | .0000000 | 1401-06-01 | .0000000 | 5 | .0000000 + 40 | 40 | 4 | 5.0000000 | 700 | .1666667 | 40.0000000 | 1401-06-01 | .0000000 | 1 | .0000000 + 40 | 40 | 4 | .0000000 | 800 | .1666667 | .0000000 | 1401-06-01 | .0000000 | 1 | .0000000 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.vn desc range between unbounded preceding and current row ); -- mvd 4,5,6->3; + pn | pn | to_char | cn | vn | qty +-----+-----+-------------------+----+----+------ + 400 | 400 | -48.0000000 | 2 | 50 | 1 + 800 | 800 | -72.0000000 | 4 | 40 | 1 + 700 | 700 | -72.0000000 | 4 | 40 | 1 + 500 | 500 | -29.0000000 | 1 | 30 | 12 + 600 | 600 | -54.0000000 | 3 | 30 | 12 + 500 | 500 | -54.0000000 | 3 | 30 | 12 + 400 | 400 | -49.0000000 | 1 | 50 | 1 + 300 | 300 | -78.0000000 | 1 | 30 | 1 + 100 | 100 | -97.0000000 | 1 | 20 | 1 + 200 | 200 | -106.0000000 | 1 | 10 | 1 + 200 | 200 | -37.0000000 | 3 | 40 | 1 + 100 | 100 | -38.0000000 | 2 | 40 | 1100 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and current row ), +win2 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc); -- mvd 2,4,1,5,6->3; 1,6,8->7; 4,6->9; + cn | prc | to_char | dt | qty | vn | to_char | pn | to_char +----+------+-------------------+------------+------+----+-------------------+-----+------------------- + 1 | 0 | 200.0000000 | 1401-03-01 | 1 | 10 | 1.0000000 | 200 | .0000000 + 1 | 0 | 100.0000000 | 1401-05-01 | 1 | 20 | 1.0000000 | 100 | .0000000 + 1 | 0 | 300.0000000 | 1401-05-02 | 1 | 30 | .5000000 | 300 | .0000000 + 1 | 5 | 500.0000000 | 1401-06-01 | 12 | 30 | 1.0000000 | 500 | .0000000 + 1 | 0 | 400.0000000 | 1401-06-01 | 1 | 50 | 1.0000000 | 400 | .0000000 + 3 | 5 | 1100.0000000 | 1401-06-01 | 12 | 30 | .5000000 | 500 | .0000000 + 3 | 5 | 1100.0000000 | 1401-06-01 | 12 | 30 | 1.0000000 | 600 | .0000000 + 3 | 0 | 200.0000000 | 1401-04-01 | 1 | 40 | 1.0000000 | 200 | .0000000 + 2 | 2400 | 100.0000000 | 1401-01-01 | 1100 | 40 | 1.0000000 | 100 | .0000000 + 2 | 0 | 400.0000000 | 1401-06-01 | 1 | 50 | 1.0000000 | 400 | .0000000 + 4 | 1 | 1500.0000000 | 1401-06-01 | 1 | 40 | .5000000 | 700 | 50.0000000 + 4 | 1 | 1500.0000000 | 1401-06-01 | 1 | 40 | 1.0000000 | 800 | 50.0000000 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.vn order by ow_sale.pn asc range between unbounded preceding and floor(ow_sale.cn) following ); -- mvd 1,6,7,8,2->5; + dt | pn | prc | pn | to_char | cn | vn | qty +------------+-----+------+-----+-------------------+----+----+------ + 1401-03-01 | 200 | 0 | 200 | 1.0000000 | 1 | 10 | 1 + 1401-05-02 | 300 | 0 | 300 | 1.0000000 | 1 | 30 | 1 + 1401-06-01 | 400 | 0 | 400 | 1.0000000 | 1 | 50 | 1 + 1401-05-01 | 100 | 0 | 100 | 1.0000000 | 1 | 20 | 1 + 1401-06-01 | 500 | 5 | 500 | -4.0000000 | 1 | 30 | 12 + 1401-01-01 | 100 | 2400 | 100 | -2398.0000000 | 2 | 40 | 1100 + 1401-06-01 | 400 | 0 | 400 | 2.0000000 | 2 | 50 | 1 + 1401-04-01 | 200 | 0 | 200 | 3.0000000 | 3 | 40 | 1 + 1401-06-01 | 500 | 5 | 500 | -2.0000000 | 3 | 30 | 12 + 1401-06-01 | 600 | 5 | 600 | -4.0000000 | 3 | 30 | 12 + 1401-06-01 | 700 | 1 | 700 | 3.0000000 | 4 | 40 | 1 + 1401-06-01 | 800 | 1 | 800 | 6.0000000 | 4 | 40 | 1 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn*ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn/ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn*ow_sale.vn)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.pn desc range between unbounded preceding and 1 following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 4,1->3; 4->5; 1->6; 1->7; 1->8; + pn | cn | to_char | vn | to_char | to_char | to_char | to_char +-----+----+-------------------+----+-------------------+-------------------+-------------------+------------------- + 100 | 2 | 1800.0000000 | 40 | .0000000 | 1.0000000 | 1.0000000 | .0833333 + 200 | 1 | 200.0000000 | 10 | .0000000 | 3.0000000 | 2.0000000 | .1666667 + 200 | 3 | 1700.0000000 | 40 | .0000000 | 1.0000000 | 3.0000000 | .2500000 + 100 | 1 | 100.0000000 | 20 | .0000000 | 1.0000000 | 4.0000000 | .3333333 + 300 | 1 | 1900.0000000 | 30 | .0000000 | 1.0000000 | 5.0000000 | .4166667 + 400 | 1 | 800.0000000 | 50 | .0000000 | 2.0000000 | 6.0000000 | .5000000 + 400 | 2 | 800.0000000 | 50 | .0000000 | 1.0000000 | 7.0000000 | .5833333 + 500 | 1 | 1600.0000000 | 30 | .0000000 | 3.0000000 | 8.0000000 | .6666667 + 500 | 3 | 1600.0000000 | 30 | .0000000 | 3.0000000 | 9.0000000 | .7500000 + 600 | 3 | 600.0000000 | 30 | .0000000 | 4.0000000 | 10.0000000 | .8333333 + 700 | 4 | 1500.0000000 | 40 | .0000000 | 4.0000000 | 11.0000000 | .9166667 + 800 | 4 | 800.0000000 | 40 | .0000000 | .0000000 | 12.0000000 | 1.0000000 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc range between unbounded preceding and unbounded following ); -- mvd 4,5,2,6->3; + qty | dt | to_char | prc | cn | vn +------+------------+-------------------+------+----+---- + 1 | 1401-03-01 | .0000000 | 0 | 1 | 10 + 1 | 1401-05-02 | .0000000 | 0 | 1 | 30 + 12 | 1401-06-01 | 15.0000000 | 5 | 1 | 30 + 12 | 1401-06-01 | 15.0000000 | 5 | 3 | 30 + 12 | 1401-06-01 | 15.0000000 | 5 | 3 | 30 + 1 | 1401-06-01 | .0000000 | 0 | 1 | 50 + 1 | 1401-06-01 | .0000000 | 0 | 2 | 50 + 1100 | 1401-01-01 | 2400.0000000 | 2400 | 2 | 40 + 1 | 1401-04-01 | .0000000 | 0 | 3 | 40 + 1 | 1401-05-01 | .0000000 | 0 | 1 | 20 + 1 | 1401-06-01 | 2.0000000 | 1 | 4 | 40 + 1 | 1401-06-01 | 2.0000000 | 1 | 4 | 40 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.dt order by ow_sale.vn asc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.cn asc); -- mvd 8,3,9,2,1,4->7; 3,9,4->10; 3,9,4->11; 8,3,9,2,1,4->12; + qty | vn | dt | pn | dt | vn | to_char | prc | cn | to_char | to_char | to_char +------+----+------------+-----+------------+----+-------------------+------+----+-------------------+-------------------+------------------- + 1 | 20 | 1401-05-01 | 100 | 1401-05-01 | 20 | 21.0000000 | 0 | 1 | 1.0000000 | 1.0000000 | .0000000 + 1 | 30 | 1401-05-02 | 300 | 1401-05-02 | 30 | 31.0000000 | 0 | 1 | 1.0000000 | 1.0000000 | .0000000 + 1 | 50 | 1401-06-01 | 400 | 1401-06-01 | 50 | 51.0000000 | 0 | 1 | 1.0000000 | 1.0000000 | .0000000 + 12 | 30 | 1401-06-01 | 500 | 1401-06-01 | 30 | 42.0000000 | 5 | 1 | 1.0000000 | 1.0000000 | 5.0000000 + 1 | 40 | 1401-04-01 | 200 | 1401-04-01 | 40 | 41.0000000 | 0 | 3 | 1.0000000 | 1.0000000 | .0000000 + 12 | 30 | 1401-06-01 | 500 | 1401-06-01 | 30 | 42.0000000 | 5 | 3 | 1.0000000 | 1.0000000 | 5.0000000 + 1 | 40 | 1401-06-01 | 700 | 1401-06-01 | 40 | 41.0000000 | 1 | 4 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 10 | 1401-03-01 | 200 | 1401-03-01 | 10 | 11.0000000 | 0 | 1 | 1.0000000 | 1.0000000 | .0000000 + 1100 | 40 | 1401-01-01 | 100 | 1401-01-01 | 40 | 1140.0000000 | 2400 | 2 | 1.0000000 | 1.0000000 | 2400.0000000 + 1 | 50 | 1401-06-01 | 400 | 1401-06-01 | 50 | 51.0000000 | 0 | 2 | 1.0000000 | 1.0000000 | .0000000 + 12 | 30 | 1401-06-01 | 600 | 1401-06-01 | 30 | 42.0000000 | 5 | 3 | 1.0000000 | 1.0000000 | 5.0000000 + 1 | 40 | 1401-06-01 | 800 | 1401-06-01 | 40 | 41.0000000 | 1 | 4 | 1.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.vn asc range between floor(ow_sale.prc/ow_sale.pn) preceding and 3 preceding ); -- mvd 6,1->5; + vn | dt | dt | dt | to_char | cn +----+------------+------------+------------+-------------------+---- + 10 | 1401-03-01 | 1401-03-01 | 1401-03-01 | .0000000 | 1 + 20 | 1401-05-01 | 1401-05-01 | 1401-05-01 | .0000000 | 1 + 30 | 1401-05-02 | 1401-05-02 | 1401-05-02 | .0000000 | 1 + 30 | 1401-06-01 | 1401-06-01 | 1401-06-01 | .0000000 | 1 + 50 | 1401-06-01 | 1401-06-01 | 1401-06-01 | .0000000 | 1 + 30 | 1401-06-01 | 1401-06-01 | 1401-06-01 | .0000000 | 3 + 30 | 1401-06-01 | 1401-06-01 | 1401-06-01 | .0000000 | 3 + 40 | 1401-04-01 | 1401-04-01 | 1401-04-01 | .0000000 | 3 + 40 | 1401-01-01 | 1401-01-01 | 1401-01-01 | .0000000 | 2 + 50 | 1401-06-01 | 1401-06-01 | 1401-06-01 | .0000000 | 2 + 40 | 1401-06-01 | 1401-06-01 | 1401-06-01 | .0000000 | 4 + 40 | 1401-06-01 | 1401-06-01 | 1401-06-01 | .0000000 | 4 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.cn desc range between 0 preceding and 0 preceding ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.pn desc); -- mvd 4,5->3; 4,5->6; 8,1,5->7; 8,1,5->9; + vn | vn | to_char | cn | pn | to_char | to_char | prc | to_char +----+----+-------------------+----+-----+-------------------+-------------------+------+------------------- + 20 | 20 | 20.0000000 | 1 | 100 | 1.0000000 | 1.0000000 | 0 | 1.0000000 + 10 | 10 | 10.0000000 | 1 | 200 | 1.0000000 | 1.0000000 | 0 | 1.0000000 + 40 | 40 | 40.0000000 | 3 | 200 | 1.0000000 | 1.0000000 | 0 | 1.0000000 + 50 | 50 | 50.0000000 | 2 | 400 | 1.0000000 | 1.0000000 | 0 | 2.0000000 + 30 | 30 | 30.0000000 | 3 | 600 | 12.0000000 | 1.0000000 | 5 | 1.0000000 + 40 | 40 | 40.0000000 | 4 | 800 | 1.0000000 | 1.0000000 | 1 | 1.0000000 + 40 | 40 | 40.0000000 | 2 | 100 | 1100.0000000 | 1.0000000 | 2400 | 1.0000000 + 30 | 30 | 30.0000000 | 1 | 300 | 1.0000000 | 1.0000000 | 0 | 1.0000000 + 50 | 50 | 50.0000000 | 1 | 400 | 1.0000000 | 2.0000000 | 0 | 2.0000000 + 30 | 30 | 30.0000000 | 1 | 500 | 12.0000000 | 1.0000000 | 5 | 2.0000000 + 30 | 30 | 30.0000000 | 3 | 500 | 12.0000000 | 2.0000000 | 5 | 2.0000000 + 40 | 40 | 40.0000000 | 4 | 700 | 1.0000000 | 1.0000000 | 1 | 1.0000000 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn/ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.cn order by ow_sale.cn desc range between floor(ow_sale.prc/ow_sale.vn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.cn order by ow_sale.cn desc range between floor(ow_sale.prc/ow_sale.vn) preceding and current row ), +win2 as (order by ow_sale.pn asc); -- mvd 3,1->7; 3,1->8; 5->9; 5->10; + dt | qty | cn | qty | pn | cn | to_char | to_char | to_char | to_char +------------+------+----+------+-----+----+-------------------+-------------------+-------------------+------------------- + 1401-05-01 | 1 | 1 | 1 | 100 | 1 | 2.0000000 | 1.0000000 | .1666667 | 1.0000000 + 1401-01-01 | 1100 | 2 | 1100 | 100 | 2 | 1102.0000000 | 1.0000000 | .1666667 | 1.0000000 + 1401-03-01 | 1 | 1 | 1 | 200 | 1 | 2.0000000 | 1.0000000 | .3333333 | 3.0000000 + 1401-04-01 | 1 | 3 | 1 | 200 | 3 | 4.0000000 | 1.0000000 | .3333333 | 3.0000000 + 1401-05-02 | 1 | 1 | 1 | 300 | 1 | 2.0000000 | 1.0000000 | .4166667 | 5.0000000 + 1401-06-01 | 1 | 1 | 1 | 400 | 1 | 15.0000000 | 2.0000000 | .5833333 | 6.0000000 + 1401-06-01 | 1 | 2 | 1 | 400 | 2 | 3.0000000 | 1.0000000 | .5833333 | 6.0000000 + 1401-06-01 | 12 | 1 | 12 | 500 | 1 | 15.0000000 | 2.0000000 | .7500000 | 8.0000000 + 1401-06-01 | 12 | 3 | 12 | 500 | 3 | 30.0000000 | 2.0000000 | .7500000 | 8.0000000 + 1401-06-01 | 12 | 3 | 12 | 600 | 3 | 30.0000000 | 2.0000000 | .8333333 | 10.0000000 + 1401-06-01 | 1 | 4 | 1 | 700 | 4 | 10.0000000 | 2.0000000 | .9166667 | 11.0000000 + 1401-06-01 | 1 | 4 | 1 | 800 | 4 | 10.0000000 | 2.0000000 | 1.0000000 | 12.0000000 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.vn asc range between floor(ow_sale.vn*ow_sale.cn) preceding and floor(ow_sale.pn) following ); -- mvd 4,5,6->3; + cn | prc | to_char | dt | vn | pn +----+------+-------------------+------------+----+----- + 1 | 0 | 1.0000000 | 1401-03-01 | 10 | 200 + 3 | 5 | -2.0000000 | 1401-06-01 | 30 | 600 + 4 | 1 | 3.0000000 | 1401-06-01 | 40 | 700 + 1 | 0 | 1.0000000 | 1401-05-01 | 20 | 100 + 1 | 0 | 1.0000000 | 1401-05-02 | 30 | 300 + 1 | 5 | -6.0000000 | 1401-06-01 | 30 | 500 + 3 | 5 | -6.0000000 | 1401-06-01 | 30 | 500 + 2 | 2400 | -2398.0000000 | 1401-01-01 | 40 | 100 + 3 | 0 | 3.0000000 | 1401-04-01 | 40 | 200 + 4 | 1 | 3.0000000 | 1401-06-01 | 40 | 800 + 2 | 0 | 3.0000000 | 1401-06-01 | 50 | 400 + 1 | 0 | 3.0000000 | 1401-06-01 | 50 | 400 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.cn order by ow_sale.cn desc range between floor(ow_sale.prc+ow_sale.qty) preceding and floor(ow_sale.cn*ow_sale.vn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.cn desc range between floor(ow_sale.prc+ow_sale.qty) preceding and floor(ow_sale.cn*ow_sale.vn) following ); -- mvd 4,5->3; 4,5->6; + pn | pn | to_char | cn | dt | to_char +-----+-----+-------------------+----+------------+------------------- + 200 | 200 | 1.0000000 | 3 | 1401-04-01 | 1.0000000 + 100 | 100 | 1.0000000 | 1 | 1401-05-01 | 1.0000000 + 400 | 400 | 1.0000000 | 2 | 1401-06-01 | 1.0000000 + 800 | 800 | 2.0000000 | 4 | 1401-06-01 | 2.0000000 + 700 | 700 | 2.0000000 | 4 | 1401-06-01 | 2.0000000 + 100 | 100 | 1100.0000000 | 2 | 1401-01-01 | 1.0000000 + 200 | 200 | 1.0000000 | 1 | 1401-03-01 | 1.0000000 + 300 | 300 | 1.0000000 | 1 | 1401-05-02 | 1.0000000 + 400 | 400 | 13.0000000 | 1 | 1401-06-01 | 2.0000000 + 500 | 500 | 13.0000000 | 1 | 1401-06-01 | 2.0000000 + 600 | 600 | 24.0000000 | 3 | 1401-06-01 | 2.0000000 + 500 | 500 | 24.0000000 | 3 | 1401-06-01 | 2.0000000 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.vn order by ow_sale.cn desc range between 3 preceding and unbounded following ); -- mvd 5,1,6->4; + vn | prc | vn | to_char | cn | qty +----+------+----+-------------------+----+------ + 50 | 0 | 50 | 400.0000000 | 2 | 1 + 40 | 1 | 40 | 1500.0000000 | 4 | 1 + 40 | 1 | 40 | 1500.0000000 | 4 | 1 + 30 | 5 | 30 | 500.0000000 | 1 | 12 + 30 | 5 | 30 | 1100.0000000 | 3 | 12 + 30 | 5 | 30 | 1100.0000000 | 3 | 12 + 10 | 0 | 10 | 200.0000000 | 1 | 1 + 20 | 0 | 20 | 100.0000000 | 1 | 1 + 30 | 0 | 30 | 300.0000000 | 1 | 1 + 50 | 0 | 50 | 400.0000000 | 1 | 1 + 40 | 0 | 40 | 200.0000000 | 3 | 1 + 40 | 2400 | 40 | 100.0000000 | 2 | 1100 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.qty)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.pn asc range between floor(ow_sale.vn) preceding and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.prc,ow_sale.qty order by ow_sale.vn asc), +win3 as (partition by ow_sale.vn,ow_sale.prc order by ow_sale.vn desc), +win4 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.cn asc); -- mvd 1,5,6->4; 2,8,9,6->7; 2,9->10; 2,8,9,6->11; 2,9->12; 1,5,6->13; + cn | prc | cn | to_char | dt | pn | to_char | qty | vn | to_char | to_char | to_char | to_char +----+------+----+-------------------+------------+-----+-------------------+------+----+-------------------+-------------------+-------------------+------------------- + 1 | 0 | 1 | 9.0000000 | 1401-03-01 | 200 | 1.0000000 | 1 | 10 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 3 | 5 | 3 | 27.0000000 | 1401-06-01 | 600 | 1.0000000 | 12 | 30 | 1.0000000 | 1.0000000 | 144.0000000 | .0000000 + 4 | 1 | 4 | 36.0000000 | 1401-06-01 | 700 | 1.0000000 | 1 | 40 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 2 | 2400 | 2 | 38.0000000 | 1401-01-01 | 100 | 1.0000000 | 1100 | 40 | 1.0000000 | 1.0000000 | 1210000.0000000 | .0000000 + 3 | 0 | 3 | 37.0000000 | 1401-04-01 | 200 | 1.0000000 | 1 | 40 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 1 | 0 | 1 | 19.0000000 | 1401-05-01 | 100 | 1.0000000 | 1 | 20 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 1 | 0 | 1 | 29.0000000 | 1401-05-02 | 300 | 1.0000000 | 1 | 30 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 1 | 0 | 1 | 49.0000000 | 1401-06-01 | 400 | 1.0000000 | 1 | 50 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 2 | 0 | 2 | 48.0000000 | 1401-06-01 | 400 | 1.0000000 | 1 | 50 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 5 | 1 | 29.0000000 | 1401-06-01 | 500 | 1.0000000 | 12 | 30 | 1.0000000 | 1.0000000 | 144.0000000 | .0000000 + 3 | 5 | 3 | 27.0000000 | 1401-06-01 | 500 | 1.0000000 | 12 | 30 | 1.0000000 | 1.0000000 | 144.0000000 | 1.0000000 + 4 | 1 | 4 | 36.0000000 | 1401-06-01 | 800 | 1.0000000 | 1 | 40 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.qty order by ow_sale.pn desc range between current row and current row ); -- mvd 4,5,1,2->3; + vn | pn | to_char | prc | qty +----+-----+-------------------+------+------ + 20 | 100 | 1.0000000 | 0 | 1 + 10 | 200 | 1.0000000 | 0 | 1 + 40 | 200 | 3.0000000 | 0 | 1 + 30 | 500 | 4.0000000 | 5 | 12 + 30 | 500 | 4.0000000 | 5 | 12 + 40 | 800 | 4.0000000 | 1 | 1 + 40 | 100 | 2.0000000 | 2400 | 1100 + 30 | 300 | 1.0000000 | 0 | 1 + 50 | 400 | 3.0000000 | 0 | 1 + 50 | 400 | 3.0000000 | 0 | 1 + 30 | 600 | 3.0000000 | 5 | 12 + 40 | 700 | 4.0000000 | 1 | 1 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc order by ow_sale.vn asc range between current row and floor(ow_sale.prc) following ); -- mvd 5,1->7; + vn | qty | vn | pn | prc | pn | to_char +----+------+----+-----+------+-----+------------------- + 40 | 1 | 40 | 800 | 1 | 800 | .0000000 + 40 | 1 | 40 | 700 | 1 | 700 | .0000000 + 10 | 1 | 10 | 200 | 0 | 200 | .0000000 + 20 | 1 | 20 | 100 | 0 | 100 | .0000000 + 30 | 1 | 30 | 300 | 0 | 300 | .0000000 + 30 | 12 | 30 | 500 | 5 | 500 | .0000000 + 30 | 12 | 30 | 500 | 5 | 500 | .0000000 + 30 | 12 | 30 | 600 | 5 | 600 | .0000000 + 40 | 1 | 40 | 200 | 0 | 200 | .0000000 + 40 | 1100 | 40 | 100 | 2400 | 100 | .0000000 + 50 | 1 | 50 | 400 | 0 | 400 | .0000000 + 50 | 1 | 50 | 400 | 0 | 400 | .0000000 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.cn asc range between current row and floor(ow_sale.prc/ow_sale.pn) following ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc); -- mvd 3,1,7,4->6; 2->8; 2->9; 11,3,1,2,4->10; 11,3,1,2,4->12; 2->13; + dt | vn | cn | pn | pn | to_char | qty | to_char | to_char | to_char | prc | to_char | to_char +------------+----+----+-----+-----+-------------------+------+-------------------+-------------------+-------------------+------+-------------------+------------------- + 1401-06-01 | 50 | 2 | 400 | 400 | 400.0000000 | 1 | 1.0000000 | 1.0000000 | .0000000 | 0 | 1.0000000 | .1666667 + 1401-06-01 | 50 | 1 | 400 | 400 | 400.0000000 | 1 | 1.0000000 | 1.0000000 | 1.0000000 | 0 | 1.0000000 | .1666667 + 1401-04-01 | 40 | 3 | 200 | 200 | 200.0000000 | 1 | 3.0000000 | 2.0000000 | .0000000 | 0 | 1.0000000 | .5000000 + 1401-06-01 | 40 | 4 | 700 | 700 | 700.0000000 | 1 | 3.0000000 | 2.0000000 | .0000000 | 1 | 1.0000000 | .5000000 + 1401-01-01 | 40 | 2 | 100 | 100 | 100.0000000 | 1100 | 3.0000000 | 2.0000000 | .0000000 | 2400 | 1100.0000000 | .5000000 + 1401-06-01 | 40 | 4 | 800 | 800 | 800.0000000 | 1 | 3.0000000 | 2.0000000 | .0000000 | 1 | 1.0000000 | .5000000 + 1401-06-01 | 30 | 1 | 500 | 500 | 500.0000000 | 12 | 7.0000000 | 3.0000000 | 1.0000000 | 5 | 12.0000000 | .8333333 + 1401-06-01 | 30 | 3 | 500 | 500 | 500.0000000 | 12 | 7.0000000 | 3.0000000 | .0000000 | 5 | 12.0000000 | .8333333 + 1401-05-02 | 30 | 1 | 300 | 300 | 300.0000000 | 1 | 7.0000000 | 3.0000000 | .0000000 | 0 | 1.0000000 | .8333333 + 1401-06-01 | 30 | 3 | 600 | 600 | 600.0000000 | 12 | 7.0000000 | 3.0000000 | .0000000 | 5 | 12.0000000 | .8333333 + 1401-05-01 | 20 | 1 | 100 | 100 | 100.0000000 | 1 | 11.0000000 | 4.0000000 | .0000000 | 0 | 1.0000000 | .9166667 + 1401-03-01 | 10 | 1 | 200 | 200 | 200.0000000 | 1 | 12.0000000 | 5.0000000 | .0000000 | 0 | 1.0000000 | 1.0000000 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn asc range between current row and unbounded following ); -- mvd 3,4->2; + cn | to_char | dt | vn +----+-------------------+------------+---- + 2 | 1060.0000000 | 1401-01-01 | 40 + 3 | -39.0000000 | 1401-04-01 | 40 + 1 | -19.0000000 | 1401-05-01 | 20 + 1 | -9.0000000 | 1401-03-01 | 10 + 1 | -29.0000000 | 1401-05-02 | 30 + 3 | -230.0000000 | 1401-06-01 | 30 + 1 | -230.0000000 | 1401-06-01 | 30 + 3 | -230.0000000 | 1401-06-01 | 30 + 4 | -176.0000000 | 1401-06-01 | 40 + 4 | -176.0000000 | 1401-06-01 | 40 + 1 | -98.0000000 | 1401-06-01 | 50 + 2 | -98.0000000 | 1401-06-01 | 50 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty*ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.pn asc range between current row and unbounded following ), +win2 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,4,5->2; 7,4->6; + qty | to_char | dt | vn | pn | to_char | cn +------+-------------------+------------+----+-----+-------------------+---- + 1 | 200.0000000 | 1401-03-01 | 10 | 200 | .0000000 | 1 + 1 | 100.0000000 | 1401-05-01 | 20 | 100 | .0000000 | 1 + 1 | 300.0000000 | 1401-05-02 | 30 | 300 | .0000000 | 1 + 12 | 1000.0000000 | 1401-06-01 | 30 | 500 | .0000000 | 1 + 12 | 1000.0000000 | 1401-06-01 | 30 | 500 | .0000000 | 3 + 12 | 600.0000000 | 1401-06-01 | 30 | 600 | .0000000 | 3 + 1100 | 100.0000000 | 1401-01-01 | 40 | 100 | .0000000 | 2 + 1 | 200.0000000 | 1401-04-01 | 40 | 200 | .0000000 | 3 + 1 | 700.0000000 | 1401-06-01 | 40 | 700 | .0000000 | 4 + 1 | 800.0000000 | 1401-06-01 | 40 | 800 | .0000000 | 4 + 1 | 800.0000000 | 1401-06-01 | 50 | 400 | .0000000 | 1 + 1 | 800.0000000 | 1401-06-01 | 50 | 400 | .0000000 | 2 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.vn asc range between floor(ow_sale.cn) following and floor(ow_sale.qty) following ); -- mvd 3,4->2; + qty | to_char | cn | vn +------+-------------------+----+---- + 1 | .0000000 | 1 | 10 + 1 | .0000000 | 1 | 20 + 1 | .0000000 | 1 | 30 + 12 | .0000000 | 1 | 30 + 1 | .0000000 | 1 | 50 + 12 | -197.0000000 | 3 | 30 + 12 | -197.0000000 | 3 | 30 + 1 | .0000000 | 3 | 40 + 1100 | -398.0000000 | 2 | 40 + 1 | .0000000 | 2 | 50 + 1 | .0000000 | 4 | 40 + 1 | .0000000 | 4 | 40 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.pn desc range between floor(ow_sale.cn+ow_sale.cn) following and 0 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.pn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.pn desc range between floor(ow_sale.cn+ow_sale.cn) following and 0 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.pn desc range between floor(ow_sale.cn+ow_sale.cn) following and 0 following ), +win2 as (partition by ow_sale.pn order by ow_sale.cn asc); -- mvd 4,2,5->3; 4,2,5->6; 2,5->7; 2,5->8; 4,2,5->9; + vn | cn | to_char | dt | pn | to_char | to_char | to_char | to_char +----+----+-------------------+------------+-----+-------------------+-------------------+-------------------+------------------- + 30 | 1 | .0000000 | 1401-05-02 | 300 | .0000000 | 1.0000000 | 1.0000000 | .0000000 + 50 | 1 | .0000000 | 1401-06-01 | 400 | .0000000 | .5000000 | 1.0000000 | .0000000 + 50 | 2 | .0000000 | 1401-06-01 | 400 | .0000000 | 1.0000000 | 2.0000000 | .0000000 + 30 | 1 | .0000000 | 1401-06-01 | 500 | .0000000 | .5000000 | 1.0000000 | .0000000 + 30 | 3 | .0000000 | 1401-06-01 | 500 | .0000000 | 1.0000000 | 2.0000000 | .0000000 + 40 | 4 | .0000000 | 1401-06-01 | 800 | .0000000 | 1.0000000 | 1.0000000 | .0000000 + 20 | 1 | .0000000 | 1401-05-01 | 100 | .0000000 | .5000000 | 1.0000000 | .0000000 + 40 | 2 | .0000000 | 1401-01-01 | 100 | .0000000 | 1.0000000 | 2.0000000 | .0000000 + 10 | 1 | .0000000 | 1401-03-01 | 200 | .0000000 | .5000000 | 1.0000000 | .0000000 + 40 | 3 | .0000000 | 1401-04-01 | 200 | .0000000 | 1.0000000 | 2.0000000 | .0000000 + 30 | 3 | .0000000 | 1401-06-01 | 600 | .0000000 | 1.0000000 | 1.0000000 | .0000000 + 40 | 4 | .0000000 | 1401-06-01 | 700 | .0000000 | 1.0000000 | 1.0000000 | .0000000 +(12 rows) + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn/ow_sale.vn)) OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc range between 1 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn+ow_sale.qty)) OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc range between 1 following and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.cn desc); -- mvd 4,5,6,7->3; 4->8; 4->9; 4,5,6,7->10; 4->11; 4->12; + vn | prc | to_char | cn | dt | qty | pn | to_char | to_char | to_char | to_char | to_char +----+------+-------------------+----+------------+------+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 40 | 1 | .0000000 | 4 | 1401-06-01 | 1 | 800 | 1.0000000 | 20.0000000 | .0000000 | 701.0000000 | 1.0000000 + 40 | 1 | .0000000 | 4 | 1401-06-01 | 1 | 700 | 1.0000000 | 20.0000000 | .0000000 | 701.0000000 | 2.0000000 + 30 | 5 | 5.0000000 | 3 | 1401-06-01 | 12 | 500 | 3.0000000 | 20.0000000 | 1.0000000 | 201.0000000 | 3.0000000 + 30 | 5 | .0000000 | 3 | 1401-06-01 | 12 | 600 | 3.0000000 | 20.0000000 | .0000000 | 201.0000000 | 4.0000000 + 40 | 0 | .0000000 | 3 | 1401-04-01 | 1 | 200 | 3.0000000 | 20.0000000 | .0000000 | 201.0000000 | 5.0000000 + 50 | 0 | .0000000 | 2 | 1401-06-01 | 1 | 400 | 6.0000000 | 20.0000000 | 1.0000000 | 201.0000000 | 6.0000000 + 40 | 2400 | .0000000 | 2 | 1401-01-01 | 1100 | 100 | 6.0000000 | 20.0000000 | .0000000 | 201.0000000 | 7.0000000 + 10 | 0 | .0000000 | 1 | 1401-03-01 | 1 | 200 | 8.0000000 | 20.0000000 | .0000000 | 101.0000000 | 8.0000000 + 30 | 5 | .0000000 | 1 | 1401-06-01 | 12 | 500 | 8.0000000 | 20.0000000 | .0000000 | 101.0000000 | 9.0000000 + 50 | 0 | .0000000 | 1 | 1401-06-01 | 1 | 400 | 8.0000000 | 20.0000000 | .0000000 | 101.0000000 | 10.0000000 + 20 | 0 | .0000000 | 1 | 1401-05-01 | 1 | 100 | 8.0000000 | 20.0000000 | .0000000 | 101.0000000 | 11.0000000 + 30 | 0 | .0000000 | 1 | 1401-05-02 | 1 | 300 | 8.0000000 | 20.0000000 | .0000000 | 101.0000000 | 12.0000000 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc rows unbounded preceding ); -- mvd 3,6,7,1,8->5; + qty | qty | prc | qty | to_char | cn | dt | pn +------+------+------+------+-------------------+----+------------+----- + 1 | 1 | 0 | 1 | .0000000 | 1 | 1401-03-01 | 200 + 1 | 1 | 0 | 1 | .0000000 | 1 | 1401-05-02 | 300 + 1 | 1 | 0 | 1 | .0000000 | 1 | 1401-06-01 | 400 + 1 | 1 | 1 | 1 | 1.0000000 | 4 | 1401-06-01 | 700 + 1 | 1 | 1 | 1 | 2.0000000 | 4 | 1401-06-01 | 800 + 1100 | 1100 | 2400 | 1100 | 2400.0000000 | 2 | 1401-01-01 | 100 + 1 | 1 | 0 | 1 | .0000000 | 3 | 1401-04-01 | 200 + 1 | 1 | 0 | 1 | .0000000 | 1 | 1401-05-01 | 100 + 1 | 1 | 0 | 1 | .0000000 | 2 | 1401-06-01 | 400 + 12 | 12 | 5 | 12 | 5.0000000 | 1 | 1401-06-01 | 500 + 12 | 12 | 5 | 12 | 5.0000000 | 3 | 1401-06-01 | 500 + 12 | 12 | 5 | 12 | 10.0000000 | 3 | 1401-06-01 | 600 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows unbounded preceding ), +win2 as (order by ow_sale.vn asc); -- mvd 2,7,8,3->6; 8->9; 8->10; + pn | dt | qty | qty | pn | to_char | cn | vn | to_char | to_char +-----+------------+------+------+-----+-------------------+----+----+-------------------+------------------- + 200 | 1401-03-01 | 1 | 1 | 200 | 1.0000000 | 1 | 10 | .0833333 | 1.0000000 + 100 | 1401-05-01 | 1 | 1 | 100 | 1.0000000 | 1 | 20 | .1666667 | 2.0000000 + 500 | 1401-06-01 | 12 | 12 | 500 | 12.0000000 | 1 | 30 | .5000000 | 3.0000000 + 500 | 1401-06-01 | 12 | 12 | 500 | 12.0000000 | 3 | 30 | .5000000 | 3.0000000 + 600 | 1401-06-01 | 12 | 12 | 600 | 24.0000000 | 3 | 30 | .5000000 | 3.0000000 + 300 | 1401-05-02 | 1 | 1 | 300 | 1.0000000 | 1 | 30 | .5000000 | 3.0000000 + 100 | 1401-01-01 | 1100 | 1100 | 100 | 1100.0000000 | 2 | 40 | .8333333 | 7.0000000 + 200 | 1401-04-01 | 1 | 1 | 200 | 1.0000000 | 3 | 40 | .8333333 | 7.0000000 + 700 | 1401-06-01 | 1 | 1 | 700 | 1.0000000 | 4 | 40 | .8333333 | 7.0000000 + 800 | 1401-06-01 | 1 | 1 | 800 | 2.0000000 | 4 | 40 | .8333333 | 7.0000000 + 400 | 1401-06-01 | 1 | 1 | 400 | 1.0000000 | 2 | 50 | 1.0000000 | 11.0000000 + 400 | 1401-06-01 | 1 | 1 | 400 | 1.0000000 | 1 | 50 | 1.0000000 | 11.0000000 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.cn asc rows floor(ow_sale.qty) preceding ); -- mvd 2,1->3; + pn | cn | to_char +-----+----+------------------- + 100 | 1 | 19.0000000 + 200 | 1 | 9.0000000 + 400 | 2 | 49.0000000 + 200 | 3 | 39.0000000 + 600 | 3 | 18.0000000 + 800 | 4 | 39.0000000 + 300 | 1 | 29.0000000 + 400 | 1 | 49.0000000 + 500 | 1 | 18.0000000 + 100 | 2 | -1060.0000000 + 500 | 3 | 18.0000000 + 700 | 4 | 39.0000000 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows current row ); -- mvd 3,4,5,6->2; + prc | to_char | cn | dt | qty | vn +------+-------------------+----+------------+------+---- + 0 | 1.0000000 | 1 | 1401-05-01 | 1 | 20 + 5 | 6.0000000 | 1 | 1401-06-01 | 12 | 30 + 5 | 8.0000000 | 3 | 1401-06-01 | 12 | 30 + 5 | 8.0000000 | 3 | 1401-06-01 | 12 | 30 + 0 | 3.0000000 | 3 | 1401-04-01 | 1 | 40 + 0 | 1.0000000 | 1 | 1401-03-01 | 1 | 10 + 0 | 1.0000000 | 1 | 1401-05-02 | 1 | 30 + 1 | 5.0000000 | 4 | 1401-06-01 | 1 | 40 + 1 | 5.0000000 | 4 | 1401-06-01 | 1 | 40 + 2400 | 2402.0000000 | 2 | 1401-01-01 | 1100 | 40 + 0 | 1.0000000 | 1 | 1401-06-01 | 1 | 50 + 0 | 2.0000000 | 2 | 1401-06-01 | 1 | 50 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows current row ); -- mvd 7,2,4,3->6; 7,2,4,3->8; + prc | dt | pn | vn | qty | to_char | cn | to_char +------+------------+-----+----+------+-------------------+----+------------------- + 0 | 1401-05-01 | 100 | 20 | 1 | 101.0000000 | 1 | 1.0000000 + 0 | 1401-04-01 | 200 | 40 | 1 | 203.0000000 | 3 | 3.0000000 + 0 | 1401-05-02 | 300 | 30 | 1 | 301.0000000 | 1 | 1.0000000 + 0 | 1401-06-01 | 400 | 50 | 1 | 401.0000000 | 1 | 1.0000000 + 5 | 1401-06-01 | 500 | 30 | 12 | 501.0000000 | 1 | 12.0000000 + 5 | 1401-06-01 | 500 | 30 | 12 | 503.0000000 | 3 | 36.0000000 + 1 | 1401-06-01 | 700 | 40 | 1 | 704.0000000 | 4 | 4.0000000 + 2400 | 1401-01-01 | 100 | 40 | 1100 | 102.0000000 | 2 | 2200.0000000 + 0 | 1401-03-01 | 200 | 10 | 1 | 201.0000000 | 1 | 1.0000000 + 0 | 1401-06-01 | 400 | 50 | 1 | 402.0000000 | 2 | 2.0000000 + 5 | 1401-06-01 | 600 | 30 | 12 | 603.0000000 | 3 | 36.0000000 + 1 | 1401-06-01 | 800 | 40 | 1 | 804.0000000 | 4 | 4.0000000 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.vn desc rows between unbounded preceding and 7 preceding ); -- mvd 7,1->6; + vn | pn | vn | prc | pn | to_char | cn +----+-----+----+------+-----+-------------------+---- + 10 | 200 | 10 | 0 | 200 | .0000000 | 1 + 20 | 100 | 20 | 0 | 100 | .0000000 | 1 + 30 | 300 | 30 | 0 | 300 | .0000000 | 1 + 30 | 500 | 30 | 5 | 500 | .0000000 | 1 + 30 | 500 | 30 | 5 | 500 | .0000000 | 3 + 30 | 600 | 30 | 5 | 600 | .0000000 | 3 + 40 | 200 | 40 | 0 | 200 | .0000000 | 3 + 50 | 400 | 50 | 0 | 400 | .0000000 | 1 + 40 | 100 | 40 | 2400 | 100 | .0000000 | 2 + 40 | 700 | 40 | 1 | 700 | .0000000 | 4 + 40 | 800 | 40 | 1 | 800 | .0000000 | 4 + 50 | 400 | 50 | 0 | 400 | .0000000 | 2 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.pn,ow_sale.vn order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and 2 preceding ), +win2 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.cn desc); -- mvd 5,1,6,7->4; 1,2,7->8; 1,2,7->9; 1,2,7->10; + cn | vn | vn | to_char | prc | dt | pn | to_char | to_char | to_char +----+----+----+-------------------+------+------------+-----+-------------------+-------------------+------------------- + 1 | 10 | 10 | .0000000 | 0 | 1401-03-01 | 200 | .0000000 | 1.0000000 | 10.0000000 + 4 | 40 | 40 | .0000000 | 1 | 1401-06-01 | 800 | .0000000 | 1.0000000 | 40.0000000 + 3 | 30 | 30 | .0000000 | 5 | 1401-06-01 | 600 | .0000000 | 1.0000000 | 30.0000000 + 2 | 40 | 40 | .0000000 | 2400 | 1401-01-01 | 100 | .0000000 | 1.0000000 | 40.0000000 + 3 | 40 | 40 | .0000000 | 0 | 1401-04-01 | 200 | .0000000 | 1.0000000 | 40.0000000 + 1 | 20 | 20 | .0000000 | 0 | 1401-05-01 | 100 | .0000000 | 1.0000000 | 20.0000000 + 1 | 30 | 30 | .0000000 | 0 | 1401-05-02 | 300 | .0000000 | 1.0000000 | 30.0000000 + 1 | 50 | 50 | .0000000 | 0 | 1401-06-01 | 400 | 1.0000000 | 2.0000000 | 50.0000000 + 2 | 50 | 50 | .0000000 | 0 | 1401-06-01 | 400 | .0000000 | 1.0000000 | 50.0000000 + 4 | 40 | 40 | .0000000 | 1 | 1401-06-01 | 700 | .0000000 | 1.0000000 | 40.0000000 + 1 | 30 | 30 | .0000000 | 5 | 1401-06-01 | 500 | 1.0000000 | 2.0000000 | 30.0000000 + 3 | 30 | 30 | .0000000 | 5 | 1401-06-01 | 500 | .0000000 | 1.0000000 | 30.0000000 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and current row ); -- mvd 3,1,4->2; + vn | to_char | cn | pn +----+-------------------+----+----- + 30 | 1.0000000 | 1 | 300 + 50 | 1.0000000 | 1 | 400 + 50 | 2.0000000 | 2 | 400 + 30 | 12.0000000 | 1 | 500 + 30 | 24.0000000 | 3 | 500 + 40 | 1.0000000 | 4 | 800 + 20 | 1.0000000 | 1 | 100 + 40 | 1100.0000000 | 2 | 100 + 10 | 1.0000000 | 1 | 200 + 40 | 1.0000000 | 3 | 200 + 30 | 12.0000000 | 3 | 600 + 40 | 1.0000000 | 4 | 700 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc); -- mvd 4,5,6->3; 8,1,5->7; + cn | cn | to_char | qty | vn | pn | to_char | dt +----+----+-------------------+------+----+-----+-------------------+------------ + 1 | 1 | 1.0000000 | 1 | 20 | 100 | .0000000 | 1401-05-01 + 1 | 1 | 1.0000000 | 1 | 10 | 200 | .0000000 | 1401-03-01 + 3 | 3 | 3.0000000 | 1 | 40 | 200 | .0000000 | 1401-04-01 + 1 | 1 | 1.0000000 | 12 | 30 | 500 | .0000000 | 1401-06-01 + 3 | 3 | 4.0000000 | 12 | 30 | 500 | .0000000 | 1401-06-01 + 4 | 4 | 4.0000000 | 1 | 40 | 700 | .0000000 | 1401-06-01 + 2 | 2 | 2.0000000 | 1100 | 40 | 100 | .0000000 | 1401-01-01 + 1 | 1 | 1.0000000 | 1 | 30 | 300 | .0000000 | 1401-05-02 + 1 | 1 | 1.0000000 | 1 | 50 | 400 | .0000000 | 1401-06-01 + 2 | 2 | 3.0000000 | 1 | 50 | 400 | .0000000 | 1401-06-01 + 3 | 3 | 3.0000000 | 12 | 30 | 600 | .0000000 | 1401-06-01 + 4 | 4 | 4.0000000 | 1 | 40 | 800 | .0000000 | 1401-06-01 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.pn*ow_sale.prc) following ); -- mvd 4,2,5->3; + qty | vn | to_char | dt | pn +------+----+-------------------+------------+----- + 1 | 10 | -1.0000000 | 1401-03-01 | 200 + 12 | 30 | 2.0000000 | 1401-06-01 | 600 + 1 | 40 | -3.0000000 | 1401-06-01 | 700 + 1100 | 40 | 2398.0000000 | 1401-01-01 | 100 + 1 | 40 | -3.0000000 | 1401-04-01 | 200 + 1 | 20 | -1.0000000 | 1401-05-01 | 100 + 1 | 30 | -1.0000000 | 1401-05-02 | 300 + 1 | 50 | -1.0000000 | 1401-06-01 | 400 + 1 | 50 | -3.0000000 | 1401-06-01 | 400 + 12 | 30 | 6.0000000 | 1401-06-01 | 500 + 12 | 30 | 6.0000000 | 1401-06-01 | 500 + 1 | 40 | -3.0000000 | 1401-06-01 | 800 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.pn desc rows between unbounded preceding and unbounded following ); -- mvd 2,4->3; + vn | cn | to_char | pn +----+----+-------------------+----- + 10 | 1 | 140.0000000 | 200 + 20 | 1 | 140.0000000 | 100 + 30 | 1 | 140.0000000 | 300 + 50 | 1 | 140.0000000 | 400 + 30 | 1 | 140.0000000 | 500 + 40 | 3 | 100.0000000 | 200 + 30 | 3 | 100.0000000 | 500 + 30 | 3 | 100.0000000 | 600 + 40 | 2 | 90.0000000 | 100 + 50 | 2 | 90.0000000 | 400 + 40 | 4 | 80.0000000 | 700 + 40 | 4 | 80.0000000 | 800 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc/ow_sale.qty)) OVER(partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.pn desc rows between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.prc)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.pn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.qty order by ow_sale.pn asc), +win3 as (partition by ow_sale.qty order by ow_sale.pn desc); -- mvd 2,5,1,6->4; 2,1,6->7; 2,5,1,6->8; 2,1,6->9; 1,6->10; 2,1,6->11; + qty | cn | qty | to_char | vn | pn | to_char | to_char | to_char | to_char | to_char +------+----+------+-------------------+----+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | 4 | 1 | 2.0000000 | 40 | 800 | .0000000 | 8.0000000 | 1.0000000 | .1250000 | 1.0000000 + 1 | 4 | 1 | 2.0000000 | 40 | 700 | .0000000 | 8.0000000 | 1.0000000 | .2500000 | 1.0000000 + 1 | 1 | 1 | 2.0000000 | 50 | 400 | .0000000 | 8.0000000 | 1.0000000 | .5000000 | 1.0000000 + 1 | 2 | 1 | 2.0000000 | 50 | 400 | .0000000 | 8.0000000 | 1.0000000 | .5000000 | 1.0000000 + 1 | 1 | 1 | 2.0000000 | 30 | 300 | .0000000 | 8.0000000 | 1.0000000 | .6250000 | 1.0000000 + 1 | 1 | 1 | 2.0000000 | 10 | 200 | .0000000 | 8.0000000 | 1.0000000 | .8750000 | 1.0000000 + 1 | 3 | 1 | 2.0000000 | 40 | 200 | .0000000 | 8.0000000 | 1.0000000 | .8750000 | 1.0000000 + 1 | 1 | 1 | 2.0000000 | 20 | 100 | .0000000 | 8.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 12 | 3 | 12 | 15.0000000 | 30 | 600 | .0000000 | 3.0000000 | 1.0000000 | .3333333 | 1.0000000 + 12 | 1 | 12 | 15.0000000 | 30 | 500 | .0000000 | 3.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 12 | 3 | 12 | 15.0000000 | 30 | 500 | .0000000 | 3.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1100 | 2 | 1100 | 2400.0000000 | 40 | 100 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between floor(ow_sale.cn) preceding and floor(ow_sale.qty) preceding ); -- mvd 2,4,1->3; + pn | cn | to_char | vn +-----+----+-------------------+---- + 200 | 1 | .0000000 | 10 + 100 | 1 | .0000000 | 20 + 600 | 3 | .0000000 | 30 + 200 | 3 | .0000000 | 40 + 800 | 4 | .0000000 | 40 + 400 | 2 | .0000000 | 50 + 300 | 1 | .0000000 | 30 + 500 | 1 | .0000000 | 30 + 500 | 3 | .0000000 | 30 + 100 | 2 | .0000000 | 40 + 700 | 4 | .0000000 | 40 + 400 | 1 | .0000000 | 50 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty+ow_sale.cn) as int),cast (floor(ow_sale.vn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.cn asc rows between 1 preceding and floor(ow_sale.qty) preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.vn desc); -- mvd 3,4,1->2; 3->5; 4->6; 3->7; + pn | to_char | cn | vn | to_char | to_char | to_char +-----+-------------------+----+----+-------------------+-------------------+------------------- + 400 | 1.0000000 | 2 | 50 | .0000000 | 1.0000000 | 7.0000000 + 400 | .0000000 | 1 | 50 | .0000000 | 2.0000000 | 6.0000000 + 800 | .0000000 | 4 | 40 | .0000000 | 3.0000000 | 12.0000000 + 200 | 1.0000000 | 3 | 40 | .0000000 | 4.0000000 | 3.0000000 + 700 | .0000000 | 4 | 40 | .0000000 | 5.0000000 | 11.0000000 + 100 | .0000000 | 2 | 40 | .0000000 | 6.0000000 | 1.0000000 + 500 | .0000000 | 1 | 30 | .0000000 | 7.0000000 | 8.0000000 + 500 | .0000000 | 3 | 30 | .0000000 | 8.0000000 | 9.0000000 + 600 | .0000000 | 3 | 30 | .0000000 | 9.0000000 | 10.0000000 + 300 | .0000000 | 1 | 30 | .0000000 | 10.0000000 | 5.0000000 + 100 | 2.0000000 | 1 | 20 | .0000000 | 11.0000000 | 4.0000000 + 200 | .0000000 | 1 | 10 | .0000000 | 12.0000000 | 2.0000000 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between floor(ow_sale.pn*ow_sale.pn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty+ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between floor(ow_sale.pn*ow_sale.pn) preceding and current row ), +win2 as (partition by ow_sale.vn order by ow_sale.pn desc), +win3 as (order by ow_sale.vn asc), +win4 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc); -- mvd 3,1,2,4->5; 1,4->6; 1->7; 1->8; 3,1,2,4->9; 3,1,4->10; + vn | qty | cn | pn | to_char | to_char | to_char | to_char | to_char | to_char +----+------+----+-----+-------------------+-------------------+-------------------+-------------------+-------------------+------------------- + 10 | 1 | 1 | 200 | 11.0000000 | 1.0000000 | .0000000 | .0000000 | 200.0000000 | .0000000 + 20 | 1 | 1 | 100 | 21.0000000 | 1.0000000 | .0909091 | .0909091 | 100.0000000 | .0000000 + 30 | 12 | 3 | 600 | 42.0000000 | 1.0000000 | .1818182 | .1818182 | 600.0000000 | .0000000 + 30 | 12 | 1 | 500 | 42.0000000 | 2.0000000 | .1818182 | .1818182 | 500.0000000 | .0000000 + 30 | 12 | 3 | 500 | 84.0000000 | 2.0000000 | .1818182 | .1818182 | 500.0000000 | .0000000 + 30 | 1 | 1 | 300 | 31.0000000 | 4.0000000 | .1818182 | .1818182 | 300.0000000 | .0000000 + 40 | 1 | 4 | 800 | 41.0000000 | 1.0000000 | .5454545 | .5454545 | 800.0000000 | .0000000 + 40 | 1 | 4 | 700 | 41.0000000 | 2.0000000 | .5454545 | .5454545 | 700.0000000 | .0000000 + 40 | 1 | 3 | 200 | 41.0000000 | 3.0000000 | .5454545 | .5454545 | 200.0000000 | .0000000 + 40 | 1100 | 2 | 100 | 1140.0000000 | 4.0000000 | .5454545 | .5454545 | 100.0000000 | .0000000 + 50 | 1 | 1 | 400 | 51.0000000 | 1.0000000 | .9090909 | .9090909 | 400.0000000 | .0000000 + 50 | 1 | 2 | 400 | 102.0000000 | 1.0000000 | .9090909 | .9090909 | 400.0000000 | .0000000 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.qty*ow_sale.cn) preceding and 5 following ); -- mvd 8,2,1->7; + pn | cn | pn | cn | cn | cn | to_char | dt +-----+----+-----+----+----+----+-------------------+------------ + 100 | 1 | 100 | 1 | 1 | 1 | 1.0000000 | 1401-05-01 + 200 | 3 | 200 | 3 | 3 | 3 | 1.0000000 | 1401-04-01 + 300 | 1 | 300 | 1 | 1 | 1 | 1.0000000 | 1401-05-02 + 400 | 1 | 400 | 1 | 1 | 1 | 1.0000000 | 1401-06-01 + 500 | 1 | 500 | 1 | 1 | 1 | 12.0000000 | 1401-06-01 + 500 | 3 | 500 | 3 | 3 | 3 | 12.0000000 | 1401-06-01 + 700 | 4 | 700 | 4 | 4 | 4 | 1.0000000 | 1401-06-01 + 100 | 2 | 100 | 2 | 2 | 2 | 1100.0000000 | 1401-01-01 + 200 | 1 | 200 | 1 | 1 | 1 | 1.0000000 | 1401-03-01 + 400 | 2 | 400 | 2 | 2 | 2 | 1.0000000 | 1401-06-01 + 600 | 3 | 600 | 3 | 3 | 3 | 12.0000000 | 1401-06-01 + 800 | 4 | 800 | 4 | 4 | 4 | 1.0000000 | 1401-06-01 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between floor(ow_sale.cn+ow_sale.cn) preceding and 4 following ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.vn desc); -- mvd 4,5->3; 5->6; 5->7; 5->8; 5->9; + qty | dt | to_char | cn | vn | to_char | to_char | to_char | to_char +------+------------+-------------------+----+----+-------------------+-------------------+-------------------+------------------- + 1 | 1401-06-01 | 130.0000000 | 1 | 50 | .0000000 | .0000000 | 1.0000000 | 1.0000000 + 1 | 1401-06-01 | 90.0000000 | 2 | 50 | .0000000 | .0000000 | 1.0000000 | 1.0000000 + 1100 | 1401-01-01 | 90.0000000 | 2 | 40 | .1818182 | .1818182 | 2.0000000 | 3.0000000 + 1 | 1401-06-01 | 80.0000000 | 4 | 40 | .1818182 | .1818182 | 2.0000000 | 3.0000000 + 1 | 1401-06-01 | 80.0000000 | 4 | 40 | .1818182 | .1818182 | 2.0000000 | 3.0000000 + 1 | 1401-04-01 | 100.0000000 | 3 | 40 | .1818182 | .1818182 | 2.0000000 | 3.0000000 + 12 | 1401-06-01 | 110.0000000 | 1 | 30 | .5454545 | .5454545 | 3.0000000 | 7.0000000 + 12 | 1401-06-01 | 100.0000000 | 3 | 30 | .5454545 | .5454545 | 3.0000000 | 7.0000000 + 1 | 1401-05-02 | 140.0000000 | 1 | 30 | .5454545 | .5454545 | 3.0000000 | 7.0000000 + 12 | 1401-06-01 | 100.0000000 | 3 | 30 | .5454545 | .5454545 | 3.0000000 | 7.0000000 + 1 | 1401-05-01 | 140.0000000 | 1 | 20 | .9090909 | .9090909 | 4.0000000 | 11.0000000 + 1 | 1401-03-01 | 140.0000000 | 1 | 10 | 1.0000000 | 1.0000000 | 5.0000000 | 12.0000000 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows between 5 preceding and unbounded following ); -- mvd 3,1->4; + pn | cn | prc | to_char +-----+----+------+------------------- + 300 | 1 | 0 | .0000000 + 400 | 1 | 0 | .0000000 + 400 | 2 | 0 | .0000000 + 500 | 1 | 5 | 10.0000000 + 500 | 3 | 5 | 10.0000000 + 700 | 4 | 1 | 1.0000000 + 100 | 1 | 0 | .0000000 + 100 | 2 | 2400 | 2400.0000000 + 200 | 1 | 0 | .0000000 + 200 | 3 | 0 | .0000000 + 600 | 3 | 5 | 5.0000000 + 800 | 4 | 1 | 1.0000000 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.qty)) OVER(partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc,ow_sale.vn asc rows between 0 preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc,ow_sale.vn asc rows between 0 preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.cn desc), +win3 as (order by ow_sale.vn asc), +win4 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.vn asc); -- mvd 3->2; 5,1->4; 5,1->6; 3->7; 3->8; 10,5,3,11->9; + cn | to_char | vn | to_char | dt | to_char | to_char | to_char | to_char | prc | pn +----+-------------------+----+-------------------+------------+-------------------+-------------------+-------------------+-------------------+------+----- + 1 | .0000000 | 10 | 1.0000000 | 1401-03-01 | 1.0000000 | .0000000 | 11.0000000 | 1.0000000 | 0 | 200 + 1 | .0000000 | 20 | 1.0000000 | 1401-05-01 | 1.0000000 | .0909091 | 21.0000000 | 1.0000000 | 0 | 100 + 1 | 15.0000000 | 30 | 1.0000000 | 1401-05-02 | 1.0000000 | .1818182 | 31.0000000 | 1.0000000 | 0 | 300 + 1 | 15.0000000 | 30 | 1.0000000 | 1401-06-01 | 1.0000000 | .1818182 | 42.0000000 | 1.0000000 | 5 | 500 + 3 | 10.0000000 | 30 | 1.0000000 | 1401-06-01 | 1.0000000 | .1818182 | 42.0000000 | 2.0000000 | 5 | 500 + 3 | 5.0000000 | 30 | 1.0000000 | 1401-06-01 | 1.0000000 | .1818182 | 42.0000000 | 1.0000000 | 5 | 600 + 2 | 2402.0000000 | 40 | 1.0000000 | 1401-01-01 | 1.0000000 | .5454545 | 41.0000000 | 1.0000000 | 2400 | 100 + 3 | 2.0000000 | 40 | 1.0000000 | 1401-04-01 | 1.0000000 | .5454545 | 41.0000000 | 1.0000000 | 0 | 200 + 4 | 2.0000000 | 40 | 1.0000000 | 1401-06-01 | 1.0000000 | .5454545 | 41.0000000 | 1.0000000 | 1 | 700 + 4 | 1.0000000 | 40 | 1.0000000 | 1401-06-01 | 1.0000000 | .5454545 | 41.0000000 | 1.0000000 | 1 | 800 + 1 | .0000000 | 50 | 1.0000000 | 1401-06-01 | 1.0000000 | .9090909 | 51.0000000 | 1.0000000 | 0 | 400 + 2 | .0000000 | 50 | 1.0000000 | 1401-06-01 | 1.0000000 | .9090909 | 51.0000000 | 2.0000000 | 0 | 400 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between current row and current row ); -- mvd 5,2,6,7->4; + pn | cn | qty | to_char | prc | dt | vn +-----+----+------+-------------------+------+------------+---- + 200 | 1 | 1 | 1.0000000 | 0 | 1401-03-01 | 10 + 300 | 1 | 1 | 1.0000000 | 0 | 1401-05-02 | 30 + 500 | 1 | 12 | 12.0000000 | 5 | 1401-06-01 | 30 + 500 | 3 | 12 | 12.0000000 | 5 | 1401-06-01 | 30 + 600 | 3 | 12 | 12.0000000 | 5 | 1401-06-01 | 30 + 400 | 1 | 1 | 1.0000000 | 0 | 1401-06-01 | 50 + 400 | 2 | 1 | 1.0000000 | 0 | 1401-06-01 | 50 + 100 | 1 | 1 | 1.0000000 | 0 | 1401-05-01 | 20 + 100 | 2 | 1100 | 1100.0000000 | 2400 | 1401-01-01 | 40 + 200 | 3 | 1 | 1.0000000 | 0 | 1401-04-01 | 40 + 700 | 4 | 1 | 1.0000000 | 1 | 1401-06-01 | 40 + 800 | 4 | 1 | 1.0000000 | 1 | 1401-06-01 | 40 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc rows between current row and floor(ow_sale.pn/ow_sale.vn) following ); -- mvd 7,3,8->6; + prc | prc | qty | cn | qty | to_char | vn | pn +------+------+------+----+------+-------------------+----+----- + 0 | 0 | 1 | 1 | 1 | 200.0000000 | 10 | 200 + 0 | 0 | 1 | 1 | 1 | 100.0000000 | 20 | 100 + 0 | 0 | 1 | 1 | 1 | 300.0000000 | 30 | 300 + 0 | 0 | 1 | 3 | 1 | 1700.0000000 | 40 | 200 + 1 | 1 | 1 | 4 | 1 | 1500.0000000 | 40 | 700 + 1 | 1 | 1 | 4 | 1 | 800.0000000 | 40 | 800 + 0 | 0 | 1 | 1 | 1 | 800.0000000 | 50 | 400 + 0 | 0 | 1 | 2 | 1 | 400.0000000 | 50 | 400 + 5 | 5 | 12 | 1 | 12 | 1600.0000000 | 30 | 500 + 5 | 5 | 12 | 3 | 12 | 1100.0000000 | 30 | 500 + 5 | 5 | 12 | 3 | 12 | 600.0000000 | 30 | 600 + 2400 | 2400 | 1100 | 2 | 1100 | 100.0000000 | 40 | 100 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between current row and 3 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between current row and 3 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between current row and 3 following ), +win2 as (order by ow_sale.pn desc); -- mvd 3,4,5->2; 3,4,5->6; 5->7; 3,4,5->8; + qty | to_char | cn | vn | pn | to_char | to_char | to_char +------+-------------------+----+----+-----+-------------------+-------------------+------------------- + 1 | 800.0000000 | 4 | 40 | 800 | 40.0000000 | 1.0000000 | 1.0000000 + 1 | 700.0000000 | 4 | 40 | 700 | 40.0000000 | 2.0000000 | 1.0000000 + 12 | 600.0000000 | 3 | 30 | 600 | 30.0000000 | 3.0000000 | 5.0000000 + 12 | 1000.0000000 | 1 | 30 | 500 | 30.0000000 | 4.0000000 | 5.0000000 + 12 | 500.0000000 | 3 | 30 | 500 | 30.0000000 | 5.0000000 | 5.0000000 + 1 | 800.0000000 | 1 | 50 | 400 | 50.0000000 | 6.0000000 | .0000000 + 1 | 400.0000000 | 2 | 50 | 400 | 50.0000000 | 7.0000000 | .0000000 + 1 | 300.0000000 | 1 | 30 | 300 | 30.0000000 | 8.0000000 | .0000000 + 1 | 200.0000000 | 1 | 10 | 200 | 10.0000000 | 9.0000000 | .0000000 + 1 | 200.0000000 | 3 | 40 | 200 | 40.0000000 | 10.0000000 | .0000000 + 1 | 100.0000000 | 1 | 20 | 100 | 20.0000000 | 11.0000000 | .0000000 + 1100 | 100.0000000 | 2 | 40 | 100 | 40.0000000 | 12.0000000 | 2400.0000000 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ); -- mvd 2->3; + dt | pn | to_char +------------+-----+------------------- + 1401-05-02 | 300 | 1.0000000 + 1401-06-01 | 400 | 2.0000000 + 1401-06-01 | 400 | 1.0000000 + 1401-06-01 | 500 | 2.0000000 + 1401-06-01 | 500 | 1.0000000 + 1401-06-01 | 800 | 1.0000000 + 1401-01-01 | 100 | 2.0000000 + 1401-05-01 | 100 | 1.0000000 + 1401-03-01 | 200 | 2.0000000 + 1401-04-01 | 200 | 1.0000000 + 1401-06-01 | 600 | 1.0000000 + 1401-06-01 | 700 | 1.0000000 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn+ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn-ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.pn order by ow_sale.cn desc), +win4 as (order by ow_sale.pn desc), +win5 as (order by ow_sale.pn asc); -- mvd 5,6,7->4; 5,6,7->8; 5,1->9; 5,1->10; 1->11; 1->12; + pn | qty | prc | to_char | cn | dt | vn | to_char | to_char | to_char | to_char | to_char +-----+------+------+-------------------+----+------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 800 | 1 | 1 | 40.0000000 | 4 | 1401-06-01 | 40 | 1.0000000 | .0000000 | .0000000 | .0000000 | 12.0000000 + 700 | 1 | 1 | 80.0000000 | 4 | 1401-06-01 | 40 | 2.0000000 | .0000000 | .0000000 | .0909091 | 11.0000000 + 600 | 12 | 5 | 360.0000000 | 3 | 1401-06-01 | 30 | 1.0000000 | .0000000 | .0000000 | .1818182 | 10.0000000 + 500 | 12 | 5 | 1080.0000000 | 1 | 1401-06-01 | 30 | 3.0000000 | .0000000 | .0000000 | .2727273 | 8.0000000 + 500 | 12 | 5 | 720.0000000 | 3 | 1401-06-01 | 30 | 2.0000000 | .0000000 | .0000000 | .2727273 | 9.0000000 + 400 | 1 | 0 | 100.0000000 | 1 | 1401-06-01 | 50 | 2.0000000 | .0000000 | .0000000 | .4545455 | 7.0000000 + 400 | 1 | 0 | 50.0000000 | 2 | 1401-06-01 | 50 | 1.0000000 | .0000000 | .0000000 | .4545455 | 6.0000000 + 300 | 1 | 0 | 30.0000000 | 1 | 1401-05-02 | 30 | 1.0000000 | .0000000 | .0000000 | .6363636 | 5.0000000 + 200 | 1 | 0 | 10.0000000 | 1 | 1401-03-01 | 10 | 1.0000000 | .0000000 | .0000000 | .7272727 | 4.0000000 + 200 | 1 | 0 | 40.0000000 | 3 | 1401-04-01 | 40 | 1.0000000 | .0000000 | .0000000 | .7272727 | 3.0000000 + 100 | 1 | 0 | 20.0000000 | 1 | 1401-05-01 | 20 | 1.0000000 | .0000000 | .0000000 | .9090909 | 1.0000000 + 100 | 1100 | 2400 | 44000.0000000 | 2 | 1401-01-01 | 40 | 1.0000000 | .0000000 | .0000000 | .9090909 | 2.0000000 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between floor(ow_sale.qty) following and 7 following ); -- mvd 5,1,2->4; + cn | vn | prc | to_char | dt +----+----+------+-------------------+------------ + 1 | 20 | 0 | .0000000 | 1401-05-01 + 2 | 50 | 0 | .0000000 | 1401-06-01 + 3 | 40 | 0 | .0000000 | 1401-04-01 + 4 | 40 | 1 | .0000000 | 1401-06-01 + 4 | 40 | 1 | .0000000 | 1401-06-01 + 1 | 10 | 0 | .0000000 | 1401-03-01 + 1 | 30 | 0 | .0000000 | 1401-05-02 + 1 | 30 | 5 | .0000000 | 1401-06-01 + 1 | 50 | 0 | .0000000 | 1401-06-01 + 2 | 40 | 2400 | .0000000 | 1401-01-01 + 3 | 30 | 5 | .0000000 | 1401-06-01 + 3 | 30 | 5 | .0000000 | 1401-06-01 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(partition by ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows between 0 following and floor(ow_sale.pn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows between 0 following and floor(ow_sale.pn) following ); -- mvd 4,5,6,7->3; 4,5,6,7->8; + pn | pn | to_char | cn | dt | vn | qty | to_char +-----+-----+-------------------+----+------------+----+------+------------------- + 200 | 200 | 200.0000000 | 1 | 1401-03-01 | 10 | 1 | 200.0000000 + 300 | 300 | 300.0000000 | 1 | 1401-05-02 | 30 | 1 | 300.0000000 + 400 | 400 | 400.0000000 | 1 | 1401-06-01 | 50 | 1 | 400.0000000 + 200 | 200 | 200.0000000 | 3 | 1401-04-01 | 40 | 1 | 200.0000000 + 100 | 100 | 100.0000000 | 1 | 1401-05-01 | 20 | 1 | 100.0000000 + 400 | 400 | 400.0000000 | 2 | 1401-06-01 | 50 | 1 | 400.0000000 + 700 | 700 | 1500.0000000 | 4 | 1401-06-01 | 40 | 1 | 700.0000000 + 800 | 800 | 800.0000000 | 4 | 1401-06-01 | 40 | 1 | 800.0000000 + 500 | 500 | 500.0000000 | 1 | 1401-06-01 | 30 | 12 | 500.0000000 + 500 | 500 | 1100.0000000 | 3 | 1401-06-01 | 30 | 12 | 500.0000000 + 600 | 600 | 600.0000000 | 3 | 1401-06-01 | 30 | 12 | 600.0000000 + 100 | 100 | 100.0000000 | 2 | 1401-01-01 | 40 | 1100 | 100.0000000 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.pn asc rows between 8 following and unbounded following ); -- mvd 3,5,6,7->4; + qty | qty | cn | to_char | dt | vn | pn +------+------+----+-------------------+------------+----+----- + 1 | 1 | 1 | .0000000 | 1401-03-01 | 10 | 200 + 1 | 1 | 1 | .0000000 | 1401-05-01 | 20 | 100 + 12 | 12 | 3 | .0000000 | 1401-06-01 | 30 | 600 + 1 | 1 | 3 | .0000000 | 1401-04-01 | 40 | 200 + 1 | 1 | 4 | .0000000 | 1401-06-01 | 40 | 800 + 1 | 1 | 2 | .0000000 | 1401-06-01 | 50 | 400 + 1 | 1 | 1 | .0000000 | 1401-05-02 | 30 | 300 + 12 | 12 | 1 | .0000000 | 1401-06-01 | 30 | 500 + 12 | 12 | 3 | .0000000 | 1401-06-01 | 30 | 500 + 1100 | 1100 | 2 | .0000000 | 1401-01-01 | 40 | 100 + 1 | 1 | 4 | .0000000 | 1401-06-01 | 40 | 700 + 1 | 1 | 1 | .0000000 | 1401-06-01 | 50 | 400 +(12 rows) + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn/ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between floor(ow_sale.vn) following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between floor(ow_sale.vn) following and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.cn desc), +win3 as (partition by ow_sale.qty order by ow_sale.pn asc), +win4 as (order by ow_sale.cn desc); -- mvd 4,5,6->3; 4,5,6->7; 2,6->8; 1,6->9; 2->10; + qty | cn | to_char | dt | vn | pn | to_char | to_char | to_char | to_char +------+----+-------------------+------------+----+-----+-------------------+-------------------+-------------------+------------------- + 1 | 4 | .0000000 | 1401-06-01 | 40 | 700 | .0000000 | 1.0000000 | .8750000 | .0000000 + 1 | 4 | .0000000 | 1401-06-01 | 40 | 800 | .0000000 | 1.0000000 | 1.0000000 | .0000000 + 12 | 3 | .0000000 | 1401-06-01 | 30 | 500 | .0000000 | 1.0000000 | .6666667 | .1818182 + 1 | 3 | .0000000 | 1401-04-01 | 40 | 200 | .0000000 | 1.0000000 | .3750000 | .1818182 + 12 | 3 | .0000000 | 1401-06-01 | 30 | 600 | .0000000 | 1.0000000 | 1.0000000 | .1818182 + 1100 | 2 | .0000000 | 1401-01-01 | 40 | 100 | .0000000 | 1.0000000 | 1.0000000 | .4545455 + 1 | 2 | .0000000 | 1401-06-01 | 50 | 400 | .0000000 | 1.0000000 | .7500000 | .4545455 + 1 | 1 | .0000000 | 1401-05-01 | 20 | 100 | .0000000 | 1.0000000 | .1250000 | .6363636 + 12 | 1 | .0000000 | 1401-06-01 | 30 | 500 | .0000000 | 1.0000000 | .6666667 | .6363636 + 1 | 1 | .0000000 | 1401-05-02 | 30 | 300 | .0000000 | 1.0000000 | .5000000 | .6363636 + 1 | 1 | .0000000 | 1401-06-01 | 50 | 400 | .0000000 | 1.0000000 | .7500000 | .6363636 + 1 | 1 | .0000000 | 1401-03-01 | 10 | 200 | .0000000 | 1.0000000 | .3750000 | .6363636 +(12 rows) + +-- VAR_POP() function with NULL OVER() clause -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (); -- mvd 6->6; + cn | prc | qty | pn | pn | to_char +----+------+------+-----+-----+------------------- + 1 | 0 | 1 | 200 | 200 | 368221.0763889 + 3 | 0 | 1 | 200 | 200 | 368221.0763889 + 1 | 0 | 1 | 100 | 100 | 368221.0763889 + 2 | 0 | 1 | 400 | 400 | 368221.0763889 + 3 | 5 | 12 | 600 | 600 | 368221.0763889 + 4 | 1 | 1 | 800 | 800 | 368221.0763889 + 2 | 2400 | 1100 | 100 | 100 | 368221.0763889 + 1 | 0 | 1 | 300 | 300 | 368221.0763889 + 1 | 0 | 1 | 400 | 400 | 368221.0763889 + 1 | 5 | 12 | 500 | 500 | 368221.0763889 + 3 | 5 | 12 | 500 | 500 | 368221.0763889 + 4 | 1 | 1 | 700 | 700 | 368221.0763889 +(12 rows) + +-- VAR_POP() function with NULL OVER() clause in combination with other window functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (), +win2 as (order by ow_sale.pn desc); -- mvd 4->4; 6->5; 6->7; 6->8; + cn | vn | qty | to_char | to_char | pn | to_char | to_char +----+----+------+-------------------+-------------------+-----+-------------------+------------------- + 4 | 40 | 1 | 510763.8888889 | 1.0000000 | 800 | .0000000 | 1.0000000 + 4 | 40 | 1 | 510763.8888889 | 2.0000000 | 700 | .0909091 | 2.0000000 + 3 | 30 | 12 | 510763.8888889 | 3.0000000 | 600 | .1818182 | 3.0000000 + 1 | 30 | 12 | 510763.8888889 | 4.0000000 | 500 | .2727273 | 4.0000000 + 3 | 30 | 12 | 510763.8888889 | 4.0000000 | 500 | .2727273 | 4.0000000 + 1 | 50 | 1 | 510763.8888889 | 5.0000000 | 400 | .4545455 | 6.0000000 + 2 | 50 | 1 | 510763.8888889 | 5.0000000 | 400 | .4545455 | 6.0000000 + 1 | 30 | 1 | 510763.8888889 | 6.0000000 | 300 | .6363636 | 8.0000000 + 1 | 10 | 1 | 510763.8888889 | 7.0000000 | 200 | .7272727 | 9.0000000 + 3 | 40 | 1 | 510763.8888889 | 7.0000000 | 200 | .7272727 | 9.0000000 + 1 | 20 | 1 | 510763.8888889 | 8.0000000 | 100 | .9090909 | 11.0000000 + 2 | 40 | 1100 | 510763.8888889 | 8.0000000 | 100 | .9090909 | 11.0000000 +(12 rows) + +-- VAR_POP() function with OVER() clause having ONLY PARTITION BY -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.vn); -- mvd 5,1,6,3->4; + dt | qty | vn | to_char | prc | cn +------------+------+----+-------------------+------+---- + 1401-05-01 | 1 | 20 | .0000000 | 0 | 1 + 1401-06-01 | 1 | 50 | .0000000 | 0 | 2 + 1401-04-01 | 1 | 40 | .0000000 | 0 | 3 + 1401-03-01 | 1 | 10 | .0000000 | 0 | 1 + 1401-05-02 | 1 | 30 | .0000000 | 0 | 1 + 1401-06-01 | 1 | 50 | .0000000 | 0 | 1 + 1401-06-01 | 1 | 40 | .0000000 | 1 | 4 + 1401-06-01 | 1 | 40 | .0000000 | 1 | 4 + 1401-06-01 | 12 | 30 | .0000000 | 5 | 1 + 1401-06-01 | 12 | 30 | .0000000 | 5 | 3 + 1401-06-01 | 12 | 30 | .0000000 | 5 | 3 + 1401-01-01 | 1100 | 40 | .0000000 | 2400 | 2 +(12 rows) + +-- VAR_POP() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.dt),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.dt), +win2 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.pn desc), +win3 as (order by ow_sale.cn asc), +win4 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.vn order by ow_sale.cn asc); -- mvd 7,2,1,4->6; 7,2,1,4->8; 1,10,4->9; 2->11; 1,10,4->12; 2,1,10,4->13; + vn | cn | vn | pn | vn | to_char | dt | to_char | to_char | qty | to_char | to_char | to_char +----+----+----+-----+----+-------------------+------------+-------------------+-------------------+------+-------------------+-------------------+------------------- + 20 | 1 | 20 | 100 | 20 | .0000000 | 1401-05-01 | 1.0000000 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1.0000000 + 30 | 1 | 30 | 300 | 30 | .0000000 | 1401-05-02 | 1.0000000 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1.0000000 + 30 | 1 | 30 | 500 | 30 | .0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 12 | 1.0000000 | 3.0000000 | 1.0000000 + 50 | 1 | 50 | 400 | 50 | .0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 1 | 1.0000000 | 2.0000000 | 1.0000000 + 10 | 1 | 10 | 200 | 10 | .0000000 | 1401-03-01 | 1.0000000 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1.0000000 + 40 | 2 | 40 | 100 | 40 | .0000000 | 1401-01-01 | 1.0000000 | 1.0000000 | 1100 | 6.0000000 | 1.0000000 | 1.0000000 + 50 | 2 | 50 | 400 | 50 | .0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 1 | 6.0000000 | 2.0000000 | 2.0000000 + 30 | 3 | 30 | 600 | 30 | .0000000 | 1401-06-01 | 1.0000000 | .3333333 | 12 | 8.0000000 | 1.0000000 | 1.0000000 + 30 | 3 | 30 | 500 | 30 | .0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 12 | 8.0000000 | 3.0000000 | 2.0000000 + 40 | 3 | 40 | 200 | 40 | .0000000 | 1401-04-01 | 1.0000000 | 1.0000000 | 1 | 8.0000000 | 3.0000000 | 1.0000000 + 40 | 4 | 40 | 700 | 40 | .0000000 | 1401-06-01 | 1.0000000 | .6666667 | 1 | 11.0000000 | 2.0000000 | 1.0000000 + 40 | 4 | 40 | 800 | 40 | .0000000 | 1401-06-01 | 1.0000000 | .3333333 | 1 | 11.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- VAR_POP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc); -- mvd 4->3; + qty | qty | to_char | pn +------+------+-------------------+----- + 1 | 1 | .0000000 | 100 + 1100 | 1100 | .0000000 | 100 + 1 | 1 | 2500.0000000 | 200 + 1 | 1 | 2500.0000000 | 200 + 1 | 1 | 5600.0000000 | 300 + 1 | 1 | 13877.5510204 | 400 + 1 | 1 | 13877.5510204 | 400 + 12 | 12 | 22222.2222222 | 500 + 12 | 12 | 22222.2222222 | 500 + 12 | 12 | 28100.0000000 | 600 + 1 | 1 | 36859.5041322 | 700 + 1 | 1 | 48333.3333333 | 800 +(12 rows) + +-- VAR_POP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.cn)) OVER(order by ow_sale.vn asc,ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc,ow_sale.vn asc); -- mvd 6->5; 6->7; + prc | cn | pn | pn | to_char | vn | to_char +------+----+-----+-----+-------------------+----+------------------- + 0 | 1 | 200 | 200 | .0000000 | 10 | 199.0000000 + 0 | 1 | 100 | 100 | 25.0000000 | 20 | 199.0000000 + 5 | 3 | 600 | 600 | 58.3333333 | 30 | 597.0000000 + 0 | 1 | 300 | 300 | 58.3333333 | 30 | 597.0000000 + 5 | 1 | 500 | 500 | 58.3333333 | 30 | 597.0000000 + 5 | 3 | 500 | 500 | 58.3333333 | 30 | 597.0000000 + 2400 | 2 | 100 | 100 | 89.0000000 | 40 | 796.0000000 + 1 | 4 | 700 | 700 | 89.0000000 | 40 | 796.0000000 + 0 | 3 | 200 | 200 | 89.0000000 | 40 | 796.0000000 + 1 | 4 | 800 | 800 | 89.0000000 | 40 | 796.0000000 + 0 | 2 | 400 | 400 | 124.3055556 | 50 | 796.0000000 + 0 | 1 | 400 | 400 | 124.3055556 | 50 | 796.0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range unbounded preceding ); -- mvd 1->6; + pn | dt | pn | prc | vn | to_char +-----+------------+-----+------+----+------------------- + 100 | 1401-05-01 | 100 | 0 | 20 | .2500000 + 100 | 1401-01-01 | 100 | 2400 | 40 | .2500000 + 200 | 1401-03-01 | 200 | 0 | 10 | 2475.6875000 + 200 | 1401-04-01 | 200 | 0 | 40 | 2475.6875000 + 300 | 1401-05-02 | 300 | 0 | 30 | 5616.6400000 + 400 | 1401-06-01 | 400 | 0 | 50 | 13898.4897959 + 400 | 1401-06-01 | 400 | 0 | 50 | 13898.4897959 + 500 | 1401-06-01 | 500 | 5 | 30 | 22200.6666667 + 500 | 1401-06-01 | 500 | 5 | 30 | 22200.6666667 + 600 | 1401-06-01 | 600 | 5 | 30 | 28008.7600000 + 700 | 1401-06-01 | 700 | 1 | 40 | 36642.4132231 + 800 | 1401-06-01 | 800 | 1 | 40 | 48001.3055556 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn*ow_sale.vn)) OVER(order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range unbounded preceding ), +win2 as (order by ow_sale.pn desc); -- mvd 3->2; 5->4; 5->6; + dt | to_char | vn | to_char | pn | to_char +------------+-------------------+----+-------------------+-----+------------------- + 1401-06-01 | 1.4100000 | 40 | .0833333 | 800 | 1.0000000 + 1401-06-01 | 1.4100000 | 40 | .1666667 | 700 | 2.0000000 + 1401-06-01 | .8888889 | 30 | .2500000 | 600 | 3.0000000 + 1401-06-01 | .8888889 | 30 | .4166667 | 500 | 5.0000000 + 1401-06-01 | .8888889 | 30 | .4166667 | 500 | 5.0000000 + 1401-06-01 | 1.3055556 | 50 | .5833333 | 400 | 7.0000000 + 1401-06-01 | 1.3055556 | 50 | .5833333 | 400 | 7.0000000 + 1401-05-02 | .8888889 | 30 | .6666667 | 300 | 8.0000000 + 1401-03-01 | .0000000 | 10 | .8333333 | 200 | 10.0000000 + 1401-04-01 | 1.4100000 | 40 | .8333333 | 200 | 10.0000000 + 1401-01-01 | 1.4100000 | 40 | 1.0000000 | 100 | 12.0000000 + 1401-05-01 | .0000000 | 20 | 1.0000000 | 100 | 12.0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range floor(ow_sale.vn*ow_sale.pn) preceding ), +win2 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.pn asc), +win3 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.vn asc); -- mvd 2->4; 3,6->5; 8,2,1->7; + vn | cn | prc | to_char | to_char | pn | to_char | dt +----+----+------+-------------------+-------------------+-----+-------------------+------------ + 30 | 1 | 0 | 3271.8400000 | 1.0000000 | 300 | 1.0000000 | 1401-05-02 + 50 | 1 | 0 | 3271.8400000 | 1.0000000 | 400 | 1.0000000 | 1401-06-01 + 30 | 1 | 5 | 3271.8400000 | 1.0000000 | 500 | 1.0000000 | 1401-06-01 + 20 | 1 | 0 | 3271.8400000 | 1.0000000 | 100 | 1.0000000 | 1401-05-01 + 10 | 1 | 0 | 3271.8400000 | 1.0000000 | 200 | 1.0000000 | 1401-03-01 + 40 | 2 | 2400 | ########.### | 1.0000000 | 100 | 1.0000000 | 1401-01-01 + 50 | 2 | 0 | ########.### | 1.0000000 | 400 | 1.0000000 | 1401-06-01 + 30 | 3 | 5 | ########.### | 1.0000000 | 500 | 1.0000000 | 1401-06-01 + 40 | 3 | 0 | ########.### | 1.0000000 | 200 | 1.0000000 | 1401-04-01 + 30 | 3 | 5 | ########.### | 1.0000000 | 600 | 1.0000000 | 1401-06-01 + 40 | 4 | 1 | ########.### | 1.0000000 | 800 | 1.0000000 | 1401-06-01 + 40 | 4 | 1 | ########.### | 1.0000000 | 700 | 1.0000000 | 1401-06-01 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range current row ); -- mvd 1->4; + vn | vn | pn | to_char +----+----+-----+------------------- + 10 | 10 | 200 | .0000000 + 20 | 20 | 100 | .0000000 + 30 | 30 | 300 | 11875.0000000 + 30 | 30 | 500 | 11875.0000000 + 30 | 30 | 500 | 11875.0000000 + 30 | 30 | 600 | 11875.0000000 + 40 | 40 | 700 | 92500.0000000 + 40 | 40 | 200 | 92500.0000000 + 40 | 40 | 800 | 92500.0000000 + 40 | 40 | 100 | 92500.0000000 + 50 | 50 | 400 | .0000000 + 50 | 50 | 400 | .0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range current row ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.vn asc); -- mvd 1->5; 1->6; 1->7; 1->8; + vn | cn | vn | prc | to_char | to_char | to_char | to_char +----+----+----+------+-------------------+-------------------+-------------------+------------------- + 40 | 2 | 40 | 2400 | 4315204.0000000 | .0000000 | 1.0000000 | .8333333 + 10 | 1 | 10 | 0 | .0000000 | 2400.0000000 | 2.0000000 | .0833333 + 40 | 3 | 40 | 0 | 4315204.0000000 | .0000000 | 3.0000000 | .8333333 + 20 | 1 | 20 | 0 | .0000000 | .0000000 | 4.0000000 | .1666667 + 30 | 1 | 30 | 0 | 42.1875000 | .0000000 | 5.0000000 | .5000000 + 50 | 1 | 50 | 0 | .0000000 | .0000000 | 6.0000000 | 1.0000000 + 50 | 2 | 50 | 0 | .0000000 | .0000000 | 7.0000000 | 1.0000000 + 30 | 1 | 30 | 5 | 42.1875000 | .0000000 | 8.0000000 | .5000000 + 30 | 3 | 30 | 5 | 42.1875000 | .0000000 | 9.0000000 | .5000000 + 30 | 3 | 30 | 5 | 42.1875000 | .0000000 | 10.0000000 | .5000000 + 40 | 4 | 40 | 1 | 4315204.0000000 | .0000000 | 11.0000000 | .8333333 + 40 | 4 | 40 | 1 | 4315204.0000000 | 5.0000000 | 12.0000000 | .8333333 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and 4 preceding ); -- mvd 4->3; + qty | dt | to_char | cn +------+------------+-------------------+---- + 1 | 1401-03-01 | .0000000 | 1 + 1 | 1401-05-01 | .0000000 | 1 + 1 | 1401-05-02 | .0000000 | 1 + 12 | 1401-06-01 | .0000000 | 1 + 1 | 1401-06-01 | .0000000 | 1 + 1100 | 1401-01-01 | .0000000 | 2 + 1 | 1401-06-01 | .0000000 | 2 + 12 | 1401-06-01 | .0000000 | 3 + 1 | 1401-04-01 | .0000000 | 3 + 12 | 1401-06-01 | .0000000 | 3 + 1 | 1401-06-01 | .0000000 | 4 + 1 | 1401-06-01 | .0000000 | 4 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn-ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.qty) preceding ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc); -- mvd 6->5; 6,3,2->7; + pn | vn | qty | prc | to_char | cn | to_char +-----+----+------+------+-------------------+----+------------------- + 500 | 30 | 12 | 5 | .0000000 | 1 | 500.0000000 + 200 | 10 | 1 | 0 | .0000000 | 1 | 200.0000000 + 100 | 20 | 1 | 0 | .0000000 | 1 | 100.0000000 + 300 | 30 | 1 | 0 | .0000000 | 1 | 300.0000000 + 400 | 50 | 1 | 0 | .0000000 | 1 | 400.0000000 + 100 | 40 | 1100 | 2400 | .0000000 | 2 | 100.0000000 + 400 | 50 | 1 | 0 | 704.0000000 | 2 | 400.0000000 + 500 | 30 | 12 | 5 | .0000000 | 3 | 500.0000000 + 600 | 30 | 12 | 5 | .0000000 | 3 | 600.0000000 + 200 | 40 | 1 | 0 | 767.3469388 | 3 | 200.0000000 + 700 | 40 | 1 | 1 | 564.0000000 | 4 | 700.0000000 + 800 | 40 | 1 | 1 | 564.0000000 | 4 | 800.0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 3->2; + dt | to_char | cn +------------+-------------------+---- + 1401-06-01 | .0000000 | 4 + 1401-06-01 | .0000000 | 4 + 1401-06-01 | 29.0400000 | 3 + 1401-04-01 | 29.0400000 | 3 + 1401-06-01 | 29.0400000 | 3 + 1401-06-01 | 146931.8367347 | 2 + 1401-01-01 | 146931.8367347 | 2 + 1401-05-02 | 91781.5555556 | 1 + 1401-06-01 | 91781.5555556 | 1 + 1401-06-01 | 91781.5555556 | 1 + 1401-03-01 | 91781.5555556 | 1 + 1401-05-01 | 91781.5555556 | 1 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.prc order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.prc order by ow_sale.pn desc); -- mvd 3->2; 5,6,3,1->4; 5,6,3,1->7; + pn | to_char | vn | to_char | prc | cn | to_char +-----+-------------------+----+-------------------+------+----+------------------- + 400 | .2500000 | 50 | 1.0000000 | 0 | 1 | 1.0000000 + 400 | .2500000 | 50 | 1.0000000 | 0 | 2 | 1.0000000 + 100 | 670513.3333333 | 40 | 1.0000000 | 2400 | 2 | 1.0000000 + 700 | 670513.3333333 | 40 | 2.0000000 | 1 | 4 | 2.0000000 + 200 | 670513.3333333 | 40 | 1.0000000 | 0 | 3 | 1.0000000 + 800 | 670513.3333333 | 40 | 1.0000000 | 1 | 4 | 1.0000000 + 500 | 431424.2900000 | 30 | 2.0000000 | 5 | 3 | 2.0000000 + 300 | 431424.2900000 | 30 | 1.0000000 | 0 | 1 | 1.0000000 + 500 | 431424.2900000 | 30 | 1.0000000 | 5 | 1 | 1.0000000 + 600 | 431424.2900000 | 30 | 1.0000000 | 5 | 3 | 1.0000000 + 100 | 396534.0826446 | 20 | 1.0000000 | 0 | 1 | 1.0000000 + 200 | 366797.3541667 | 10 | 1.0000000 | 0 | 1 | 1.0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and 0 following ); -- mvd 5->4; + prc | prc | qty | to_char | cn +------+------+------+-------------------+---- + 1 | 1 | 1 | .0000000 | 4 + 1 | 1 | 1 | .0000000 | 4 + 5 | 5 | 12 | .2400000 | 3 + 0 | 0 | 1 | .2400000 | 3 + 5 | 5 | 12 | .2400000 | 3 + 0 | 0 | 1 | .5714286 | 2 + 2400 | 2400 | 1100 | .5714286 | 2 + 0 | 0 | 1 | 1.3055556 | 1 + 0 | 0 | 1 | 1.3055556 | 1 + 5 | 5 | 12 | 1.3055556 | 1 + 0 | 0 | 1 | 1.3055556 | 1 + 0 | 0 | 1 | 1.3055556 | 1 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn+ow_sale.pn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn) following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.prc,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc), +win4 as (order by ow_sale.cn asc), +win5 as (order by ow_sale.vn desc); -- mvd 1->3; 1->4; 6,1,7,2->5; 1->8; 1->9; 7->10; + cn | pn | to_char | to_char | to_char | prc | vn | to_char | to_char | to_char +----+-----+-------------------+-------------------+-------------------+------+----+-------------------+-------------------+------------------- + 2 | 100 | 1.3055556 | 50.0000000 | .0000000 | 2400 | 40 | .0000000 | 2.0000000 | 2.0000000 + 1 | 200 | 1.3055556 | 50.0000000 | .0000000 | 0 | 10 | 40.0000000 | 1.0000000 | 5.0000000 + 3 | 200 | 1.3055556 | 50.0000000 | .0000000 | 0 | 40 | .0000000 | 3.0000000 | 2.0000000 + 1 | 100 | 1.3055556 | 50.0000000 | .0000000 | 0 | 20 | 40.0000000 | 1.0000000 | 4.0000000 + 1 | 300 | 1.3055556 | 50.0000000 | .0000000 | 0 | 30 | 20.0000000 | 1.0000000 | 3.0000000 + 1 | 400 | 1.3055556 | 50.0000000 | .0000000 | 0 | 50 | 30.0000000 | 1.0000000 | 1.0000000 + 2 | 400 | 1.3055556 | 50.0000000 | .0000000 | 0 | 50 | 30.0000000 | 2.0000000 | 1.0000000 + 1 | 500 | 1.3055556 | 50.0000000 | .0000000 | 5 | 30 | 50.0000000 | 1.0000000 | 3.0000000 + 3 | 500 | 1.3055556 | 50.0000000 | .0000000 | 5 | 30 | 50.0000000 | 3.0000000 | 3.0000000 + 3 | 600 | 1.3055556 | 50.0000000 | .0000000 | 5 | 30 | 50.0000000 | 3.0000000 | 3.0000000 + 4 | 700 | 1.3055556 | 50.0000000 | .0000000 | 1 | 40 | 50.0000000 | 4.0000000 | 2.0000000 + 4 | 800 | 1.3055556 | 50.0000000 | .0000000 | 1 | 40 | 30.0000000 | 4.0000000 | 2.0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and unbounded following ); -- mvd 3->6; + vn | cn | pn | prc | qty | to_char +----+----+-----+------+------+------------------- + 40 | 4 | 800 | 1 | 1 | 129592.4097222 + 40 | 4 | 700 | 1 | 1 | 129592.4097222 + 30 | 3 | 600 | 5 | 12 | 129592.4097222 + 30 | 1 | 500 | 5 | 12 | 129592.4097222 + 30 | 3 | 500 | 5 | 12 | 129592.4097222 + 50 | 1 | 400 | 0 | 1 | 129592.4097222 + 50 | 2 | 400 | 0 | 1 | 129592.4097222 + 30 | 1 | 300 | 0 | 1 | 129592.4097222 + 10 | 1 | 200 | 0 | 1 | 129592.4097222 + 40 | 3 | 200 | 0 | 1 | 129592.4097222 + 20 | 1 | 100 | 0 | 1 | 129592.4097222 + 40 | 2 | 100 | 2400 | 1100 | 129592.4097222 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.vn order by ow_sale.cn asc); -- mvd 3->2; 3,5->4; + qty | to_char | cn | to_char | vn +------+-------------------+----+-------------------+---- + 1 | 48333.3333333 | 1 | .5000000 | 50 + 1 | 48333.3333333 | 1 | 1.0000000 | 20 + 1 | 48333.3333333 | 1 | .5000000 | 30 + 12 | 48333.3333333 | 1 | .5000000 | 30 + 1 | 48333.3333333 | 1 | 1.0000000 | 10 + 1 | 48333.3333333 | 2 | 1.0000000 | 50 + 1100 | 48333.3333333 | 2 | .2500000 | 40 + 1 | 48333.3333333 | 3 | .5000000 | 40 + 12 | 48333.3333333 | 3 | 1.0000000 | 30 + 12 | 48333.3333333 | 3 | 1.0000000 | 30 + 1 | 48333.3333333 | 4 | 1.0000000 | 40 + 1 | 48333.3333333 | 4 | 1.0000000 | 40 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.qty*ow_sale.cn) preceding and current row ); -- mvd 4->3; + prc | dt | to_char | vn +------+------------+-------------------+---- + 0 | 1401-06-01 | .0000000 | 50 + 0 | 1401-06-01 | .0000000 | 50 + 2400 | 1401-01-01 | 799733.5555556 | 40 + 1 | 1401-06-01 | 1079400.2500000 | 40 + 0 | 1401-04-01 | 1079400.2500000 | 40 + 1 | 1401-06-01 | 1079400.2500000 | 40 + 5 | 1401-06-01 | 517588.8100000 | 30 + 0 | 1401-05-02 | 4.6875000 | 30 + 5 | 1401-06-01 | 628730.1093750 | 30 + 5 | 1401-06-01 | 517588.8100000 | 30 + 0 | 1401-05-01 | .0000000 | 20 + 0 | 1401-03-01 | .0000000 | 10 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.cn) preceding and current row ), +win2 as (order by ow_sale.pn desc); -- mvd 8->7; 8->9; 8->10; 8->11; 8->12; 2->13; + qty | pn | pn | vn | qty | dt | to_char | cn | to_char | to_char | to_char | to_char | to_char +------+-----+-----+----+------+------------+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | 800 | 800 | 40 | 1 | 1401-06-01 | .0000000 | 4 | 800.0000000 | 12.0000000 | .0000000 | 12.0000000 | 1.0000000 + 1 | 700 | 700 | 40 | 1 | 1401-06-01 | .0000000 | 4 | 800.0000000 | 12.0000000 | .0000000 | 12.0000000 | 2.0000000 + 12 | 600 | 600 | 30 | 12 | 1401-06-01 | .0000000 | 3 | 600.0000000 | 10.0000000 | .0000000 | 10.0000000 | 3.0000000 + 12 | 500 | 500 | 30 | 12 | 1401-06-01 | .0000000 | 3 | 600.0000000 | 10.0000000 | .0000000 | 10.0000000 | 4.0000000 + 12 | 500 | 500 | 30 | 12 | 1401-06-01 | .0000000 | 1 | 500.0000000 | 5.0000000 | .0000000 | 5.0000000 | 4.0000000 + 1 | 400 | 400 | 50 | 1 | 1401-06-01 | .0000000 | 2 | 500.0000000 | 7.0000000 | .0000000 | 7.0000000 | 5.0000000 + 1 | 400 | 400 | 50 | 1 | 1401-06-01 | .0000000 | 1 | 500.0000000 | 5.0000000 | .0000000 | 5.0000000 | 5.0000000 + 1 | 300 | 300 | 30 | 1 | 1401-05-02 | .0000000 | 1 | 500.0000000 | 5.0000000 | .0000000 | 5.0000000 | 6.0000000 + 1 | 200 | 200 | 40 | 1 | 1401-04-01 | .0000000 | 3 | 600.0000000 | 10.0000000 | .0000000 | 10.0000000 | 7.0000000 + 1 | 200 | 200 | 10 | 1 | 1401-03-01 | .0000000 | 1 | 500.0000000 | 5.0000000 | .0000000 | 5.0000000 | 7.0000000 + 1 | 100 | 100 | 20 | 1 | 1401-05-01 | .0000000 | 1 | 500.0000000 | 5.0000000 | .0000000 | 5.0000000 | 8.0000000 + 1100 | 100 | 100 | 40 | 1100 | 1401-01-01 | .0000000 | 2 | 500.0000000 | 7.0000000 | .0000000 | 7.0000000 | 8.0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 2 preceding and floor(ow_sale.pn) following ); -- mvd 4->7; + qty | prc | cn | pn | prc | cn | to_char +------+------+----+-----+------+----+------------------- + 1 | 0 | 1 | 100 | 0 | 1 | 2475.6875000 + 1100 | 2400 | 2 | 100 | 2400 | 2 | 2475.6875000 + 1 | 0 | 1 | 200 | 0 | 1 | 8040.6400000 + 1 | 0 | 3 | 200 | 0 | 3 | 8040.6400000 + 1 | 0 | 1 | 300 | 0 | 1 | 9050.8055556 + 1 | 0 | 1 | 400 | 0 | 1 | 19315.6734694 + 1 | 0 | 2 | 400 | 0 | 2 | 19315.6734694 + 12 | 5 | 1 | 500 | 5 | 1 | 13401.2000000 + 12 | 5 | 3 | 500 | 5 | 3 | 13401.2000000 + 12 | 5 | 3 | 600 | 5 | 3 | 6600.2222222 + 1 | 1 | 4 | 700 | 1 | 4 | 2500.0000000 + 1 | 1 | 4 | 800 | 1 | 4 | .0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.vn/ow_sale.pn) preceding and unbounded following ); -- mvd 5->4; + cn | dt | qty | to_char | vn +----+------------+------+-------------------+---- + 1 | 1401-03-01 | 1 | 91812.4722222 | 10 + 1 | 1401-05-01 | 1 | 99298.2314050 | 20 + 3 | 1401-06-01 | 12 | 108091.7600000 | 30 + 1 | 1401-05-02 | 1 | 108091.7600000 | 30 + 1 | 1401-06-01 | 12 | 108091.7600000 | 30 + 3 | 1401-06-01 | 12 | 108091.7600000 | 30 + 2 | 1401-01-01 | 1100 | 167995.5833333 | 40 + 4 | 1401-06-01 | 1 | 167995.5833333 | 40 + 3 | 1401-04-01 | 1 | 167995.5833333 | 40 + 4 | 1401-06-01 | 1 | 167995.5833333 | 40 + 2 | 1401-06-01 | 1 | .2500000 | 50 + 1 | 1401-06-01 | 1 | .2500000 | 50 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.cn order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.cn+ow_sale.pn) preceding and unbounded following ), +win2 as (partition by ow_sale.cn order by ow_sale.vn asc); -- mvd 4->5; 4->6; 3,8->7; 3,8->9; 3,8->10; + prc | qty | cn | pn | to_char | to_char | to_char | vn | to_char | to_char +------+------+----+-----+-------------------+-------------------+-------------------+----+-------------------+------------------- + 0 | 1 | 1 | 100 | 46957.6388889 | 50.0000000 | 2.0000000 | 20 | .4000000 | 2.0000000 + 2400 | 1100 | 2 | 100 | 46957.6388889 | 50.0000000 | 1.0000000 | 40 | .5000000 | 1.0000000 + 0 | 1 | 1 | 200 | 46957.6388889 | 50.0000000 | 1.0000000 | 10 | .2000000 | 1.0000000 + 0 | 1 | 3 | 200 | 46957.6388889 | 50.0000000 | 3.0000000 | 40 | 1.0000000 | 2.0000000 + 0 | 1 | 1 | 300 | 46957.6388889 | 50.0000000 | 3.0000000 | 30 | .8000000 | 3.0000000 + 0 | 1 | 1 | 400 | 46957.6388889 | 50.0000000 | 5.0000000 | 50 | 1.0000000 | 4.0000000 + 0 | 1 | 2 | 400 | 46957.6388889 | 50.0000000 | 2.0000000 | 50 | 1.0000000 | 2.0000000 + 5 | 12 | 1 | 500 | 46957.6388889 | 50.0000000 | 4.0000000 | 30 | .8000000 | 3.0000000 + 5 | 12 | 3 | 500 | 46957.6388889 | 50.0000000 | 2.0000000 | 30 | .6666667 | 1.0000000 + 5 | 12 | 3 | 600 | 46957.6388889 | 50.0000000 | 1.0000000 | 30 | .6666667 | 1.0000000 + 1 | 1 | 4 | 700 | 46957.6388889 | 50.0000000 | 2.0000000 | 40 | 1.0000000 | 1.0000000 + 1 | 1 | 4 | 800 | 46957.6388889 | 50.0000000 | 1.0000000 | 40 | 1.0000000 | 1.0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and current row ); -- mvd 1->2; + cn | to_char +----+------------------- + 4 | .0000000 + 4 | .0000000 + 3 | .0000000 + 3 | .0000000 + 3 | .0000000 + 2 | .0000000 + 2 | .0000000 + 1 | .0000000 + 1 | .0000000 + 1 | .0000000 + 1 | .0000000 + 1 | .0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and current row ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.cn desc); -- mvd 3->2; 5->4; 1->6; + cn | to_char | vn | to_char | pn | to_char +----+-------------------+----+-------------------+-----+------------------- + 4 | 126637.6875000 | 40 | 2.0000000 | 700 | .1666667 + 4 | 126637.6875000 | 40 | 1.0000000 | 800 | .1666667 + 3 | 126637.6875000 | 40 | 9.0000000 | 200 | .4166667 + 3 | 12860.1875000 | 30 | 3.0000000 | 600 | .4166667 + 3 | 12860.1875000 | 30 | 4.0000000 | 500 | .4166667 + 2 | 126637.6875000 | 40 | 11.0000000 | 100 | .5833333 + 2 | .0000000 | 50 | 6.0000000 | 400 | .5833333 + 1 | .0000000 | 20 | 11.0000000 | 100 | 1.0000000 + 1 | 12860.1875000 | 30 | 4.0000000 | 500 | 1.0000000 + 1 | .0000000 | 50 | 6.0000000 | 400 | 1.0000000 + 1 | 12860.1875000 | 30 | 8.0000000 | 300 | 1.0000000 + 1 | .0000000 | 10 | 9.0000000 | 200 | 1.0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and floor(ow_sale.qty) following ); -- mvd 6->5; + vn | dt | prc | pn | to_char | cn +----+------------+------+-----+-------------------+---- + 40 | 1401-06-01 | 1 | 800 | .0000000 | 4 + 40 | 1401-06-01 | 1 | 700 | .0000000 | 4 + 30 | 1401-06-01 | 5 | 500 | .0000000 | 3 + 40 | 1401-04-01 | 0 | 200 | .0000000 | 3 + 30 | 1401-06-01 | 5 | 600 | .0000000 | 3 + 50 | 1401-06-01 | 0 | 400 | .0000000 | 2 + 40 | 1401-01-01 | 2400 | 100 | .0000000 | 2 + 30 | 1401-05-02 | 0 | 300 | .0000000 | 1 + 50 | 1401-06-01 | 0 | 400 | .0000000 | 1 + 30 | 1401-06-01 | 5 | 500 | .0000000 | 1 + 10 | 1401-03-01 | 0 | 200 | .0000000 | 1 + 20 | 1401-05-01 | 0 | 100 | .0000000 | 1 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and 4 following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 1->2; 1->3; 1->4; + cn | to_char | to_char | to_char +----+-------------------+-------------------+------------------- + 2 | 191.8367347 | .0000000 | 7.0000000 + 1 | 176.0000000 | 800.0000000 | 5.0000000 + 3 | 141.0000000 | .0000000 | 10.0000000 + 1 | 176.0000000 | .0000000 | 5.0000000 + 1 | 176.0000000 | .0000000 | 5.0000000 + 1 | 176.0000000 | .0000000 | 5.0000000 + 2 | 191.8367347 | .0000000 | 7.0000000 + 1 | 176.0000000 | .0000000 | 5.0000000 + 3 | 141.0000000 | .0000000 | 10.0000000 + 3 | 141.0000000 | .0000000 | 10.0000000 + 4 | 124.3055556 | .0000000 | 12.0000000 + 4 | 124.3055556 | .0000000 | 12.0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and unbounded following ); -- mvd 7->6; + vn | pn | vn | qty | vn | to_char | cn +----+-----+----+------+----+-------------------+---- + 10 | 200 | 10 | 1 | 10 | 437237.1875000 | 1 + 20 | 100 | 20 | 1 | 20 | 437237.1875000 | 1 + 30 | 300 | 30 | 1 | 30 | 437237.1875000 | 1 + 50 | 400 | 50 | 1 | 50 | 437237.1875000 | 1 + 30 | 500 | 30 | 12 | 30 | 437237.1875000 | 1 + 40 | 100 | 40 | 1100 | 40 | 703220.0000000 | 2 + 50 | 400 | 50 | 1 | 50 | 703220.0000000 | 2 + 40 | 200 | 40 | 1 | 40 | 49.4400000 | 3 + 30 | 600 | 30 | 12 | 30 | 49.4400000 | 3 + 30 | 500 | 30 | 12 | 30 | 49.4400000 | 3 + 40 | 700 | 40 | 1 | 40 | .0000000 | 4 + 40 | 800 | 40 | 1 | 40 | .0000000 | 4 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and unbounded following ), +win2 as (order by ow_sale.cn desc); -- mvd 5->4; 5->6; 5->7; + qty | vn | dt | to_char | cn | to_char | to_char +------+----+------------+-------------------+----+-------------------+------------------- + 1 | 40 | 1401-06-01 | 368221.0763889 | 4 | 1.0000000 | 1.0000000 + 1 | 40 | 1401-06-01 | 368221.0763889 | 4 | 1.0000000 | 1.0000000 + 12 | 30 | 1401-06-01 | 435995.2500000 | 3 | 3.0000000 | 2.0000000 + 12 | 30 | 1401-06-01 | 435995.2500000 | 3 | 3.0000000 | 2.0000000 + 1 | 40 | 1401-04-01 | 435995.2500000 | 3 | 3.0000000 | 2.0000000 + 1 | 50 | 1401-06-01 | 599003.0612245 | 2 | 6.0000000 | 3.0000000 + 1100 | 40 | 1401-01-01 | 599003.0612245 | 2 | 6.0000000 | 3.0000000 + 1 | 30 | 1401-05-02 | 20404.0000000 | 1 | 8.0000000 | 4.0000000 + 12 | 30 | 1401-06-01 | 20404.0000000 | 1 | 8.0000000 | 4.0000000 + 1 | 50 | 1401-06-01 | 20404.0000000 | 1 | 8.0000000 | 4.0000000 + 1 | 10 | 1401-03-01 | 20404.0000000 | 1 | 8.0000000 | 4.0000000 + 1 | 20 | 1401-05-01 | 20404.0000000 | 1 | 8.0000000 | 4.0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.vn) following and 2 following ); -- mvd 5->4; + qty | vn | qty | to_char | pn +------+----+------+-------------------+----- + 1 | 20 | 1 | .0000000 | 100 + 1100 | 40 | 1100 | .0000000 | 100 + 1 | 10 | 1 | .0000000 | 200 + 1 | 40 | 1 | .0000000 | 200 + 1 | 30 | 1 | .0000000 | 300 + 1 | 50 | 1 | .0000000 | 400 + 1 | 50 | 1 | .0000000 | 400 + 12 | 30 | 12 | .0000000 | 500 + 12 | 30 | 12 | .0000000 | 500 + 12 | 30 | 12 | .0000000 | 600 + 1 | 40 | 1 | .0000000 | 700 + 1 | 40 | 1 | .0000000 | 800 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 3 following and floor(ow_sale.vn*ow_sale.cn) following ), +win2 as (order by ow_sale.pn desc); -- mvd 2->5; 2->6; 1->7; + pn | cn | vn | vn | to_char | to_char | to_char +-----+----+----+----+-------------------+-------------------+------------------- + 800 | 4 | 40 | 40 | 19.3600000 | 5.0000000 | 1.0000000 + 700 | 4 | 40 | 40 | 19.3600000 | 5.0000000 | 2.0000000 + 600 | 3 | 30 | 30 | .0000000 | .0000000 | 3.0000000 + 500 | 3 | 30 | 30 | .0000000 | .0000000 | 4.0000000 + 500 | 1 | 30 | 30 | .0000000 | .0000000 | 4.0000000 + 400 | 2 | 50 | 50 | .0000000 | .0000000 | 6.0000000 + 400 | 1 | 50 | 50 | .0000000 | .0000000 | 6.0000000 + 300 | 1 | 30 | 30 | .0000000 | .0000000 | 8.0000000 + 200 | 3 | 40 | 40 | .0000000 | .0000000 | 9.0000000 + 200 | 1 | 10 | 10 | .0000000 | .0000000 | 9.0000000 + 100 | 1 | 20 | 20 | .0000000 | .0000000 | 11.0000000 + 100 | 2 | 40 | 40 | .0000000 | .0000000 | 11.0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.qty) following and unbounded following ), +win2 as (order by ow_sale.vn asc); -- mvd 5->4; 2->6; + prc | vn | cn | to_char | pn | to_char +------+----+----+-------------------+-----+------------------- + 0 | 10 | 1 | 24707.7343750 | 200 | 1.0000000 + 0 | 20 | 1 | 36705.4100000 | 100 | 2.0000000 + 5 | 30 | 3 | 2500.0000000 | 600 | 3.0000000 + 5 | 30 | 1 | 6733.5555556 | 500 | 4.0000000 + 5 | 30 | 3 | 6733.5555556 | 500 | 5.0000000 + 0 | 30 | 1 | 19870.7755102 | 300 | 6.0000000 + 1 | 40 | 4 | .0000000 | 800 | 7.0000000 + 2400 | 40 | 2 | .0000000 | 100 | 8.0000000 + 0 | 40 | 3 | 24707.7343750 | 200 | 9.0000000 + 1 | 40 | 4 | .0000000 | 700 | 10.0000000 + 0 | 50 | 1 | 13801.2000000 | 400 | 11.0000000 + 0 | 50 | 2 | 13801.2000000 | 400 | 12.0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.vn desc rows unbounded preceding ); -- mvd 2,5,1->4; + pn | cn | cn | to_char | vn +-----+----+----+-------------------+---- + 100 | 2 | 2 | .0000000 | 40 + 200 | 1 | 1 | 301401.0000000 | 10 + 200 | 3 | 3 | 268400.8888889 | 40 + 100 | 1 | 1 | 226326.0000000 | 20 + 300 | 1 | 1 | 193072.9600000 | 30 + 400 | 1 | 1 | 167567.5555556 | 50 + 400 | 2 | 2 | 147759.9591837 | 50 + 500 | 1 | 1 | 131603.1875000 | 30 + 500 | 3 | 3 | 118630.5432099 | 30 + 600 | 3 | 3 | 107955.4400000 | 30 + 700 | 4 | 4 | 99241.9008264 | 40 + 800 | 4 | 4 | 91812.4722222 | 40 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.vn) as int),cast (floor(ow_sale.qty+ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows unbounded preceding ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.cn desc), +win4 as (partition by ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 1->5; 3,7,1->6; 3,9,7->8; 3,9,7->10; 12,3,9->11; + pn | qty | cn | qty | to_char | to_char | vn | to_char | dt | to_char | to_char | prc +-----+------+----+------+-------------------+-------------------+----+-------------------+------------+-------------------+-------------------+------ + 100 | 1100 | 2 | 1100 | .0000000 | .0000000 | 40 | 1.0000000 | 1401-01-01 | 1.0000000 | .0000000 | 2400 + 200 | 1 | 1 | 1 | 249500.2500000 | .0000000 | 10 | 1.0000000 | 1401-03-01 | 1.0000000 | .0000000 | 0 + 200 | 1 | 3 | 1 | 221778.0000000 | .0000000 | 40 | 1.0000000 | 1401-04-01 | 1.0000000 | .0000000 | 0 + 100 | 1 | 1 | 1 | 201487.6875000 | .0000000 | 20 | 1.0000000 | 1401-05-01 | 1.0000000 | .0000000 | 0 + 300 | 1 | 1 | 1 | 163680.1600000 | .0000000 | 30 | 1.0000000 | 1401-05-02 | 1.0000000 | .0000000 | 0 + 400 | 1 | 1 | 1 | 136400.1388889 | .0000000 | 50 | 2.0000000 | 1401-06-01 | 2.0000000 | .0000000 | 0 + 400 | 1 | 2 | 1 | 116914.4081633 | .0000000 | 50 | 1.0000000 | 1401-06-01 | 1.0000000 | .0000000 | 0 + 500 | 12 | 1 | 12 | 103651.1875000 | .0000000 | 30 | 3.0000000 | 1401-06-01 | 3.0000000 | .0000000 | 5 + 500 | 12 | 3 | 12 | 93068.4691358 | .0000000 | 30 | 1.0000000 | 1401-06-01 | 1.0000000 | .0000000 | 5 + 600 | 12 | 3 | 12 | 86890.1600000 | .0000000 | 30 | 1.0000000 | 1401-06-01 | 2.0000000 | .0000000 | 5 + 700 | 1 | 4 | 1 | 84441.1570248 | .0000000 | 40 | 1.0000000 | 1401-06-01 | 1.0000000 | .0000000 | 1 + 800 | 1 | 4 | 1 | 85898.2222222 | .0000000 | 40 | 1.0000000 | 1401-06-01 | 2.0000000 | .0000000 | 1 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows 1 preceding ); -- mvd 6->5; + pn | pn | qty | dt | to_char | vn +-----+-----+------+------------+-------------------+---- + 100 | 100 | 1100 | 1401-01-01 | .0000000 | 40 + 200 | 200 | 1 | 1401-03-01 | 1440000.0000000 | 10 + 200 | 200 | 1 | 1401-04-01 | .0000000 | 40 + 100 | 100 | 1 | 1401-05-01 | .0000000 | 20 + 300 | 300 | 1 | 1401-05-02 | .0000000 | 30 + 400 | 400 | 1 | 1401-06-01 | .0000000 | 50 + 400 | 400 | 1 | 1401-06-01 | .0000000 | 50 + 500 | 500 | 12 | 1401-06-01 | 6.2500000 | 30 + 500 | 500 | 12 | 1401-06-01 | .0000000 | 30 + 600 | 600 | 12 | 1401-06-01 | .0000000 | 30 + 700 | 700 | 1 | 1401-06-01 | 4.0000000 | 40 + 800 | 800 | 1 | 1401-06-01 | .0000000 | 40 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.pn asc rows 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn/ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.pn asc rows 2 preceding ), +win2 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.pn asc), +win3 as (order by ow_sale.cn desc), +win4 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 1,3->2; 5,6,3->4; 1,3->7; 1->8; 6->9; + cn | to_char | pn | to_char | dt | vn | to_char | to_char | to_char +----+-------------------+-----+-------------------+------------+----+-------------------+-------------------+------------------- + 4 | 6022.2222222 | 800 | 2.0000000 | 1401-06-01 | 40 | 3.0000000 | 1.0000000 | .0000000 + 4 | 6022.2222222 | 700 | 1.0000000 | 1401-06-01 | 40 | 3.0000000 | 1.0000000 | .0000000 + 3 | 3200.0000000 | 500 | 1.0000000 | 1401-06-01 | 30 | 3.0000000 | 3.0000000 | .0000000 + 3 | 3088.8888889 | 200 | 1.0000000 | 1401-04-01 | 40 | 3.0000000 | 3.0000000 | .0000000 + 3 | 2222.2222222 | 600 | 2.0000000 | 1401-06-01 | 30 | 3.0000000 | 3.0000000 | .0000000 + 2 | 1422.2222222 | 400 | 1.0000000 | 1401-06-01 | 50 | 3.0000000 | 6.0000000 | .0000000 + 2 | .0000000 | 100 | 1.0000000 | 1401-01-01 | 40 | 1.0000000 | 6.0000000 | 40.0000000 + 1 | 3200.0000000 | 500 | 1.0000000 | 1401-06-01 | 30 | 3.0000000 | 8.0000000 | .0000000 + 1 | 12822.2222222 | 400 | 1.0000000 | 1401-06-01 | 50 | 3.0000000 | 8.0000000 | .0000000 + 1 | 6066.6666667 | 300 | 1.0000000 | 1401-05-02 | 30 | 3.0000000 | 8.0000000 | .0000000 + 1 | 2155.5555556 | 100 | 1.0000000 | 1401-05-01 | 20 | 3.0000000 | 8.0000000 | .0000000 + 1 | 4225.0000000 | 200 | 1.0000000 | 1401-03-01 | 10 | 2.0000000 | 8.0000000 | .0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows current row ); -- mvd 1->3; + vn | vn | to_char +----+----+------------------- + 40 | 40 | .0000000 + 10 | 10 | .0000000 + 40 | 40 | .0000000 + 20 | 20 | .0000000 + 30 | 30 | .0000000 + 50 | 50 | .0000000 + 50 | 50 | .0000000 + 30 | 30 | .0000000 + 30 | 30 | .0000000 + 30 | 30 | .0000000 + 40 | 40 | .0000000 + 40 | 40 | .0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty*ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows current row ), +win2 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 6->5; 8,4,1->7; 8,4,1->9; 1->10; + pn | pn | dt | qty | to_char | cn | to_char | prc | to_char | to_char +-----+-----+------------+------+-------------------+----+-------------------+------+-------------------+------------------- + 100 | 100 | 1401-01-01 | 1100 | .0000000 | 2 | 1.0000000 | 2400 | 1.0000000 | .0000000 + 200 | 200 | 1401-03-01 | 1 | .0000000 | 1 | 1.0000000 | 0 | 1.0000000 | 110000.0000000 + 200 | 200 | 1401-04-01 | 1 | .0000000 | 3 | 2.0000000 | 0 | 2.0000000 | .0000000 + 100 | 100 | 1401-05-01 | 1 | .0000000 | 1 | 1.0000000 | 0 | 1.0000000 | 200.0000000 + 300 | 300 | 1401-05-02 | 1 | .0000000 | 1 | 1.0000000 | 0 | 1.0000000 | 100.0000000 + 400 | 400 | 1401-06-01 | 1 | .0000000 | 1 | 2.0000000 | 0 | 2.0000000 | 300.0000000 + 400 | 400 | 1401-06-01 | 1 | .0000000 | 2 | 1.0000000 | 0 | 1.0000000 | 300.0000000 + 500 | 500 | 1401-06-01 | 12 | .0000000 | 1 | 1.0000000 | 5 | 1.0000000 | 400.0000000 + 500 | 500 | 1401-06-01 | 12 | .0000000 | 3 | 2.0000000 | 5 | 2.0000000 | 400.0000000 + 600 | 600 | 1401-06-01 | 12 | .0000000 | 3 | 1.0000000 | 5 | 1.0000000 | 400.0000000 + 700 | 700 | 1401-06-01 | 1 | .0000000 | 4 | 1.0000000 | 1 | 1.0000000 | 400.0000000 + 800 | 800 | 1401-06-01 | 1 | .0000000 | 4 | 1.0000000 | 1 | 1.0000000 | 6000.0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.cn asc rows between unbounded preceding and 6 preceding ); -- mvd 3,4,5->2; + qty | to_char | cn | vn | pn +------+-------------------+----+----+----- + 1100 | .0000000 | 2 | 40 | 100 + 1 | .0000000 | 1 | 10 | 200 + 1 | .0000000 | 3 | 40 | 200 + 1 | .0000000 | 1 | 20 | 100 + 1 | .0000000 | 1 | 30 | 300 + 1 | .0000000 | 1 | 50 | 400 + 1 | .0000000 | 2 | 50 | 400 + 12 | 301950.2500000 | 1 | 30 | 500 + 12 | 268400.2222222 | 3 | 30 | 500 + 12 | 226462.6875000 | 3 | 30 | 600 + 1 | 193248.1600000 | 4 | 40 | 700 + 1 | 167750.1388889 | 4 | 40 | 800 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.vn asc rows between unbounded preceding and current row ); -- mvd 6,7->5; + qty | qty | cn | qty | to_char | vn | pn +------+------+----+------+-------------------+----+----- + 1100 | 1100 | 2 | 1100 | .0000000 | 40 | 100 + 1 | 1 | 1 | 1 | 2500.0000000 | 10 | 200 + 1 | 1 | 3 | 1 | 2222.2222222 | 40 | 200 + 1 | 1 | 1 | 1 | 2500.0000000 | 20 | 100 + 1 | 1 | 1 | 1 | 5600.0000000 | 30 | 300 + 1 | 1 | 1 | 1 | 11388.8888889 | 50 | 400 + 1 | 1 | 2 | 1 | 13877.5510204 | 50 | 400 + 12 | 12 | 1 | 12 | 19375.0000000 | 30 | 500 + 12 | 12 | 3 | 12 | 22222.2222222 | 30 | 500 + 12 | 12 | 3 | 12 | 28100.0000000 | 30 | 600 + 1 | 1 | 4 | 1 | 36859.5041322 | 40 | 700 + 1 | 1 | 4 | 1 | 48333.3333333 | 40 | 800 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn*ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.prc,ow_sale.prc,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc,ow_sale.cn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.cn asc), +win3 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc); -- mvd 2,4,5->3; 2,7,1,4,5->6; 2,7,1,4,5->8; 10,7,2,4->9; 10,7,2,4->11; + qty | cn | to_char | vn | pn | to_char | dt | to_char | to_char | prc | to_char +------+----+-------------------+----+-----+-------------------+------------+-------------------+-------------------+------+------------------- + 1100 | 2 | .0000000 | 40 | 100 | 1.0000000 | 1401-01-01 | .0000000 | .0000000 | 2400 | 100.0000000 + 1 | 1 | 225.0000000 | 10 | 200 | 1.0000000 | 1401-03-01 | .0000000 | .0000000 | 0 | 200.0000000 + 1 | 3 | 200.0000000 | 40 | 200 | 1.0000000 | 1401-04-01 | .0000000 | .0000000 | 0 | 200.0000000 + 1 | 1 | 168.7500000 | 20 | 100 | 1.0000000 | 1401-05-01 | .0000000 | .0000000 | 0 | 100.0000000 + 1 | 1 | 136.0000000 | 30 | 300 | 1.0000000 | 1401-05-02 | .0000000 | .0000000 | 0 | 300.0000000 + 1 | 1 | 180.5555556 | 50 | 400 | 1.0000000 | 1401-06-01 | .0000000 | .0000000 | 0 | 400.0000000 + 1 | 2 | 195.9183673 | 50 | 400 | 2.0000000 | 1401-06-01 | 1.0000000 | .0000000 | 0 | 400.0000000 + 12 | 1 | 173.4375000 | 30 | 500 | 1.0000000 | 1401-06-01 | .0000000 | .0000000 | 5 | 500.0000000 + 12 | 3 | 155.5555556 | 30 | 500 | 2.0000000 | 1401-06-01 | 1.0000000 | .0000000 | 5 | 500.0000000 + 12 | 3 | 141.0000000 | 30 | 600 | 1.0000000 | 1401-06-01 | .0000000 | .0000000 | 5 | 600.0000000 + 1 | 4 | 132.2314050 | 40 | 700 | 1.0000000 | 1401-06-01 | .0000000 | .0000000 | 1 | 700.0000000 + 1 | 4 | 124.3055556 | 40 | 800 | 1.0000000 | 1401-06-01 | .0000000 | .0000000 | 1 | 800.0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.pn asc rows between unbounded preceding and 3 following ); -- mvd 3,2,1->5; + pn | vn | cn | prc | to_char +-----+----+----+------+------------------- + 100 | 40 | 2 | 2400 | 226326.0000000 + 200 | 10 | 1 | 0 | 193072.9600000 + 200 | 40 | 3 | 0 | 167567.5555556 + 100 | 20 | 1 | 0 | 147759.9591837 + 300 | 30 | 1 | 0 | 131603.1875000 + 400 | 50 | 1 | 0 | 118630.5432099 + 400 | 50 | 2 | 0 | 107955.4400000 + 500 | 30 | 1 | 5 | 99241.9008264 + 500 | 30 | 3 | 5 | 91812.4722222 + 600 | 30 | 3 | 5 | 91812.4722222 + 700 | 40 | 4 | 1 | 91812.4722222 + 800 | 40 | 4 | 1 | 91812.4722222 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.vn-ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.qty,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty/ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and 4 following ), +win2 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 3->2; 5,3,6->4; 5,3,6->7; 9->8; 5,3,6->10; 9->11; + dt | to_char | cn | to_char | prc | qty | to_char | to_char | pn | to_char | to_char +------------+-------------------+----+-------------------+------+------+-------------------+-------------------+-----+-------------------+------------------- + 1401-01-01 | 921984.6400000 | 2 | 2.0000000 | 2400 | 1100 | 1.0000000 | .0000000 | 100 | 1.0000000 | 1.0000000 + 1401-03-01 | 800400.5833333 | 1 | 1.0000000 | 0 | 1 | 1.0000000 | 200.0000000 | 200 | 1.0000000 | 2.0000000 + 1401-04-01 | 705600.5306122 | 3 | 3.0000000 | 0 | 1 | 1.0000000 | 200.0000000 | 200 | 1.0000000 | 3.0000000 + 1401-05-01 | 629927.6093750 | 1 | 1.0000000 | 0 | 1 | 2.0000000 | 100.0000000 | 100 | 2.0000000 | 4.0000000 + 1401-05-02 | 568479.8024691 | 1 | 1.0000000 | 0 | 1 | 3.0000000 | 300.0000000 | 300 | 3.0000000 | 5.0000000 + 1401-06-01 | 517783.6100000 | 1 | 1.0000000 | 0 | 1 | 4.0000000 | 400.0000000 | 400 | 4.0000000 | 6.0000000 + 1401-06-01 | 475405.5041322 | 2 | 2.0000000 | 0 | 1 | 1.0000000 | 400.0000000 | 400 | 1.0000000 | 7.0000000 + 1401-06-01 | 439373.4097222 | 1 | 1.0000000 | 5 | 12 | 1.0000000 | 500.0000000 | 500 | 1.0000000 | 8.0000000 + 1401-06-01 | 439373.4097222 | 3 | 3.0000000 | 5 | 12 | 1.0000000 | 500.0000000 | 500 | 1.0000000 | 9.0000000 + 1401-06-01 | 439373.4097222 | 3 | 3.0000000 | 5 | 12 | 2.0000000 | 600.0000000 | 600 | 2.0000000 | 10.0000000 + 1401-06-01 | 439373.4097222 | 4 | 4.0000000 | 1 | 1 | 1.0000000 | 700.0000000 | 700 | 1.0000000 | 11.0000000 + 1401-06-01 | 439373.4097222 | 4 | 4.0000000 | 1 | 1 | 2.0000000 | 800.0000000 | 800 | 2.0000000 | 12.0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 6->5; + pn | dt | qty | qty | to_char | cn +-----+------------+------+------+-------------------+---- + 100 | 1401-01-01 | 1100 | 1100 | 1.3055556 | 2 + 200 | 1401-03-01 | 1 | 1 | 1.3055556 | 1 + 200 | 1401-04-01 | 1 | 1 | 1.3055556 | 3 + 100 | 1401-05-01 | 1 | 1 | 1.3055556 | 1 + 300 | 1401-05-02 | 1 | 1 | 1.3055556 | 1 + 400 | 1401-06-01 | 1 | 1 | 1.3055556 | 1 + 400 | 1401-06-01 | 1 | 1 | 1.3055556 | 2 + 500 | 1401-06-01 | 12 | 12 | 1.3055556 | 1 + 500 | 1401-06-01 | 12 | 12 | 1.3055556 | 3 + 600 | 1401-06-01 | 12 | 12 | 1.3055556 | 3 + 700 | 1401-06-01 | 1 | 1 | 1.3055556 | 4 + 800 | 1401-06-01 | 1 | 1 | 1.3055556 | 4 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.cn desc); -- mvd 8,1->7; 8,2->9; 8,2->10; + pn | vn | prc | vn | vn | qty | to_char | cn | to_char | to_char +-----+----+------+----+----+------+-------------------+----+-------------------+------------------- + 100 | 40 | 2400 | 40 | 40 | 1100 | 91812.4722222 | 2 | 1.0000000 | 1.0000000 + 200 | 10 | 0 | 10 | 10 | 1 | 91812.4722222 | 1 | 1.0000000 | 1.0000000 + 200 | 40 | 0 | 40 | 40 | 1 | 91812.4722222 | 3 | 1.0000000 | 1.0000000 + 100 | 20 | 0 | 20 | 20 | 1 | 91812.4722222 | 1 | 1.0000000 | 1.0000000 + 300 | 30 | 0 | 30 | 30 | 1 | 91812.4722222 | 1 | 1.0000000 | 1.0000000 + 400 | 50 | 0 | 50 | 50 | 1 | 91812.4722222 | 1 | 1.0000000 | 1.0000000 + 400 | 50 | 0 | 50 | 50 | 1 | 91812.4722222 | 2 | 1.0000000 | 1.0000000 + 500 | 30 | 5 | 30 | 30 | 12 | 91812.4722222 | 1 | 1.0000000 | 1.0000000 + 500 | 30 | 5 | 30 | 30 | 12 | 91812.4722222 | 3 | 1.0000000 | 1.0000000 + 600 | 30 | 5 | 30 | 30 | 12 | 91812.4722222 | 3 | 1.0000000 | 1.0000000 + 700 | 40 | 1 | 40 | 40 | 1 | 91812.4722222 | 4 | 1.0000000 | 1.0000000 + 800 | 40 | 1 | 40 | 40 | 1 | 91812.4722222 | 4 | 1.0000000 | 1.0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.vn asc rows between 5 preceding and 4 preceding ); -- mvd 1,5,2->4; + cn | pn | cn | to_char | vn +----+-----+----+-------------------+---- + 2 | 100 | 2 | .0000000 | 40 + 1 | 200 | 1 | .0000000 | 10 + 3 | 200 | 3 | .0000000 | 40 + 1 | 100 | 1 | .0000000 | 20 + 1 | 300 | 1 | .0000000 | 30 + 1 | 400 | 1 | 225.0000000 | 50 + 2 | 400 | 2 | 225.0000000 | 50 + 1 | 500 | 1 | 100.0000000 | 30 + 3 | 500 | 3 | 25.0000000 | 30 + 3 | 600 | 3 | 100.0000000 | 30 + 4 | 700 | 4 | .0000000 | 40 + 4 | 800 | 4 | 100.0000000 | 40 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.vn asc rows between floor(ow_sale.pn) preceding and 3 preceding ), +win2 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.prc order by ow_sale.cn asc); -- mvd 7,3,8->6; 4,7,10,3->9; + qty | qty | vn | prc | qty | to_char | cn | pn | to_char | dt +------+------+----+------+------+-------------------+----+-----+-------------------+------------ + 1100 | 1100 | 40 | 2400 | 1100 | .0000000 | 2 | 100 | 1.0000000 | 1401-01-01 + 1 | 1 | 10 | 0 | 1 | .0000000 | 1 | 200 | 1.0000000 | 1401-03-01 + 1 | 1 | 40 | 0 | 1 | .0000000 | 3 | 200 | 1.0000000 | 1401-04-01 + 1 | 1 | 20 | 0 | 1 | .0000000 | 1 | 100 | 1.0000000 | 1401-05-01 + 1 | 1 | 30 | 0 | 1 | 2500.0000000 | 1 | 300 | 1.0000000 | 1401-05-02 + 1 | 1 | 50 | 0 | 1 | 2222.2222222 | 1 | 400 | 1.0000000 | 1401-06-01 + 1 | 1 | 50 | 0 | 1 | 2500.0000000 | 2 | 400 | 1.0000000 | 1401-06-01 + 12 | 12 | 30 | 5 | 12 | 5600.0000000 | 1 | 500 | 1.0000000 | 1401-06-01 + 12 | 12 | 30 | 5 | 12 | 11388.8888889 | 3 | 500 | 2.0000000 | 1401-06-01 + 12 | 12 | 30 | 5 | 12 | 13877.5510204 | 3 | 600 | 1.0000000 | 1401-06-01 + 1 | 1 | 40 | 1 | 1 | 19375.0000000 | 4 | 700 | 2.0000000 | 1401-06-01 + 1 | 1 | 40 | 1 | 1 | 22222.2222222 | 4 | 800 | 1.0000000 | 1401-06-01 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 6 preceding and current row ); -- mvd 4->3; + pn | vn | to_char | cn +-----+----+-------------------+---- + 100 | 40 | .0000000 | 2 + 200 | 10 | 1440000.0000000 | 1 + 200 | 40 | 1280000.0000000 | 3 + 100 | 20 | 1080000.0000000 | 1 + 300 | 30 | 921600.0000000 | 1 + 400 | 50 | 800000.0000000 | 1 + 400 | 50 | 705306.1224490 | 2 + 500 | 30 | 3.0612245 | 1 + 500 | 30 | 5.1020408 | 3 + 600 | 30 | 6.1224490 | 3 + 700 | 40 | 5.6326531 | 4 + 800 | 40 | 5.1020408 | 4 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between 8 preceding and 3 following ); -- mvd 6,1->5; + pn | pn | qty | pn | to_char | cn +-----+-----+------+-----+-------------------+---- + 100 | 100 | 1100 | 100 | .6875000 | 2 + 200 | 200 | 1 | 200 | .6400000 | 1 + 200 | 200 | 1 | 200 | .5833333 | 3 + 100 | 100 | 1 | 100 | .5306122 | 1 + 300 | 300 | 1 | 300 | .5000000 | 1 + 400 | 400 | 1 | 400 | .6666667 | 1 + 400 | 400 | 1 | 400 | .7600000 | 2 + 500 | 500 | 12 | 500 | 1.0909091 | 1 + 500 | 500 | 12 | 500 | 1.3055556 | 3 + 600 | 600 | 12 | 600 | 1.4214876 | 3 + 700 | 700 | 1 | 700 | 1.4100000 | 4 + 800 | 800 | 1 | 800 | 1.5061728 | 4 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.dt order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc,ow_sale.vn asc rows between floor(ow_sale.cn) preceding and 1 following ), +win2 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.pn asc); -- mvd 5,1,6->4; 5,1,6->7; 3,1,6->8; 3,1,6->9; + vn | qty | dt | to_char | cn | pn | to_char | to_char | to_char +----+------+------------+-------------------+----+-----+-------------------+-------------------+------------------- + 40 | 1100 | 1401-01-01 | 2500.0000000 | 2 | 100 | 2.0000000 | 1.0000000 | 40.0000000 + 10 | 1 | 1401-03-01 | 2222.2222222 | 1 | 200 | 3.0000000 | 1.0000000 | 10.0000000 + 40 | 1 | 1401-04-01 | 2500.0000000 | 3 | 200 | 4.0000000 | 1.0000000 | 40.0000000 + 20 | 1 | 1401-05-01 | 6666.6666667 | 1 | 100 | 3.0000000 | 1.0000000 | 20.0000000 + 30 | 1 | 1401-05-02 | 15555.5555556 | 1 | 300 | 3.0000000 | 1.0000000 | 30.0000000 + 50 | 1 | 1401-06-01 | 2222.2222222 | 1 | 400 | 3.0000000 | 1.0000000 | 50.0000000 + 50 | 1 | 1401-06-01 | 5000.0000000 | 2 | 400 | 4.0000000 | 2.0000000 | 50.0000000 + 30 | 12 | 1401-06-01 | 2222.2222222 | 1 | 500 | 3.0000000 | 2.0000000 | 30.0000000 + 30 | 12 | 1401-06-01 | 5600.0000000 | 3 | 500 | 5.0000000 | 1.0000000 | 30.0000000 + 30 | 12 | 1401-06-01 | 10400.0000000 | 3 | 600 | 5.0000000 | 3.0000000 | 30.0000000 + 40 | 1 | 1401-06-01 | 18055.5555556 | 4 | 700 | 6.0000000 | 1.0000000 | 40.0000000 + 40 | 1 | 1401-06-01 | 13600.0000000 | 4 | 800 | 5.0000000 | 2.0000000 | 40.0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.pn desc rows between floor(ow_sale.pn+ow_sale.pn) preceding and unbounded following ); -- mvd 6,3->5; + prc | qty | pn | prc | to_char | cn +------+------+-----+------+-------------------+---- + 2400 | 1100 | 100 | 2400 | 439504.6875000 | 2 + 0 | 1 | 200 | 0 | 439504.6875000 | 1 + 0 | 1 | 200 | 0 | 439504.6875000 | 3 + 0 | 1 | 100 | 0 | 439504.6875000 | 1 + 0 | 1 | 300 | 0 | 439504.6875000 | 1 + 0 | 1 | 400 | 0 | 439504.6875000 | 1 + 0 | 1 | 400 | 0 | 439504.6875000 | 2 + 5 | 12 | 500 | 5 | 439504.6875000 | 1 + 5 | 12 | 500 | 5 | 439504.6875000 | 3 + 5 | 12 | 600 | 5 | 439504.6875000 | 3 + 1 | 1 | 700 | 1 | 439504.6875000 | 4 + 1 | 1 | 800 | 1 | 439504.6875000 | 4 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between current row and current row ); -- mvd 4->3; + vn | vn | to_char | cn +----+----+-------------------+---- + 40 | 40 | .0000000 | 2 + 10 | 10 | .0000000 | 1 + 40 | 40 | .0000000 | 3 + 20 | 20 | .0000000 | 1 + 30 | 30 | .0000000 | 1 + 50 | 50 | .0000000 | 1 + 50 | 50 | .0000000 | 2 + 30 | 30 | .0000000 | 1 + 30 | 30 | .0000000 | 3 + 30 | 30 | .0000000 | 3 + 40 | 40 | .0000000 | 4 + 40 | 40 | .0000000 | 4 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between current row and current row ), +win2 as (partition by ow_sale.vn,ow_sale.prc order by ow_sale.cn desc); -- mvd 6->5; 4,6,3->7; + qty | pn | vn | prc | to_char | cn | to_char +------+-----+----+------+-------------------+----+------------------- + 1100 | 100 | 40 | 2400 | .0000000 | 2 | 1.0000000 + 1 | 200 | 10 | 0 | .0000000 | 1 | 1.0000000 + 1 | 200 | 40 | 0 | .0000000 | 3 | 1.0000000 + 1 | 100 | 20 | 0 | .0000000 | 1 | 1.0000000 + 1 | 300 | 30 | 0 | .0000000 | 1 | 1.0000000 + 1 | 400 | 50 | 0 | .0000000 | 1 | 2.0000000 + 1 | 400 | 50 | 0 | .0000000 | 2 | 1.0000000 + 12 | 500 | 30 | 5 | .0000000 | 1 | 3.0000000 + 12 | 500 | 30 | 5 | .0000000 | 3 | 1.0000000 + 12 | 600 | 30 | 5 | .0000000 | 3 | 1.0000000 + 1 | 700 | 40 | 1 | .0000000 | 4 | 1.0000000 + 1 | 800 | 40 | 1 | .0000000 | 4 | 1.0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between current row and floor(ow_sale.cn-ow_sale.cn) following ); -- mvd 5->4; + dt | vn | dt | to_char | cn +------------+----+------------+-------------------+---- + 1401-01-01 | 40 | 1401-01-01 | .0000000 | 2 + 1401-03-01 | 10 | 1401-03-01 | .0000000 | 1 + 1401-04-01 | 40 | 1401-04-01 | .0000000 | 3 + 1401-05-01 | 20 | 1401-05-01 | .0000000 | 1 + 1401-05-02 | 30 | 1401-05-02 | .0000000 | 1 + 1401-06-01 | 50 | 1401-06-01 | .0000000 | 1 + 1401-06-01 | 50 | 1401-06-01 | .0000000 | 2 + 1401-06-01 | 30 | 1401-06-01 | .0000000 | 1 + 1401-06-01 | 30 | 1401-06-01 | .0000000 | 3 + 1401-06-01 | 30 | 1401-06-01 | .0000000 | 3 + 1401-06-01 | 40 | 1401-06-01 | .0000000 | 4 + 1401-06-01 | 40 | 1401-06-01 | .0000000 | 4 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn asc rows between current row and 0 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between current row and 0 following ); -- mvd 6->5; 6->7; + cn | prc | pn | prc | to_char | vn | to_char +----+------+-----+------+-------------------+----+------------------- + 2 | 2400 | 100 | 2400 | .0000000 | 40 | 1.0000000 + 1 | 0 | 200 | 0 | .0000000 | 10 | 1.0000000 + 3 | 0 | 200 | 0 | .0000000 | 40 | 1.0000000 + 1 | 0 | 100 | 0 | .0000000 | 20 | 1.0000000 + 1 | 0 | 300 | 0 | .0000000 | 30 | 1.0000000 + 1 | 0 | 400 | 0 | .0000000 | 50 | 1.0000000 + 2 | 0 | 400 | 0 | .0000000 | 50 | 1.0000000 + 1 | 5 | 500 | 5 | .0000000 | 30 | 1.0000000 + 3 | 5 | 500 | 5 | .0000000 | 30 | 1.0000000 + 3 | 5 | 600 | 5 | .0000000 | 30 | 1.0000000 + 4 | 1 | 700 | 1 | .0000000 | 40 | 1.0000000 + 4 | 1 | 800 | 1 | .0000000 | 40 | 1.0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.vn desc rows between current row and unbounded following ); -- mvd 4,1->3; + vn | vn | to_char | cn +----+----+-------------------+---- + 40 | 40 | 368221.0763889 | 2 + 10 | 10 | 44212.8760331 | 1 + 40 | 40 | 42874.8100000 | 3 + 20 | 20 | 39817.3333333 | 1 + 30 | 30 | 24523.8593750 | 1 + 50 | 50 | 19605.1020408 | 1 + 50 | 50 | 17921.4722222 | 2 + 30 | 30 | 13187.8400000 | 1 + 30 | 30 | 12104.0000000 | 3 + 30 | 30 | 6403.5555556 | 3 + 40 | 40 | 2500.0000000 | 4 + 40 | 40 | .0000000 | 4 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (order by ow_sale.cn asc); -- mvd 3,6->5; 3,6->7; 6->8; 6->9; 3->10; + qty | prc | cn | vn | to_char | pn | to_char | to_char | to_char | to_char +------+------+----+----+-------------------+-----+-------------------+-------------------+-------------------+------------------- + 1 | 0 | 1 | 50 | 5.5510204 | 400 | -11.0000000 | -1.0000000 | .0000000 | .0000000 + 1 | 0 | 1 | 10 | 5.6859504 | 200 | -11.0000000 | -1.0000000 | .0000000 | .0000000 + 12 | 5 | 1 | 30 | 4.8000000 | 500 | -11.0000000 | .0000000 | .0000000 | .0000000 + 1 | 0 | 1 | 20 | 6.0246914 | 100 | -11.0000000 | -1.0000000 | .0000000 | .0000000 + 1 | 0 | 1 | 30 | 5.9375000 | 300 | -11.0000000 | -1.0000000 | .0000000 | .0000000 + 1100 | 2400 | 2 | 40 | 5.2222222 | 100 | -1098.0000000 | .0000000 | 2400.0000000 | .4545455 + 1 | 0 | 2 | 50 | 4.5555556 | 400 | -11.0000000 | -2.0000000 | .0000000 | .4545455 + 1 | 0 | 3 | 40 | 5.6400000 | 200 | -11.0000000 | -3.0000000 | .0000000 | .6363636 + 12 | 5 | 3 | 30 | 1.0000000 | 500 | -9.0000000 | .0000000 | .0000000 | .6363636 + 12 | 5 | 3 | 30 | .8888889 | 600 | -9.0000000 | .0000000 | .0000000 | .6363636 + 1 | 1 | 4 | 40 | .0000000 | 700 | 3.0000000 | -3.0000000 | .0000000 | .9090909 + 1 | 1 | 4 | 40 | .0000000 | 800 | 3.0000000 | .0000000 | .0000000 | .9090909 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between 4 following and floor(ow_sale.cn+ow_sale.cn) following ); -- mvd 5->4; + cn | prc | qty | to_char | vn +----+------+------+-------------------+---- + 2 | 2400 | 1100 | .0000000 | 40 + 1 | 0 | 1 | .0000000 | 10 + 3 | 0 | 1 | 2.6666667 | 40 + 1 | 0 | 1 | .0000000 | 20 + 1 | 0 | 1 | .0000000 | 30 + 1 | 0 | 1 | .0000000 | 50 + 2 | 0 | 1 | .0000000 | 50 + 1 | 5 | 12 | .0000000 | 30 + 3 | 5 | 12 | .0000000 | 30 + 3 | 5 | 12 | .0000000 | 30 + 4 | 1 | 1 | .0000000 | 40 + 4 | 1 | 1 | .0000000 | 40 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn-ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.cn) following and 0 following ), +win2 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.vn asc), +win3 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc), +win4 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.cn desc); -- mvd 2->4; 6,2->5; 2->7; 3,6->8; 10,1,6->9; + dt | pn | qty | to_char | to_char | vn | to_char | to_char | to_char | cn +------------+-----+------+-------------------+-------------------+----+-------------------+-------------------+-------------------+---- + 1401-01-01 | 100 | 1100 | .0000000 | .0000000 | 40 | .0000000 | 2.0000000 | 1.0000000 | 2 + 1401-03-01 | 200 | 1 | .0000000 | .0000000 | 10 | .0000000 | 1.0000000 | 1.0000000 | 1 + 1401-04-01 | 200 | 1 | .0000000 | .0000000 | 40 | .0000000 | 3.0000000 | 1.0000000 | 3 + 1401-05-01 | 100 | 1 | .0000000 | .0000000 | 20 | .0000000 | 1.0000000 | 1.0000000 | 1 + 1401-05-02 | 300 | 1 | .0000000 | .0000000 | 30 | .0000000 | 1.0000000 | 1.0000000 | 1 + 1401-06-01 | 400 | 1 | .0000000 | .0000000 | 50 | .0000000 | 1.0000000 | 1.0000000 | 1 + 1401-06-01 | 400 | 1 | .0000000 | .0000000 | 50 | .0000000 | 2.0000000 | 1.0000000 | 2 + 1401-06-01 | 500 | 12 | .0000000 | .0000000 | 30 | .0000000 | 1.0000000 | 1.0000000 | 1 + 1401-06-01 | 500 | 12 | .0000000 | .0000000 | 30 | .0000000 | 3.0000000 | 1.0000000 | 3 + 1401-06-01 | 600 | 12 | .0000000 | .0000000 | 30 | .0000000 | 3.0000000 | 1.0000000 | 3 + 1401-06-01 | 700 | 1 | .0000000 | .0000000 | 40 | .0000000 | 4.0000000 | 1.0000000 | 4 + 1401-06-01 | 800 | 1 | .0000000 | .0000000 | 40 | .0000000 | 4.0000000 | 1.0000000 | 4 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.cn asc rows between floor(ow_sale.qty) following and unbounded following ); -- mvd 1->6; + cn | pn | vn | qty | qty | to_char +----+-----+----+------+------+------------------- + 2 | 100 | 40 | 1100 | 1100 | .0000000 + 1 | 200 | 10 | 1 | 1 | 4.8100000 + 3 | 200 | 40 | 1 | 1 | 4.9876543 + 1 | 100 | 20 | 1 | 1 | 5.1093750 + 1 | 300 | 30 | 1 | 1 | 5.1020408 + 1 | 400 | 50 | 1 | 1 | 4.8055556 + 2 | 400 | 50 | 1 | 1 | 3.8400000 + 1 | 500 | 30 | 12 | 12 | .0000000 + 3 | 500 | 30 | 12 | 12 | .0000000 + 3 | 600 | 30 | 12 | 12 | .0000000 + 4 | 700 | 40 | 1 | 1 | .0000000 + 4 | 800 | 40 | 1 | 1 | .0000000 +(12 rows) + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn*ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between 1 following and unbounded following ), +win2 as (order by ow_sale.pn desc); -- mvd 3->2; 3->4; 3->5; 3->6; 3->7; 3->8; + vn | to_char | pn | to_char | to_char | to_char | to_char | to_char +----+-------------------+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 40 | .0000000 | 800 | .0833333 | .0833333 | 160.0000000 | 1.0000000 | 1.0000000 + 40 | .0000000 | 700 | .1666667 | .1666667 | 160.0000000 | 2.0000000 | 2.0000000 + 30 | 2.2500000 | 600 | .2500000 | .2500000 | 160.0000000 | 3.0000000 | 3.0000000 + 30 | 3.1875000 | 500 | .4166667 | .4166667 | 160.0000000 | 4.0000000 | 4.0000000 + 30 | 2.0000000 | 500 | .4166667 | .4166667 | 160.0000000 | 5.0000000 | 5.0000000 + 50 | 3.3600000 | 400 | .5833333 | .5833333 | 160.0000000 | 6.0000000 | 6.0000000 + 50 | 16.1388889 | 400 | .5833333 | .5833333 | 160.0000000 | 7.0000000 | 7.0000000 + 30 | 22.0000000 | 300 | .6666667 | .6666667 | 160.0000000 | 8.0000000 | 8.0000000 + 40 | 28.2222222 | 200 | .8333333 | .8333333 | 160.0000000 | 9.0000000 | 9.0000000 + 10 | 31.6500000 | 200 | .8333333 | .8333333 | 160.0000000 | 10.0000000 | 10.0000000 + 40 | 33.4214876 | 100 | 1.0000000 | 1.0000000 | 160.0000000 | 11.0000000 | 11.0000000 + 20 | 21.9843750 | 100 | 1.0000000 | 1.0000000 | 160.0000000 | 12.0000000 | 12.0000000 +(12 rows) + +-- VAR_POP() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.pn asc,ow_sale.vn desc,ow_sale.cn asc); -- mvd 7,2,4->6; + prc | vn | dt | pn | qty | to_char | cn +------+----+------------+-----+------+-------------------+---- + 0 | 30 | 1401-05-02 | 300 | 1 | .0000000 | 1 + 0 | 50 | 1401-06-01 | 400 | 1 | .0000000 | 1 + 0 | 50 | 1401-06-01 | 400 | 1 | .0000000 | 2 + 5 | 30 | 1401-06-01 | 500 | 12 | .0000000 | 1 + 5 | 30 | 1401-06-01 | 500 | 12 | .0000000 | 3 + 1 | 40 | 1401-06-01 | 800 | 1 | .0000000 | 4 + 2400 | 40 | 1401-01-01 | 100 | 1100 | .0000000 | 2 + 0 | 20 | 1401-05-01 | 100 | 1 | .0000000 | 1 + 0 | 40 | 1401-04-01 | 200 | 1 | .0000000 | 3 + 0 | 10 | 1401-03-01 | 200 | 1 | .0000000 | 1 + 5 | 30 | 1401-06-01 | 600 | 12 | .0000000 | 3 + 1 | 40 | 1401-06-01 | 700 | 1 | .0000000 | 4 +(12 rows) + +-- VAR_POP() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +, +TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.qty order by ow_sale.pn desc,ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.pn desc,ow_sale.vn desc); -- mvd 2,1,6->5; 2,1,6->7; 2,1,6->8; + qty | vn | cn | vn | to_char | pn | to_char | to_char +------+----+----+----+-------------------+-----+-------------------+------------------- + 12 | 30 | 3 | 30 | .0000000 | 600 | .3333333 | 1.0000000 + 12 | 30 | 1 | 30 | .0000000 | 500 | 1.0000000 | 2.0000000 + 12 | 30 | 3 | 30 | .0000000 | 500 | 1.0000000 | 2.0000000 + 1100 | 40 | 2 | 40 | .0000000 | 100 | 1.0000000 | 1.0000000 + 1 | 40 | 4 | 40 | .0000000 | 800 | .1250000 | 1.0000000 + 1 | 40 | 4 | 40 | .0000000 | 700 | .2500000 | 2.0000000 + 1 | 50 | 2 | 50 | .0000000 | 400 | .5000000 | 3.0000000 + 1 | 50 | 1 | 50 | .0000000 | 400 | .5000000 | 3.0000000 + 1 | 30 | 1 | 30 | .0000000 | 300 | .6250000 | 4.0000000 + 1 | 40 | 3 | 40 | .0000000 | 200 | .7500000 | 5.0000000 + 1 | 10 | 1 | 10 | .0000000 | 200 | .8750000 | 6.0000000 + 1 | 20 | 1 | 20 | .0000000 | 100 | 1.0000000 | 7.0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc range unbounded preceding ); -- mvd 1,4,3->5; + prc | qty | vn | cn | to_char +------+------+----+----+------------------- + 0 | 1 | 10 | 1 | .0000000 + 0 | 1 | 20 | 1 | .0000000 + 0 | 1 | 30 | 1 | .0000000 + 5 | 12 | 30 | 1 | .0000000 + 5 | 12 | 30 | 3 | 2500.0000000 + 5 | 12 | 30 | 3 | 2500.0000000 + 0 | 1 | 40 | 3 | .0000000 + 1 | 1 | 40 | 4 | 2500.0000000 + 1 | 1 | 40 | 4 | 2500.0000000 + 0 | 1 | 50 | 1 | .0000000 + 2400 | 1100 | 40 | 2 | .0000000 + 0 | 1 | 50 | 2 | .0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.dt order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.dt order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.pn asc range unbounded preceding ), +win2 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.dt order by ow_sale.pn asc); -- mvd 2,7,4,5->6; 2,7,9,1,5->8; 2,7,4,5->10; 2,7,9,1,5->11; 2,7,9,1,5->12; 2,7,9,1,5->13; + vn | prc | vn | cn | pn | to_char | dt | to_char | qty | to_char | to_char | to_char | to_char +----+------+----+----+-----+-------------------+------------+-------------------+------+-------------------+-------------------+-------------------+------------------- + 20 | 0 | 20 | 1 | 100 | .0000000 | 1401-05-01 | 1.0000000 | 1 | -99.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 50 | 0 | 50 | 2 | 400 | .0000000 | 1401-06-01 | 1.0000000 | 1 | -398.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 40 | 0 | 40 | 3 | 200 | .0000000 | 1401-04-01 | 1.0000000 | 1 | -197.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 10 | 0 | 10 | 1 | 200 | .0000000 | 1401-03-01 | 1.0000000 | 1 | -199.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 30 | 0 | 30 | 1 | 300 | .0000000 | 1401-05-02 | 1.0000000 | 1 | -299.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 50 | 0 | 50 | 1 | 400 | .0000000 | 1401-06-01 | 2.0000000 | 1 | -399.0000000 | 1.0000000 | 1.0000000 | 2.0000000 + 30 | 5 | 30 | 1 | 500 | .0000000 | 1401-06-01 | 1.0000000 | 12 | -499.0000000 | 1.0000000 | .6666667 | 1.0000000 + 40 | 2400 | 40 | 2 | 100 | .0000000 | 1401-01-01 | 1.0000000 | 1100 | -98.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 30 | 5 | 30 | 3 | 500 | .0000000 | 1401-06-01 | 2.0000000 | 12 | -497.0000000 | 1.0000000 | .6666667 | 2.0000000 + 30 | 5 | 30 | 3 | 600 | .0000000 | 1401-06-01 | 3.0000000 | 12 | -597.0000000 | 3.0000000 | 1.0000000 | 3.0000000 + 40 | 1 | 40 | 4 | 700 | .0000000 | 1401-06-01 | 1.0000000 | 1 | -696.0000000 | 1.0000000 | .5000000 | 1.0000000 + 40 | 1 | 40 | 4 | 800 | .0000000 | 1401-06-01 | 2.0000000 | 1 | -796.0000000 | 2.0000000 | 1.0000000 | 2.0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.cn order by ow_sale.vn desc range 2 preceding ); -- mvd 4,5,2,6,7->3; + qty | dt | to_char | prc | cn | vn | pn +------+------------+-------------------+------+----+----+----- + 1 | 1401-05-01 | .0000000 | 0 | 1 | 20 | 100 + 1 | 1401-04-01 | .0000000 | 0 | 3 | 40 | 200 + 1 | 1401-05-02 | .0000000 | 0 | 1 | 30 | 300 + 1 | 1401-06-01 | .0000000 | 0 | 1 | 50 | 400 + 12 | 1401-06-01 | .0000000 | 5 | 1 | 30 | 500 + 12 | 1401-06-01 | .0000000 | 5 | 3 | 30 | 500 + 1 | 1401-06-01 | .0000000 | 1 | 4 | 40 | 800 + 1100 | 1401-01-01 | .0000000 | 2400 | 2 | 40 | 100 + 1 | 1401-03-01 | .0000000 | 0 | 1 | 10 | 200 + 1 | 1401-06-01 | .0000000 | 0 | 2 | 50 | 400 + 12 | 1401-06-01 | .0000000 | 5 | 3 | 30 | 600 + 1 | 1401-06-01 | .0000000 | 1 | 4 | 40 | 700 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.pn order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.cn desc range 1 preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.pn order by ow_sale.cn desc); -- mvd 1,3,5->4; 7->6; 1,5->8; 1,5->9; + cn | qty | dt | to_char | pn | to_char | vn | to_char | to_char +----+------+------------+-------------------+-----+-------------------+----+-------------------+------------------- + 2 | 1 | 1401-06-01 | .0000000 | 400 | 1.0000000 | 50 | 1.0000000 | .5000000 + 1 | 1 | 1401-06-01 | .2500000 | 400 | 1.0000000 | 50 | 2.0000000 | 1.0000000 + 4 | 1 | 1401-06-01 | .0000000 | 800 | 2.0000000 | 40 | 1.0000000 | 1.0000000 + 2 | 1100 | 1401-01-01 | .0000000 | 100 | 2.0000000 | 40 | 1.0000000 | .5000000 + 3 | 1 | 1401-04-01 | .0000000 | 200 | 2.0000000 | 40 | 1.0000000 | .5000000 + 4 | 1 | 1401-06-01 | .0000000 | 700 | 2.0000000 | 40 | 1.0000000 | 1.0000000 + 3 | 12 | 1401-06-01 | .0000000 | 600 | 3.0000000 | 30 | 1.0000000 | 1.0000000 + 1 | 1 | 1401-05-02 | .0000000 | 300 | 3.0000000 | 30 | 1.0000000 | 1.0000000 + 3 | 12 | 1401-06-01 | .0000000 | 500 | 3.0000000 | 30 | 1.0000000 | .5000000 + 1 | 12 | 1401-06-01 | .0000000 | 500 | 3.0000000 | 30 | 2.0000000 | 1.0000000 + 1 | 1 | 1401-05-01 | .0000000 | 100 | 4.0000000 | 20 | 2.0000000 | 1.0000000 + 1 | 1 | 1401-03-01 | .0000000 | 200 | 5.0000000 | 10 | 2.0000000 | 1.0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn asc range current row ); -- mvd 3,4->2; + vn | to_char | cn | pn +----+-------------------+----+----- + 30 | .0000000 | 1 | 300 + 50 | .0000000 | 1 | 400 + 50 | .0000000 | 2 | 400 + 30 | .0000000 | 1 | 500 + 30 | .0000000 | 3 | 500 + 40 | .0000000 | 4 | 800 + 20 | .0000000 | 1 | 100 + 40 | .0000000 | 2 | 100 + 10 | .0000000 | 1 | 200 + 40 | .0000000 | 3 | 200 + 30 | .0000000 | 3 | 600 + 40 | .0000000 | 4 | 700 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.dt order by ow_sale.pn asc range current row ), +win2 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,1,4,5,6->2; 1,3,4,5,6->7; 1,3,4,5,6->8; 3->9; + dt | to_char | cn | vn | qty | pn | to_char | to_char | to_char +------------+-------------------+----+----+------+-----+-------------------+-------------------+------------------- + 1401-01-01 | .0000000 | 2 | 40 | 1100 | 100 | .0000000 | 1.0000000 | .0000000 + 1401-03-01 | .0000000 | 1 | 10 | 1 | 200 | .0000000 | 1.0000000 | 4.0000000 + 1401-04-01 | .0000000 | 3 | 40 | 1 | 200 | .0000000 | 1.0000000 | .0000000 + 1401-05-01 | .0000000 | 1 | 20 | 1 | 100 | .0000000 | 1.0000000 | .0000000 + 1401-05-02 | .0000000 | 1 | 30 | 1 | 300 | .0000000 | 1.0000000 | .0000000 + 1401-06-01 | .0000000 | 1 | 50 | 1 | 400 | .0000000 | 1.0000000 | .0000000 + 1401-06-01 | .0000000 | 2 | 50 | 1 | 400 | .0000000 | 1.0000000 | .0000000 + 1401-06-01 | .0000000 | 1 | 30 | 12 | 500 | .0000000 | 1.0000000 | .0000000 + 1401-06-01 | .0000000 | 3 | 30 | 12 | 500 | .0000000 | 1.0000000 | .0000000 + 1401-06-01 | .0000000 | 3 | 30 | 12 | 600 | .0000000 | 1.0000000 | .0000000 + 1401-06-01 | .0000000 | 4 | 40 | 1 | 700 | .0000000 | 1.0000000 | .0000000 + 1401-06-01 | .0000000 | 4 | 40 | 1 | 800 | .0000000 | 1.0000000 | .0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.cn) preceding ); -- mvd 8,9->7; + qty | vn | qty | vn | vn | pn | to_char | cn | dt +------+----+------+----+----+-----+-------------------+----+------------ + 1 | 10 | 1 | 10 | 10 | 200 | .0000000 | 1 | 1401-03-01 + 1 | 30 | 1 | 30 | 30 | 300 | .0000000 | 1 | 1401-05-02 + 1 | 40 | 1 | 40 | 40 | 700 | .0000000 | 4 | 1401-06-01 + 1 | 40 | 1 | 40 | 40 | 800 | .0000000 | 4 | 1401-06-01 + 12 | 30 | 12 | 30 | 30 | 600 | .0000000 | 3 | 1401-06-01 + 12 | 30 | 12 | 30 | 30 | 500 | .0000000 | 3 | 1401-06-01 + 1 | 50 | 1 | 50 | 50 | 400 | .0000000 | 2 | 1401-06-01 + 1 | 50 | 1 | 50 | 50 | 400 | 155.4400000 | 1 | 1401-06-01 + 12 | 30 | 12 | 30 | 30 | 500 | 155.4400000 | 1 | 1401-06-01 + 1100 | 40 | 1100 | 40 | 40 | 100 | .0000000 | 2 | 1401-01-01 + 1 | 40 | 1 | 40 | 40 | 200 | .0000000 | 3 | 1401-04-01 + 1 | 20 | 1 | 20 | 20 | 100 | .0000000 | 1 | 1401-05-01 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.cn) preceding ), +win2 as (order by ow_sale.vn desc); -- mvd 1,4,2,5->3; 2->6; 2->7; 2->8; 2->9; 2->10; + cn | vn | to_char | qty | pn | to_char | to_char | to_char | to_char | to_char +----+----+-------------------+------+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 2 | 50 | .0000000 | 1 | 400 | .0000000 | 1.0000000 | 1.0000000 | 51.0000000 | .1666667 + 1 | 50 | .0000000 | 1 | 400 | .0000000 | 1.0000000 | 1.0000000 | 51.0000000 | .1666667 + 2 | 40 | .0000000 | 1100 | 100 | .1818182 | 3.0000000 | 2.0000000 | 42.0000000 | .5000000 + 4 | 40 | .0000000 | 1 | 700 | .1818182 | 3.0000000 | 2.0000000 | 42.0000000 | .5000000 + 3 | 40 | .0000000 | 1 | 200 | .1818182 | 3.0000000 | 2.0000000 | 42.0000000 | .5000000 + 4 | 40 | .0000000 | 1 | 800 | .1818182 | 3.0000000 | 2.0000000 | 42.0000000 | .5000000 + 3 | 30 | .0000000 | 12 | 600 | .5454545 | 7.0000000 | 3.0000000 | 31.0000000 | .8333333 + 1 | 30 | .0000000 | 1 | 300 | .5454545 | 7.0000000 | 3.0000000 | 31.0000000 | .8333333 + 1 | 30 | .0000000 | 12 | 500 | .5454545 | 7.0000000 | 3.0000000 | 31.0000000 | .8333333 + 3 | 30 | .0000000 | 12 | 500 | .5454545 | 7.0000000 | 3.0000000 | 31.0000000 | .8333333 + 1 | 20 | .0000000 | 1 | 100 | .9090909 | 11.0000000 | 4.0000000 | 21.0000000 | .9166667 + 1 | 10 | .0000000 | 1 | 200 | 1.0000000 | 12.0000000 | 5.0000000 | 11.0000000 | 1.0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn desc range between unbounded preceding and current row ); -- mvd 5->4; + cn | pn | dt | to_char | vn +----+-----+------------+-------------------+---- + 1 | 200 | 1401-03-01 | .0000000 | 10 + 1 | 100 | 1401-05-01 | .0000000 | 20 + 1 | 300 | 1401-05-02 | 3.6875000 | 30 + 3 | 500 | 1401-06-01 | 3.6875000 | 30 + 1 | 500 | 1401-06-01 | 3.6875000 | 30 + 3 | 600 | 1401-06-01 | 3.6875000 | 30 + 4 | 700 | 1401-06-01 | 270000.0000000 | 40 + 3 | 200 | 1401-04-01 | 270000.0000000 | 40 + 4 | 800 | 1401-06-01 | 270000.0000000 | 40 + 2 | 100 | 1401-01-01 | 270000.0000000 | 40 + 1 | 400 | 1401-06-01 | .0000000 | 50 + 2 | 400 | 1401-06-01 | .0000000 | 50 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(partition by ow_sale.qty,ow_sale.pn,ow_sale.pn order by ow_sale.vn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn-ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc+ow_sale.vn) as int),cast (floor(ow_sale.vn-ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.pn order by ow_sale.vn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.prc order by ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.pn desc), +win5 as (order by ow_sale.cn desc); -- mvd 3,4,1->2; 3,4,1->5; 7->6; 9,7,1->8; 1->10; 7->11; + pn | to_char | vn | qty | to_char | to_char | cn | to_char | prc | to_char | to_char +-----+-------------------+----+------+-------------------+-------------------+----+-------------------+------+-------------------+------------------- + 800 | .0000000 | 40 | 1 | 1.0000000 | .0000000 | 4 | 1.0000000 | 1 | .0000000 | 1.0000000 + 700 | .0000000 | 40 | 1 | 1.0000000 | .0000000 | 4 | 1.0000000 | 1 | .0000000 | 1.0000000 + 500 | .0000000 | 30 | 12 | 2.0000000 | 39.0000000 | 3 | 1.0000000 | 5 | .0000000 | 2.0000000 + 200 | 225.0000000 | 40 | 1 | 2.0000000 | 49.0000000 | 3 | 1.0000000 | 0 | .0000000 | 2.0000000 + 600 | .0000000 | 30 | 12 | 1.0000000 | .0000000 | 3 | 1.0000000 | 5 | .0000000 | 2.0000000 + 400 | .0000000 | 50 | 1 | 2.0000000 | 18.0000000 | 2 | 1.0000000 | 0 | .0000000 | 3.0000000 + 100 | .0000000 | 40 | 1100 | 1.0000000 | 39.0000000 | 2 | 1.0000000 | 2400 | .0000000 | 3.0000000 + 500 | .0000000 | 30 | 12 | 2.0000000 | 18.0000000 | 1 | 1.0000000 | 5 | .0000000 | 4.0000000 + 400 | .0000000 | 50 | 1 | 2.0000000 | 49.0000000 | 1 | 1.0000000 | 0 | .0000000 | 4.0000000 + 300 | .0000000 | 30 | 1 | 1.0000000 | 49.0000000 | 1 | 1.0000000 | 0 | .0000000 | 4.0000000 + 100 | .0000000 | 20 | 1 | 1.0000000 | 29.0000000 | 1 | 1.0000000 | 0 | .0000000 | 4.0000000 + 200 | .0000000 | 10 | 1 | 1.0000000 | 39.0000000 | 1 | 1.0000000 | 0 | .0000000 | 4.0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.pn asc range between unbounded preceding and 4 following ); -- mvd 4,5,2->3; + prc | pn | to_char | dt | vn +------+-----+-------------------+------------+---- + 0 | 200 | .0000000 | 1401-03-01 | 10 + 0 | 300 | .0000000 | 1401-05-02 | 30 + 5 | 500 | .0000000 | 1401-06-01 | 30 + 5 | 500 | .0000000 | 1401-06-01 | 30 + 5 | 600 | .0000000 | 1401-06-01 | 30 + 1 | 700 | .0000000 | 1401-06-01 | 40 + 1 | 800 | .0000000 | 1401-06-01 | 40 + 0 | 400 | .0000000 | 1401-06-01 | 50 + 0 | 400 | .0000000 | 1401-06-01 | 50 + 0 | 100 | .0000000 | 1401-05-01 | 20 + 2400 | 100 | .0000000 | 1401-01-01 | 40 + 0 | 200 | .0000000 | 1401-04-01 | 40 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.pn order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.cn*ow_sale.vn) following ); -- mvd 2,4,5->3; 2,4,5->6; + dt | cn | to_char | vn | pn | to_char +------------+----+-------------------+----+-----+------------------- + 1401-05-01 | 1 | .0000000 | 20 | 100 | 20.0000000 + 1401-03-01 | 1 | .0000000 | 10 | 200 | 10.0000000 + 1401-04-01 | 3 | .0000000 | 40 | 200 | 40.0000000 + 1401-06-01 | 2 | .0000000 | 50 | 400 | 50.0000000 + 1401-06-01 | 3 | .0000000 | 30 | 600 | 30.0000000 + 1401-06-01 | 4 | .0000000 | 40 | 800 | 40.0000000 + 1401-01-01 | 2 | .0000000 | 40 | 100 | 40.0000000 + 1401-05-02 | 1 | .0000000 | 30 | 300 | 30.0000000 + 1401-06-01 | 1 | .0000000 | 50 | 400 | 50.0000000 + 1401-06-01 | 1 | .0000000 | 30 | 500 | 30.0000000 + 1401-06-01 | 3 | .0000000 | 30 | 500 | 30.0000000 + 1401-06-01 | 4 | .0000000 | 40 | 700 | 40.0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 4,5,1,6,2,7->3; + dt | qty | to_char | prc | cn | vn | pn +------------+------+-------------------+------+----+----+----- + 1401-03-01 | 1 | .0000000 | 0 | 1 | 10 | 200 + 1401-04-01 | 1 | .0000000 | 0 | 3 | 40 | 200 + 1401-05-01 | 1 | .0000000 | 0 | 1 | 20 | 100 + 1401-06-01 | 1 | .0000000 | 0 | 2 | 50 | 400 + 1401-06-01 | 1 | .0000000 | 1 | 4 | 40 | 800 + 1401-06-01 | 12 | .0000000 | 5 | 3 | 30 | 600 + 1401-05-02 | 1 | .0000000 | 0 | 1 | 30 | 300 + 1401-06-01 | 1 | .0000000 | 0 | 1 | 50 | 400 + 1401-06-01 | 1 | .0000000 | 1 | 4 | 40 | 700 + 1401-06-01 | 12 | .0000000 | 5 | 1 | 30 | 500 + 1401-06-01 | 12 | .0000000 | 5 | 3 | 30 | 500 + 1401-01-01 | 1100 | .0000000 | 2400 | 2 | 40 | 100 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.cn order by ow_sale.pn asc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.vn asc); -- mvd 7,8,5,9,1->6; 9->10; + pn | qty | pn | pn | dt | to_char | prc | cn | vn | to_char +-----+------+-----+-----+------------+-------------------+------+----+----+------------------- + 200 | 1 | 200 | 200 | 1401-03-01 | .0000000 | 0 | 1 | 10 | .0000000 + 100 | 1 | 100 | 100 | 1401-05-01 | .0000000 | 0 | 1 | 20 | .0909091 + 300 | 1 | 300 | 300 | 1401-05-02 | .0000000 | 0 | 1 | 30 | .1818182 + 500 | 12 | 500 | 500 | 1401-06-01 | .0000000 | 5 | 1 | 30 | .1818182 + 500 | 12 | 500 | 500 | 1401-06-01 | .0000000 | 5 | 3 | 30 | .1818182 + 600 | 12 | 600 | 600 | 1401-06-01 | .0000000 | 5 | 3 | 30 | .1818182 + 100 | 1100 | 100 | 100 | 1401-01-01 | .0000000 | 2400 | 2 | 40 | .5454545 + 700 | 1 | 700 | 700 | 1401-06-01 | .0000000 | 1 | 4 | 40 | .5454545 + 800 | 1 | 800 | 800 | 1401-06-01 | .0000000 | 1 | 4 | 40 | .5454545 + 200 | 1 | 200 | 200 | 1401-04-01 | .0000000 | 0 | 3 | 40 | .5454545 + 400 | 1 | 400 | 400 | 1401-06-01 | .0000000 | 0 | 2 | 50 | .9090909 + 400 | 1 | 400 | 400 | 1401-06-01 | .0000000 | 0 | 1 | 50 | .9090909 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.dt order by ow_sale.vn asc range between 2 preceding and 0 preceding ); -- mvd 5,6,1,7->4; + qty | qty | pn | to_char | prc | dt | vn +------+------+-----+-------------------+------+------------+---- + 1 | 1 | 100 | .0000000 | 0 | 1401-05-01 | 20 + 12 | 12 | 500 | .0000000 | 5 | 1401-06-01 | 30 + 12 | 12 | 600 | .0000000 | 5 | 1401-06-01 | 30 + 12 | 12 | 500 | .0000000 | 5 | 1401-06-01 | 30 + 1 | 1 | 200 | .0000000 | 0 | 1401-04-01 | 40 + 1 | 1 | 800 | .0000000 | 1 | 1401-06-01 | 40 + 1 | 1 | 700 | .0000000 | 1 | 1401-06-01 | 40 + 1 | 1 | 200 | .0000000 | 0 | 1401-03-01 | 10 + 1 | 1 | 300 | .0000000 | 0 | 1401-05-02 | 30 + 1100 | 1100 | 100 | .0000000 | 2400 | 1401-01-01 | 40 + 1 | 1 | 400 | .0000000 | 0 | 1401-06-01 | 50 + 1 | 1 | 400 | .0000000 | 0 | 1401-06-01 | 50 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.pn desc range between 4 preceding and 3 preceding ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.cn asc); -- mvd 6,1,4->5; 6,1,4->7; 6,1,4->8; + vn | prc | qty | pn | to_char | cn | to_char | to_char +----+------+------+-----+-------------------+----+-------------------+------------------- + 10 | 0 | 1 | 200 | .0000000 | 1 | 1.0000000 | 200.0000000 + 20 | 0 | 1 | 100 | .0000000 | 1 | 1.0000000 | 100.0000000 + 30 | 5 | 12 | 500 | .0000000 | 1 | .5000000 | 500.0000000 + 30 | 0 | 1 | 300 | .0000000 | 1 | 1.0000000 | 300.0000000 + 50 | 0 | 1 | 400 | .0000000 | 1 | .5000000 | 400.0000000 + 30 | 5 | 12 | 600 | .0000000 | 3 | 1.0000000 | 600.0000000 + 30 | 5 | 12 | 500 | .0000000 | 3 | 1.0000000 | 500.0000000 + 40 | 0 | 1 | 200 | .0000000 | 3 | 1.0000000 | 200.0000000 + 40 | 2400 | 1100 | 100 | .0000000 | 2 | 1.0000000 | 100.0000000 + 50 | 0 | 1 | 400 | .0000000 | 2 | 1.0000000 | 400.0000000 + 40 | 1 | 1 | 800 | .0000000 | 4 | 1.0000000 | 800.0000000 + 40 | 1 | 1 | 700 | .0000000 | 4 | 1.0000000 | 700.0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn desc range between floor(ow_sale.pn+ow_sale.pn) preceding and current row ); -- mvd 3,4->2; + qty | to_char | dt | vn +------+-------------------+------------+---- + 1 | .0000000 | 1401-03-01 | 10 + 1 | .0000000 | 1401-05-02 | 30 + 1 | .0000000 | 1401-06-01 | 50 + 1 | .0000000 | 1401-06-01 | 50 + 1 | .0000000 | 1401-06-01 | 40 + 1 | .0000000 | 1401-06-01 | 40 + 12 | .0000000 | 1401-06-01 | 30 + 12 | .0000000 | 1401-06-01 | 30 + 12 | .0000000 | 1401-06-01 | 30 + 1100 | .0000000 | 1401-01-01 | 40 + 1 | .0000000 | 1401-04-01 | 40 + 1 | .0000000 | 1401-05-01 | 20 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn/ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.cn asc range between 0 preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.vn order by ow_sale.cn desc), +win3 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc); -- mvd 8,2,9->7; 3,8,5,1,2,9->10; 3,8,5,1,2,9->11; 8,2,9->12; 5,9->13; + qty | vn | prc | qty | dt | prc | to_char | cn | pn | to_char | to_char | to_char | to_char +------+----+------+------+------------+------+-------------------+----+-----+-------------------+-------------------+-------------------+------------------- + 1 | 30 | 0 | 1 | 1401-05-02 | 0 | .0000000 | 1 | 300 | 1.0000000 | 1.0000000 | 300.0000000 | .0000000 + 1 | 50 | 0 | 1 | 1401-06-01 | 0 | .0000000 | 1 | 400 | 2.0000000 | 2.0000000 | 400.0000000 | .0000000 + 1 | 50 | 0 | 1 | 1401-06-01 | 0 | .0000000 | 2 | 400 | 1.0000000 | 1.0000000 | 400.0000000 | .0000000 + 12 | 30 | 5 | 12 | 1401-06-01 | 5 | .0000000 | 1 | 500 | 2.0000000 | 2.0000000 | 500.0000000 | 50.0000000 + 12 | 30 | 5 | 12 | 1401-06-01 | 5 | .0000000 | 3 | 500 | 1.0000000 | 1.0000000 | 500.0000000 | 50.0000000 + 1 | 40 | 1 | 1 | 1401-06-01 | 1 | .0000000 | 4 | 800 | 1.0000000 | 1.0000000 | 800.0000000 | 30.0000000 + 1 | 20 | 0 | 1 | 1401-05-01 | 0 | .0000000 | 1 | 100 | 1.0000000 | 1.0000000 | 100.0000000 | .0000000 + 1100 | 40 | 2400 | 1100 | 1401-01-01 | 2400 | .0000000 | 2 | 100 | 1.0000000 | 1.0000000 | 100.0000000 | .0000000 + 1 | 10 | 0 | 1 | 1401-03-01 | 0 | .0000000 | 1 | 200 | 1.0000000 | 1.0000000 | 200.0000000 | .0000000 + 1 | 40 | 0 | 1 | 1401-04-01 | 0 | .0000000 | 3 | 200 | 1.0000000 | 1.0000000 | 200.0000000 | .0000000 + 12 | 30 | 5 | 12 | 1401-06-01 | 5 | .0000000 | 3 | 600 | 1.0000000 | 1.0000000 | 600.0000000 | 50.0000000 + 1 | 40 | 1 | 1 | 1401-06-01 | 1 | .0000000 | 4 | 700 | 1.0000000 | 1.0000000 | 700.0000000 | 50.0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.prc,ow_sale.pn order by ow_sale.cn desc range between 0 preceding and floor(ow_sale.vn) following ); -- mvd 1,3,4,5,6->2; + prc | to_char | cn | dt | qty | pn +------+-------------------+----+------------+------+----- + 0 | .0000000 | 3 | 1401-04-01 | 1 | 200 + 0 | .0000000 | 1 | 1401-05-01 | 1 | 100 + 0 | .0000000 | 1 | 1401-05-02 | 1 | 300 + 0 | .0000000 | 2 | 1401-06-01 | 1 | 400 + 0 | .0000000 | 1 | 1401-06-01 | 1 | 400 + 1 | .0000000 | 4 | 1401-06-01 | 1 | 700 + 5 | .0000000 | 3 | 1401-06-01 | 12 | 600 + 2400 | .0000000 | 2 | 1401-01-01 | 1100 | 100 + 0 | .0000000 | 1 | 1401-03-01 | 1 | 200 + 1 | .0000000 | 4 | 1401-06-01 | 1 | 800 + 5 | .0000000 | 3 | 1401-06-01 | 12 | 500 + 5 | .0000000 | 1 | 1401-06-01 | 12 | 500 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.pn asc range between 2 preceding and unbounded following ); -- mvd 4,3->6; + vn | dt | pn | cn | qty | to_char +----+------------+-----+----+------+------------------- + 20 | 1401-05-01 | 100 | 1 | 1 | 4.0000000 + 10 | 1401-03-01 | 200 | 1 | 1 | 4.6875000 + 30 | 1401-05-02 | 300 | 1 | 1 | 5.5555556 + 50 | 1401-06-01 | 400 | 1 | 1 | 6.2500000 + 30 | 1401-06-01 | 500 | 1 | 12 | .0000000 + 40 | 1401-04-01 | 200 | 3 | 1 | 5.5555556 + 30 | 1401-06-01 | 500 | 3 | 12 | .0000000 + 30 | 1401-06-01 | 600 | 3 | 12 | .0000000 + 40 | 1401-01-01 | 100 | 2 | 1100 | 1440000.0000000 + 50 | 1401-06-01 | 400 | 2 | 1 | .0000000 + 40 | 1401-06-01 | 700 | 4 | 1 | .0000000 + 40 | 1401-06-01 | 800 | 4 | 1 | .0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.vn asc range between floor(ow_sale.cn) preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.vn desc); -- mvd 4,5,1->3; 4,5,2->6; + qty | pn | to_char | cn | vn | to_char +------+-----+-------------------+----+----+------------------- + 1 | 400 | .0000000 | 2 | 50 | .0000000 + 1 | 800 | .0000000 | 4 | 40 | .0000000 + 1 | 700 | .0000000 | 4 | 40 | .0000000 + 12 | 500 | .0000000 | 1 | 30 | .0000000 + 12 | 600 | .0000000 | 3 | 30 | .0000000 + 12 | 500 | .0000000 | 3 | 30 | .0000000 + 1 | 200 | .0000000 | 1 | 10 | .0000000 + 1 | 100 | .0000000 | 1 | 20 | .0000000 + 1 | 300 | .0000000 | 1 | 30 | .0000000 + 1 | 400 | .0000000 | 1 | 50 | .0000000 + 1 | 200 | .0000000 | 3 | 40 | .0000000 + 1100 | 100 | .0000000 | 2 | 40 | .0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.dt order by ow_sale.vn desc range between current row and current row ); -- mvd 6,7,4,2,8->5; + qty | vn | vn | cn | to_char | prc | dt | pn +------+----+----+----+-------------------+------+------------+----- + 1 | 20 | 20 | 1 | .0000000 | 0 | 1401-05-01 | 100 + 1 | 30 | 30 | 1 | .0000000 | 0 | 1401-05-02 | 300 + 1 | 50 | 50 | 1 | .0000000 | 0 | 1401-06-01 | 400 + 12 | 30 | 30 | 1 | .0000000 | 5 | 1401-06-01 | 500 + 1 | 40 | 40 | 3 | .0000000 | 0 | 1401-04-01 | 200 + 12 | 30 | 30 | 3 | .0000000 | 5 | 1401-06-01 | 500 + 1 | 40 | 40 | 4 | .0000000 | 1 | 1401-06-01 | 800 + 1 | 10 | 10 | 1 | .0000000 | 0 | 1401-03-01 | 200 + 1100 | 40 | 40 | 2 | .0000000 | 2400 | 1401-01-01 | 100 + 1 | 50 | 50 | 2 | .0000000 | 0 | 1401-06-01 | 400 + 12 | 30 | 30 | 3 | .0000000 | 5 | 1401-06-01 | 600 + 1 | 40 | 40 | 4 | .0000000 | 1 | 1401-06-01 | 700 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.cn asc range between current row and current row ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc); -- mvd 4,5,2,1->3; 4,5,2,1->6; 5,2,8->7; 5,2,8->9; + vn | cn | to_char | prc | dt | to_char | to_char | pn | to_char +----+----+-------------------+------+------------+-------------------+-------------------+-----+------------------- + 20 | 1 | .0000000 | 0 | 1401-05-01 | 20.0000000 | .0000000 | 100 | .0000000 + 50 | 2 | .0000000 | 0 | 1401-06-01 | 50.0000000 | .0000000 | 400 | .0000000 + 40 | 3 | .0000000 | 0 | 1401-04-01 | 40.0000000 | .0000000 | 200 | .0000000 + 10 | 1 | .0000000 | 0 | 1401-03-01 | 10.0000000 | .0000000 | 200 | .0000000 + 30 | 1 | .0000000 | 0 | 1401-05-02 | 30.0000000 | .0000000 | 300 | .0000000 + 30 | 1 | .0000000 | 5 | 1401-06-01 | 30.0000000 | .0000000 | 500 | .0000000 + 50 | 1 | .0000000 | 0 | 1401-06-01 | 50.0000000 | .0000000 | 400 | .0000000 + 40 | 2 | .0000000 | 2400 | 1401-01-01 | 40.0000000 | .0000000 | 100 | 11.0000000 + 30 | 3 | .0000000 | 5 | 1401-06-01 | 30.0000000 | .0000000 | 500 | .0000000 + 30 | 3 | .0000000 | 5 | 1401-06-01 | 30.0000000 | .0000000 | 600 | .0000000 + 40 | 4 | .0000000 | 1 | 1401-06-01 | 40.0000000 | .0000000 | 800 | .0000000 + 40 | 4 | .0000000 | 1 | 1401-06-01 | 40.0000000 | .0000000 | 700 | .0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.prc order by ow_sale.vn asc range between current row and unbounded following ); -- mvd 6,7,8,1,2->5; + vn | pn | pn | qty | to_char | prc | dt | cn +----+-----+-----+------+-------------------+------+------------+---- + 20 | 100 | 100 | 1 | .0000000 | 0 | 1401-05-01 | 1 + 30 | 300 | 300 | 1 | .0000000 | 0 | 1401-05-02 | 1 + 50 | 400 | 400 | 1 | .0000000 | 0 | 1401-06-01 | 1 + 30 | 500 | 500 | 12 | .0000000 | 5 | 1401-06-01 | 1 + 40 | 200 | 200 | 1 | .0000000 | 0 | 1401-04-01 | 3 + 30 | 500 | 500 | 12 | .0000000 | 5 | 1401-06-01 | 3 + 40 | 800 | 800 | 1 | .0000000 | 1 | 1401-06-01 | 4 + 10 | 200 | 200 | 1 | .0000000 | 0 | 1401-03-01 | 1 + 40 | 100 | 100 | 1100 | .0000000 | 2400 | 1401-01-01 | 2 + 50 | 400 | 400 | 1 | .0000000 | 0 | 1401-06-01 | 2 + 30 | 600 | 600 | 12 | .0000000 | 5 | 1401-06-01 | 3 + 40 | 700 | 700 | 1 | .0000000 | 1 | 1401-06-01 | 4 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.pn desc range between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.pn desc range between current row and unbounded following ); -- mvd 3,4->2; 3,4->5; + qty | to_char | dt | pn | to_char +------+-------------------+------------+-----+------------------- + 1 | .0000000 | 1401-03-01 | 200 | 200.0000000 + 12 | .0000000 | 1401-06-01 | 600 | 600.0000000 + 1 | .0000000 | 1401-06-01 | 700 | 700.0000000 + 1100 | .0000000 | 1401-01-01 | 100 | 100.0000000 + 1 | .0000000 | 1401-04-01 | 200 | 200.0000000 + 1 | .0000000 | 1401-05-01 | 100 | 100.0000000 + 1 | .0000000 | 1401-05-02 | 300 | 300.0000000 + 1 | .0000000 | 1401-06-01 | 400 | 400.0000000 + 1 | .0000000 | 1401-06-01 | 400 | 400.0000000 + 12 | .0000000 | 1401-06-01 | 500 | 500.0000000 + 12 | .0000000 | 1401-06-01 | 500 | 500.0000000 + 1 | .0000000 | 1401-06-01 | 800 | 800.0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.vn asc range between 1 following and 2 following ); -- mvd 4,1,5->3; + vn | vn | to_char | dt | pn +----+----+-------------------+------------+----- + 10 | 10 | .0000000 | 1401-03-01 | 200 + 30 | 30 | .0000000 | 1401-06-01 | 600 + 40 | 40 | .0000000 | 1401-06-01 | 700 + 20 | 20 | .0000000 | 1401-05-01 | 100 + 30 | 30 | .0000000 | 1401-05-02 | 300 + 30 | 30 | .0000000 | 1401-06-01 | 500 + 30 | 30 | .0000000 | 1401-06-01 | 500 + 40 | 40 | .0000000 | 1401-01-01 | 100 + 40 | 40 | .0000000 | 1401-04-01 | 200 + 40 | 40 | .0000000 | 1401-06-01 | 800 + 50 | 50 | .0000000 | 1401-06-01 | 400 + 50 | 50 | .0000000 | 1401-06-01 | 400 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.pn*ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.cn asc range between floor(ow_sale.pn) following and 4 following ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.cn asc), +win4 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc); -- mvd 8,1,2->7; 2->9; 8,4,2->10; 12,4,13->11; + qty | pn | pn | dt | qty | qty | to_char | cn | to_char | to_char | to_char | prc | vn +------+-----+-----+------------+------+------+-------------------+----+-------------------+-------------------+-------------------+------+---- + 1 | 100 | 100 | 1401-05-01 | 1 | 1 | .0000000 | 1 | 1.0000000 | 1.0000000 | .0000000 | 0 | 20 + 1100 | 100 | 100 | 1401-01-01 | 1100 | 1100 | .0000000 | 2 | 1.0000000 | 1.0000000 | .0000000 | 2400 | 40 + 1 | 200 | 200 | 1401-03-01 | 1 | 1 | .0000000 | 1 | 2.0000000 | 1.0000000 | .0000000 | 0 | 10 + 1 | 200 | 200 | 1401-04-01 | 1 | 1 | .0000000 | 3 | 2.0000000 | 1.0000000 | .0000000 | 0 | 40 + 1 | 300 | 300 | 1401-05-02 | 1 | 1 | .0000000 | 1 | 3.0000000 | 1.0000000 | .0000000 | 0 | 30 + 1 | 400 | 400 | 1401-06-01 | 1 | 1 | .0000000 | 1 | 4.0000000 | 1.0000000 | .0000000 | 0 | 50 + 1 | 400 | 400 | 1401-06-01 | 1 | 1 | .0000000 | 2 | 4.0000000 | 1.0000000 | .0000000 | 0 | 50 + 12 | 500 | 500 | 1401-06-01 | 12 | 12 | .0000000 | 1 | 5.0000000 | 1.0000000 | .0000000 | 5 | 30 + 12 | 500 | 500 | 1401-06-01 | 12 | 12 | .0000000 | 3 | 5.0000000 | 1.0000000 | .0000000 | 5 | 30 + 12 | 600 | 600 | 1401-06-01 | 12 | 12 | .0000000 | 3 | 6.0000000 | 1.0000000 | .0000000 | 5 | 30 + 1 | 700 | 700 | 1401-06-01 | 1 | 1 | .0000000 | 4 | 7.0000000 | 1.0000000 | .0000000 | 1 | 40 + 1 | 800 | 800 | 1401-06-01 | 1 | 1 | .0000000 | 4 | 8.0000000 | 1.0000000 | .0000000 | 1 | 40 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.qty order by ow_sale.pn asc range between floor(ow_sale.prc*ow_sale.cn) following and unbounded following ); -- mvd 3,4->2; + prc | to_char | qty | pn +------+-------------------+------+----- + 0 | 175.0000000 | 1 | 100 + 0 | 163.2653061 | 1 | 200 + 0 | 163.2653061 | 1 | 200 + 0 | 56.0000000 | 1 | 300 + 0 | 25.0000000 | 1 | 400 + 0 | 25.0000000 | 1 | 400 + 1 | .0000000 | 1 | 700 + 1 | .0000000 | 1 | 800 + 5 | .0000000 | 12 | 500 + 5 | .0000000 | 12 | 500 + 5 | .0000000 | 12 | 600 + 2400 | .0000000 | 1100 | 100 +(12 rows) + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.pn desc range between floor(ow_sale.vn) following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.pn desc range between floor(ow_sale.vn) following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.pn desc range between floor(ow_sale.vn) following and unbounded following ), +win2 as (order by ow_sale.pn asc); -- mvd 3,6,7->5; 7->8; 7->9; 3,6,7->10; 3,6,7->11; 7->12; + cn | cn | dt | cn | to_char | vn | pn | to_char | to_char | to_char | to_char | to_char +----+----+------------+----+-------------------+----+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 2 | 2 | 1401-01-01 | 2 | .0000000 | 40 | 100 | 1.0000000 | 1.0000000 | .0000000 | .0000000 | 1.0000000 + 1 | 1 | 1401-05-01 | 1 | .0000000 | 20 | 100 | 1.0000000 | 2.0000000 | .0000000 | .0000000 | 1.0000000 + 3 | 3 | 1401-04-01 | 3 | .0000000 | 40 | 200 | 2.0000000 | 3.0000000 | .0000000 | .0000000 | 2.0000000 + 1 | 1 | 1401-03-01 | 1 | .0000000 | 10 | 200 | 2.0000000 | 4.0000000 | .0000000 | .0000000 | 2.0000000 + 1 | 1 | 1401-05-02 | 1 | .0000000 | 30 | 300 | 3.0000000 | 5.0000000 | .0000000 | .0000000 | 3.0000000 + 2 | 2 | 1401-06-01 | 2 | .0000000 | 50 | 400 | 4.0000000 | 6.0000000 | .0000000 | .0000000 | 4.0000000 + 1 | 1 | 1401-06-01 | 1 | .0000000 | 50 | 400 | 4.0000000 | 7.0000000 | .0000000 | .0000000 | 4.0000000 + 1 | 1 | 1401-06-01 | 1 | .0000000 | 30 | 500 | 5.0000000 | 8.0000000 | .0000000 | .0000000 | 5.0000000 + 3 | 3 | 1401-06-01 | 3 | .0000000 | 30 | 500 | 5.0000000 | 9.0000000 | .0000000 | .0000000 | 5.0000000 + 3 | 3 | 1401-06-01 | 3 | .0000000 | 30 | 600 | 6.0000000 | 10.0000000 | .0000000 | .0000000 | 6.0000000 + 4 | 4 | 1401-06-01 | 4 | .0000000 | 40 | 700 | 7.0000000 | 11.0000000 | .0000000 | .0000000 | 7.0000000 + 4 | 4 | 1401-06-01 | 4 | .0000000 | 40 | 800 | 8.0000000 | 12.0000000 | .0000000 | .0000000 | 8.0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows unbounded preceding ); -- mvd 4,5,6->3; + cn | qty | to_char | dt | vn | pn +----+------+-------------------+------------+----+----- + 2 | 1100 | .0000000 | 1401-01-01 | 40 | 100 + 3 | 1 | .0000000 | 1401-04-01 | 40 | 200 + 1 | 1 | .0000000 | 1401-05-01 | 20 | 100 + 1 | 1 | .0000000 | 1401-03-01 | 10 | 200 + 1 | 1 | .0000000 | 1401-05-02 | 30 | 300 + 1 | 12 | .0000000 | 1401-06-01 | 30 | 500 + 3 | 12 | .0000000 | 1401-06-01 | 30 | 500 + 3 | 12 | .0000000 | 1401-06-01 | 30 | 600 + 4 | 1 | .0000000 | 1401-06-01 | 40 | 700 + 4 | 1 | .0000000 | 1401-06-01 | 40 | 800 + 1 | 1 | .0000000 | 1401-06-01 | 50 | 400 + 2 | 1 | .0000000 | 1401-06-01 | 50 | 400 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc rows unbounded preceding ); -- mvd 4,5,6->3; 4,5,6->7; + vn | prc | to_char | dt | cn | pn | to_char +----+------+-------------------+------------+----+-----+------------------- + 20 | 0 | .0000000 | 1401-05-01 | 1 | 100 | 1.0000000 + 30 | 0 | .0000000 | 1401-05-02 | 1 | 300 | 1.0000000 + 50 | 0 | .0000000 | 1401-06-01 | 1 | 400 | 1.0000000 + 30 | 5 | .0000000 | 1401-06-01 | 1 | 500 | 12.0000000 + 40 | 0 | .0000000 | 1401-04-01 | 3 | 200 | 3.0000000 + 30 | 5 | .0000000 | 1401-06-01 | 3 | 500 | 36.0000000 + 40 | 1 | .0000000 | 1401-06-01 | 4 | 700 | 4.0000000 + 10 | 0 | .0000000 | 1401-03-01 | 1 | 200 | 1.0000000 + 40 | 2400 | .0000000 | 1401-01-01 | 2 | 100 | 2200.0000000 + 50 | 0 | .0000000 | 1401-06-01 | 2 | 400 | 2.0000000 + 30 | 5 | .0000000 | 1401-06-01 | 3 | 600 | 36.0000000 + 40 | 1 | .0000000 | 1401-06-01 | 4 | 800 | 4.0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc rows floor(ow_sale.vn) preceding ); -- mvd 3,4->2; + cn | to_char | vn | pn +----+-------------------+----+----- + 1 | .0000000 | 10 | 200 + 1 | .0000000 | 20 | 100 + 1 | .0000000 | 30 | 300 + 1 | .0000000 | 30 | 500 + 3 | .0000000 | 30 | 500 + 3 | .0000000 | 30 | 600 + 2 | .0000000 | 40 | 100 + 3 | 30.2500000 | 40 | 200 + 4 | 26.8888889 | 40 | 700 + 4 | 22.6875000 | 40 | 800 + 1 | .0000000 | 50 | 400 + 2 | .0000000 | 50 | 400 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc rows floor(ow_sale.qty) preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.pn desc), +win4 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,3,6,1->5; 1->7; 1->8; 1->9; 4,1->10; 1->11; + pn | dt | qty | cn | to_char | vn | to_char | to_char | to_char | to_char | to_char +-----+------------+------+----+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 800 | 1401-06-01 | 1 | 4 | .0000000 | 40 | .0000000 | 1.0000000 | 1.0000000 | .0000000 | 800.0000000 + 700 | 1401-06-01 | 1 | 4 | .0000000 | 40 | .0909091 | 2.0000000 | 2.0000000 | .0000000 | 800.0000000 + 600 | 1401-06-01 | 12 | 3 | .0000000 | 30 | .1818182 | 3.0000000 | 3.0000000 | .0000000 | 800.0000000 + 500 | 1401-06-01 | 12 | 1 | .0000000 | 30 | .2727273 | 4.0000000 | 4.0000000 | .0000000 | 800.0000000 + 500 | 1401-06-01 | 12 | 3 | .0000000 | 30 | .2727273 | 5.0000000 | 4.0000000 | .0000000 | 800.0000000 + 400 | 1401-06-01 | 1 | 1 | .0000000 | 50 | .4545455 | 6.0000000 | 6.0000000 | .0000000 | 800.0000000 + 400 | 1401-06-01 | 1 | 2 | .0000000 | 50 | .4545455 | 7.0000000 | 6.0000000 | .0000000 | 800.0000000 + 300 | 1401-05-02 | 1 | 1 | .0000000 | 30 | .6363636 | 8.0000000 | 8.0000000 | .0000000 | 800.0000000 + 200 | 1401-03-01 | 1 | 1 | .0000000 | 10 | .7272727 | 9.0000000 | 9.0000000 | .0000000 | 800.0000000 + 200 | 1401-04-01 | 1 | 3 | .0000000 | 40 | .7272727 | 10.0000000 | 9.0000000 | .0000000 | 800.0000000 + 100 | 1401-01-01 | 1100 | 2 | .0000000 | 40 | .9090909 | 11.0000000 | 11.0000000 | .0000000 | 800.0000000 + 100 | 1401-05-01 | 1 | 1 | .0000000 | 20 | .9090909 | 12.0000000 | 11.0000000 | .0000000 | 800.0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows current row ); -- mvd 6,7,2->5; + pn | vn | cn | prc | to_char | dt | qty +-----+----+----+------+-------------------+------------+------ + 100 | 20 | 1 | 0 | .0000000 | 1401-05-01 | 1 + 500 | 30 | 1 | 5 | .0000000 | 1401-06-01 | 12 + 500 | 30 | 3 | 5 | .0000000 | 1401-06-01 | 12 + 600 | 30 | 3 | 5 | .0000000 | 1401-06-01 | 12 + 200 | 40 | 3 | 0 | .0000000 | 1401-04-01 | 1 + 200 | 10 | 1 | 0 | .0000000 | 1401-03-01 | 1 + 300 | 30 | 1 | 0 | .0000000 | 1401-05-02 | 1 + 700 | 40 | 4 | 1 | .0000000 | 1401-06-01 | 1 + 800 | 40 | 4 | 1 | .0000000 | 1401-06-01 | 1 + 100 | 40 | 2 | 2400 | .0000000 | 1401-01-01 | 1100 + 400 | 50 | 1 | 0 | .0000000 | 1401-06-01 | 1 + 400 | 50 | 2 | 0 | .0000000 | 1401-06-01 | 1 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn/ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.prc)) OVER(partition by ow_sale.prc,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows current row ), +win2 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,4,5,6->2; 3,8,4,5,6,1->7; 3,8,4,5,6,1->9; 3,4,5,6->10; 3,8,4,5,6,1->11; + pn | to_char | prc | dt | vn | qty | to_char | cn | to_char | to_char | to_char +-----+-------------------+------+------------+----+------+-------------------+----+-------------------+-------------------+------------------- + 200 | .0000000 | 0 | 1401-04-01 | 40 | 1 | .0000000 | 3 | 1.0000000 | 1.0000000 | .0000000 + 100 | .0000000 | 0 | 1401-05-01 | 20 | 1 | .0000000 | 1 | 1.0000000 | 1.0000000 | .0000000 + 700 | .0000000 | 1 | 1401-06-01 | 40 | 1 | .0000000 | 4 | 1.0000000 | 1.0000000 | .0000000 + 800 | .0000000 | 1 | 1401-06-01 | 40 | 1 | .0000000 | 4 | 1.0000000 | 1.0000000 | .0000000 + 500 | .0000000 | 5 | 1401-06-01 | 30 | 12 | .0000000 | 1 | 1.0000000 | 1.0000000 | .0000000 + 500 | .0000000 | 5 | 1401-06-01 | 30 | 12 | .0000000 | 3 | 2.0000000 | 1.0000000 | 1.0000000 + 600 | .0000000 | 5 | 1401-06-01 | 30 | 12 | .0000000 | 3 | 1.0000000 | 1.0000000 | .0000000 + 200 | .0000000 | 0 | 1401-03-01 | 10 | 1 | .0000000 | 1 | 1.0000000 | 1.0000000 | .0000000 + 300 | .0000000 | 0 | 1401-05-02 | 30 | 1 | .0000000 | 1 | 1.0000000 | 1.0000000 | .0000000 + 400 | .0000000 | 0 | 1401-06-01 | 50 | 1 | .0000000 | 1 | 1.0000000 | 1.0000000 | .0000000 + 400 | .0000000 | 0 | 1401-06-01 | 50 | 1 | .0000000 | 2 | 2.0000000 | 1.0000000 | 1.0000000 + 100 | .0000000 | 2400 | 1401-01-01 | 40 | 1100 | .0000000 | 2 | 1.0000000 | 1.0000000 | .0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn asc,ow_sale.cn asc rows between unbounded preceding and 6 preceding ); -- mvd 3,1,4->2; + vn | to_char | cn | pn +----+-------------------+----+----- + 10 | .0000000 | 1 | 200 + 20 | .0000000 | 1 | 100 + 30 | .0000000 | 1 | 300 + 30 | .0000000 | 1 | 500 + 30 | .0000000 | 3 | 500 + 30 | .0000000 | 3 | 600 + 40 | .0000000 | 2 | 100 + 40 | .0000000 | 3 | 200 + 40 | .0000000 | 4 | 700 + 40 | .0000000 | 4 | 800 + 50 | .0000000 | 1 | 400 + 50 | .0000000 | 2 | 400 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.cn order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between unbounded preceding and 2 preceding ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.cn order by ow_sale.pn desc), +win3 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.pn asc); -- mvd 5,6,3->4; 6,8,1,2->7; 6,8,3,2->9; 6,8,1,2->10; + qty | pn | vn | to_char | prc | cn | to_char | dt | to_char | to_char +------+-----+----+-------------------+------+----+-------------------+------------+-------------------+------------------- + 1 | 200 | 10 | .0000000 | 0 | 1 | .0000000 | 1401-03-01 | 1.0000000 | 1.0000000 + 1 | 100 | 20 | .0000000 | 0 | 1 | .0000000 | 1401-05-01 | 1.0000000 | 1.0000000 + 1 | 300 | 30 | .0000000 | 0 | 1 | .0000000 | 1401-05-02 | 1.0000000 | 1.0000000 + 1 | 200 | 40 | .0000000 | 0 | 3 | .0000000 | 1401-04-01 | 1.0000000 | 1.0000000 + 1 | 400 | 50 | .0000000 | 0 | 1 | .0000000 | 1401-06-01 | 1.0000000 | 1.0000000 + 1 | 700 | 40 | .0000000 | 1 | 4 | 1.0000000 | 1401-06-01 | 1.0000000 | 2.0000000 + 1 | 800 | 40 | .0000000 | 1 | 4 | .0000000 | 1401-06-01 | 1.0000000 | 1.0000000 + 12 | 500 | 30 | .0000000 | 5 | 1 | .0000000 | 1401-06-01 | 1.0000000 | 1.0000000 + 12 | 500 | 30 | .0000000 | 5 | 3 | 1.0000000 | 1401-06-01 | 1.0000000 | 2.0000000 + 12 | 600 | 30 | .0000000 | 5 | 3 | .0000000 | 1401-06-01 | 1.0000000 | 1.0000000 + 1 | 400 | 50 | .0000000 | 0 | 2 | .0000000 | 1401-06-01 | 1.0000000 | 1.0000000 + 1100 | 100 | 40 | .0000000 | 2400 | 2 | .0000000 | 1401-01-01 | 1.0000000 | 1.0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc rows between unbounded preceding and current row ); -- mvd 4,2,5->3; + qty | dt | to_char | cn | pn +------+------------+-------------------+----+----- + 1 | 1401-04-01 | .0000000 | 3 | 200 + 1 | 1401-05-01 | .0000000 | 1 | 100 + 1 | 1401-06-01 | .0000000 | 2 | 400 + 1 | 1401-06-01 | .0000000 | 4 | 700 + 1 | 1401-06-01 | .0000000 | 4 | 800 + 1100 | 1401-01-01 | .0000000 | 2 | 100 + 1 | 1401-03-01 | .0000000 | 1 | 200 + 1 | 1401-05-02 | .0000000 | 1 | 300 + 1 | 1401-06-01 | .0000000 | 1 | 400 + 12 | 1401-06-01 | 900.0000000 | 1 | 500 + 12 | 1401-06-01 | .0000000 | 3 | 500 + 12 | 1401-06-01 | .0000000 | 3 | 600 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.vn desc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.cn order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.vn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.cn order by ow_sale.vn asc); -- mvd 2,3,8->7; 2,3,8->9; 2,1,3,4->10; 2,1,3,4->11; + dt | cn | vn | qty | qty | qty | to_char | pn | to_char | to_char | to_char +------------+----+----+------+------+------+-------------------+-----+-------------------+-------------------+------------------- + 1401-03-01 | 1 | 10 | 1 | 1 | 1 | .0000000 | 200 | 10.0000000 | 1.0000000 | 1.0000000 + 1401-05-01 | 1 | 20 | 1 | 1 | 1 | .0000000 | 100 | 20.0000000 | 1.0000000 | 1.0000000 + 1401-05-02 | 1 | 30 | 1 | 1 | 1 | .0000000 | 300 | 30.0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 1 | 30 | 12 | 12 | 12 | .0000000 | 500 | 30.0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 1 | 50 | 1 | 1 | 1 | .0000000 | 400 | 50.0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 3 | 30 | 12 | 12 | 12 | .0000000 | 500 | 30.0000000 | 2.0000000 | 1.0000000 + 1401-06-01 | 3 | 30 | 12 | 12 | 12 | .0000000 | 600 | 30.0000000 | 1.0000000 | 1.0000000 + 1401-04-01 | 3 | 40 | 1 | 1 | 1 | .0000000 | 200 | 40.0000000 | 1.0000000 | 1.0000000 + 1401-01-01 | 2 | 40 | 1100 | 1100 | 1100 | .0000000 | 100 | 40.0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 2 | 50 | 1 | 1 | 1 | .0000000 | 400 | 50.0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 4 | 40 | 1 | 1 | 1 | .0000000 | 700 | 40.0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 4 | 40 | 1 | 1 | 1 | .0000000 | 800 | 40.0000000 | 2.0000000 | 1.0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty+ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn*ow_sale.qty) as int),NULL) OVER(win5),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win6),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and floor(ow_sale.pn+ow_sale.vn) following ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.cn desc), +win3 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.vn asc), +win5 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc), +win6 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 3,1->2; 5,3,1->4; 3,5,7->6; 7->8; 3,5,10,1->9; 7->11; + pn | to_char | cn | to_char | dt | to_char | vn | to_char | to_char | qty | to_char +-----+-------------------+----+-------------------+------------+-------------------+----+-------------------+-------------------+------+------------------- + 100 | 301950.2500000 | 2 | 1.0000000 | 1401-01-01 | .0000000 | 40 | .0000000 | .0000000 | 1100 | .0000000 + 200 | 19.3600000 | 1 | 1.0000000 | 1401-03-01 | .0000000 | 10 | 2.0000000 | .0000000 | 1 | .0000000 + 200 | 26.8888889 | 3 | 1.0000000 | 1401-04-01 | .0000000 | 40 | .0000000 | .0000000 | 1 | .0000000 + 100 | 19.3600000 | 1 | 1.0000000 | 1401-05-01 | .0000000 | 20 | 3.0000000 | .0000000 | 1 | .0000000 + 300 | 19.3600000 | 1 | 1.0000000 | 1401-05-02 | .0000000 | 30 | 1.0000000 | .0000000 | 1 | .0000000 + 400 | 19.3600000 | 1 | 1.0000000 | 1401-06-01 | .0000000 | 50 | 1.0000000 | .0000000 | 1 | .0000000 + 400 | 301950.2500000 | 2 | 1.0000000 | 1401-06-01 | .0000000 | 50 | 1.0000000 | .0000000 | 1 | .0000000 + 500 | 19.3600000 | 1 | 1.0000000 | 1401-06-01 | .0000000 | 30 | 2.0000000 | .0000000 | 12 | .0000000 + 500 | 26.8888889 | 3 | 1.0000000 | 1401-06-01 | .0000000 | 30 | 1.0000000 | .0000000 | 12 | .0000000 + 600 | 26.8888889 | 3 | 1.0000000 | 1401-06-01 | .0000000 | 30 | 2.0000000 | .0000000 | 12 | .0000000 + 700 | .0000000 | 4 | 1.0000000 | 1401-06-01 | .0000000 | 40 | 2.0000000 | .0000000 | 1 | .0000000 + 800 | .0000000 | 4 | 1.0000000 | 1401-06-01 | .0000000 | 40 | 1.0000000 | .0000000 | 1 | .0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.cn desc rows between unbounded preceding and unbounded following ); -- mvd 5,6,7,1->4; + pn | pn | qty | to_char | prc | cn | vn +-----+-----+------+-------------------+------+----+---- + 700 | 700 | 1 | 2500.0000000 | 1 | 4 | 40 + 800 | 800 | 1 | 2500.0000000 | 1 | 4 | 40 + 200 | 200 | 1 | .0000000 | 0 | 1 | 10 + 100 | 100 | 1 | .0000000 | 0 | 1 | 20 + 300 | 300 | 1 | .0000000 | 0 | 1 | 30 + 500 | 500 | 12 | 2222.2222222 | 5 | 1 | 30 + 500 | 500 | 12 | 2222.2222222 | 5 | 3 | 30 + 600 | 600 | 12 | 2222.2222222 | 5 | 3 | 30 + 200 | 200 | 1 | .0000000 | 0 | 3 | 40 + 100 | 100 | 1100 | .0000000 | 2400 | 2 | 40 + 400 | 400 | 1 | .0000000 | 0 | 1 | 50 + 400 | 400 | 1 | .0000000 | 0 | 2 | 50 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.pn asc); -- mvd 5,6->4; 6->7; 6->8; + qty | prc | qty | to_char | cn | pn | to_char | to_char +------+------+------+-------------------+----+-----+-------------------+------------------- + 1 | 1 | 1 | .0000000 | 4 | 800 | .0833333 | 8.0000000 + 1 | 1 | 1 | .0000000 | 4 | 700 | .1666667 | 7.0000000 + 12 | 5 | 12 | 5.5555556 | 3 | 600 | .2500000 | 6.0000000 + 12 | 5 | 12 | 4.0000000 | 1 | 500 | .4166667 | 5.0000000 + 12 | 5 | 12 | 5.5555556 | 3 | 500 | .4166667 | 5.0000000 + 1 | 0 | 1 | 1440000.0000000 | 2 | 400 | .5833333 | 4.0000000 + 1 | 0 | 1 | 4.0000000 | 1 | 400 | .5833333 | 4.0000000 + 1 | 0 | 1 | 4.0000000 | 1 | 300 | .6666667 | 3.0000000 + 1 | 0 | 1 | 4.0000000 | 1 | 200 | .8333333 | 2.0000000 + 1 | 0 | 1 | 5.5555556 | 3 | 200 | .8333333 | 2.0000000 + 1 | 0 | 1 | 4.0000000 | 1 | 100 | 1.0000000 | 1.0000000 + 1100 | 2400 | 1100 | 1440000.0000000 | 2 | 100 | 1.0000000 | 1.0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc,ow_sale.cn asc rows between floor(ow_sale.prc*ow_sale.prc) preceding and floor(ow_sale.cn*ow_sale.qty) preceding ); -- mvd 4,5->3; + qty | vn | to_char | cn | pn +------+----+-------------------+----+----- + 1 | 20 | .0000000 | 1 | 100 + 1 | 10 | .0000000 | 1 | 200 + 1 | 40 | .0000000 | 3 | 200 + 1 | 50 | .0000000 | 2 | 400 + 12 | 30 | .0000000 | 3 | 600 + 1 | 40 | .0000000 | 4 | 800 + 1100 | 40 | .0000000 | 2 | 100 + 1 | 30 | .0000000 | 1 | 300 + 1 | 50 | .0000000 | 1 | 400 + 12 | 30 | .0000000 | 1 | 500 + 12 | 30 | .0000000 | 3 | 500 + 1 | 40 | .0000000 | 4 | 700 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.cn asc rows between floor(ow_sale.vn) preceding and 3 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.cn asc rows between floor(ow_sale.vn) preceding and 3 preceding ); -- mvd 7,5,8,2,9->6; 7,5,8,2,9->10; + qty | vn | qty | qty | dt | to_char | prc | cn | pn | to_char +------+----+------+------+------------+-------------------+------+----+-----+------------------- + 1 | 20 | 1 | 1 | 1401-05-01 | .0000000 | 0 | 1 | 100 | .0000000 + 1 | 40 | 1 | 1 | 1401-04-01 | .0000000 | 0 | 3 | 200 | .0000000 + 1 | 50 | 1 | 1 | 1401-06-01 | .0000000 | 0 | 2 | 400 | .0000000 + 1 | 10 | 1 | 1 | 1401-03-01 | .0000000 | 0 | 1 | 200 | .0000000 + 1 | 30 | 1 | 1 | 1401-05-02 | .0000000 | 0 | 1 | 300 | .0000000 + 12 | 30 | 12 | 12 | 1401-06-01 | .0000000 | 5 | 1 | 500 | .0000000 + 12 | 30 | 12 | 12 | 1401-06-01 | .0000000 | 5 | 3 | 500 | .0000000 + 12 | 30 | 12 | 12 | 1401-06-01 | .0000000 | 5 | 3 | 600 | .0000000 + 1100 | 40 | 1100 | 1100 | 1401-01-01 | .0000000 | 2400 | 2 | 100 | .0000000 + 1 | 40 | 1 | 1 | 1401-06-01 | .0000000 | 1 | 4 | 700 | .0000000 + 1 | 40 | 1 | 1 | 1401-06-01 | .0000000 | 1 | 4 | 800 | .0000000 + 1 | 50 | 1 | 1 | 1401-06-01 | .0000000 | 0 | 1 | 400 | .0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc,ow_sale.cn desc rows between 4 preceding and current row ); -- mvd 3,6->5; + vn | vn | cn | dt | to_char | pn +----+----+----+------------+-------------------+----- + 30 | 30 | 1 | 1401-05-02 | .0000000 | 300 + 50 | 50 | 1 | 1401-06-01 | .0000000 | 400 + 50 | 50 | 2 | 1401-06-01 | .0000000 | 400 + 30 | 30 | 1 | 1401-06-01 | .0000000 | 500 + 30 | 30 | 3 | 1401-06-01 | .0000000 | 500 + 40 | 40 | 4 | 1401-06-01 | .0000000 | 800 + 40 | 40 | 2 | 1401-01-01 | .0000000 | 100 + 20 | 20 | 1 | 1401-05-01 | 301950.2500000 | 100 + 10 | 10 | 1 | 1401-03-01 | .0000000 | 200 + 40 | 40 | 3 | 1401-04-01 | .0000000 | 200 + 30 | 30 | 3 | 1401-06-01 | .0000000 | 600 + 40 | 40 | 4 | 1401-06-01 | .0000000 | 700 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.vn/ow_sale.cn) preceding and floor(ow_sale.vn-ow_sale.cn) following ); -- mvd 3,1,4->2; + vn | to_char | cn | pn +----+-------------------+----+----- + 10 | .0000000 | 1 | 200 + 20 | .0000000 | 1 | 100 + 30 | .0000000 | 3 | 600 + 40 | .0000000 | 3 | 200 + 40 | .0000000 | 4 | 800 + 50 | .0000000 | 2 | 400 + 30 | .0000000 | 1 | 300 + 30 | .0000000 | 1 | 500 + 30 | .0000000 | 3 | 500 + 40 | .0000000 | 2 | 100 + 40 | .0000000 | 4 | 700 + 50 | .0000000 | 1 | 400 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between 5 preceding and unbounded following ); -- mvd 4,6,7,1,8->5; + vn | vn | vn | cn | to_char | dt | qty | pn +----+----+----+----+-------------------+------------+------+----- + 40 | 40 | 40 | 2 | .0000000 | 1401-01-01 | 1100 | 100 + 10 | 10 | 10 | 1 | .0000000 | 1401-03-01 | 1 | 200 + 30 | 30 | 30 | 1 | .0000000 | 1401-06-01 | 12 | 500 + 30 | 30 | 30 | 3 | .0000000 | 1401-06-01 | 12 | 500 + 40 | 40 | 40 | 4 | .0000000 | 1401-06-01 | 1 | 700 + 40 | 40 | 40 | 3 | .0000000 | 1401-04-01 | 1 | 200 + 20 | 20 | 20 | 1 | .0000000 | 1401-05-01 | 1 | 100 + 30 | 30 | 30 | 1 | .0000000 | 1401-05-02 | 1 | 300 + 30 | 30 | 30 | 3 | .0000000 | 1401-06-01 | 12 | 600 + 40 | 40 | 40 | 4 | .0000000 | 1401-06-01 | 1 | 800 + 50 | 50 | 50 | 1 | .0000000 | 1401-06-01 | 1 | 400 + 50 | 50 | 50 | 2 | .0000000 | 1401-06-01 | 1 | 400 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.qty*ow_sale.qty) preceding and unbounded following ), +win2 as (order by ow_sale.pn desc); -- mvd 4,2,1,7->6; 7->8; 7->9; 7->10; + vn | cn | vn | dt | cn | to_char | pn | to_char | to_char | to_char +----+----+----+------------+----+-------------------+-----+-------------------+-------------------+------------------- + 40 | 4 | 40 | 1401-06-01 | 4 | .0000000 | 800 | 1.0000000 | 1.0000000 | 40.0000000 + 40 | 4 | 40 | 1401-06-01 | 4 | .0000000 | 700 | 2.0000000 | 2.0000000 | 40.0000000 + 30 | 3 | 30 | 1401-06-01 | 3 | .0000000 | 600 | 3.0000000 | 3.0000000 | 30.0000000 + 30 | 1 | 30 | 1401-06-01 | 1 | .0000000 | 500 | 4.0000000 | 4.0000000 | 30.0000000 + 30 | 3 | 30 | 1401-06-01 | 3 | .0000000 | 500 | 4.0000000 | 4.0000000 | 30.0000000 + 50 | 1 | 50 | 1401-06-01 | 1 | .0000000 | 400 | 6.0000000 | 5.0000000 | 30.0000000 + 50 | 2 | 50 | 1401-06-01 | 2 | .0000000 | 400 | 6.0000000 | 5.0000000 | 30.0000000 + 30 | 1 | 30 | 1401-05-02 | 1 | .0000000 | 300 | 8.0000000 | 6.0000000 | 30.0000000 + 40 | 3 | 40 | 1401-04-01 | 3 | .0000000 | 200 | 9.0000000 | 7.0000000 | 10.0000000 + 10 | 1 | 10 | 1401-03-01 | 1 | .0000000 | 200 | 9.0000000 | 7.0000000 | 10.0000000 + 40 | 2 | 40 | 1401-01-01 | 2 | .0000000 | 100 | 11.0000000 | 8.0000000 | 10.0000000 + 20 | 1 | 20 | 1401-05-01 | 1 | .0000000 | 100 | 11.0000000 | 8.0000000 | 10.0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between current row and current row ); -- mvd 3,4,5->2; + prc | to_char | cn | dt | vn +------+-------------------+----+------------+---- + 0 | .0000000 | 1 | 1401-03-01 | 10 + 0 | .0000000 | 1 | 1401-05-02 | 30 + 0 | .0000000 | 1 | 1401-06-01 | 50 + 0 | .0000000 | 2 | 1401-06-01 | 50 + 5 | .0000000 | 1 | 1401-06-01 | 30 + 5 | .0000000 | 3 | 1401-06-01 | 30 + 5 | .0000000 | 3 | 1401-06-01 | 30 + 1 | .0000000 | 4 | 1401-06-01 | 40 + 1 | .0000000 | 4 | 1401-06-01 | 40 + 2400 | .0000000 | 2 | 1401-01-01 | 40 + 0 | .0000000 | 3 | 1401-04-01 | 40 + 0 | .0000000 | 1 | 1401-05-01 | 20 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn/ow_sale.cn) as int),cast (floor(ow_sale.pn+ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc rows between current row and current row ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.pn desc), +win4 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,4->2; 1->5; 1->6; 3,4->7; 1->8; 10->9; + pn | to_char | cn | dt | to_char | to_char | to_char | to_char | to_char | vn +-----+-------------------+----+------------+-------------------+-------------------+-------------------+-------------------+-------------------+---- + 100 | .0000000 | 2 | 1401-01-01 | 1.0000000 | 2.0000000 | 2.0000000 | .0000000 | .0000000 | 40 + 100 | .0000000 | 1 | 1401-05-01 | 2.0000000 | 2.0000000 | 5.0000000 | .0000000 | .0000000 | 20 + 200 | .0000000 | 1 | 1401-03-01 | 3.0000000 | 4.0000000 | 20.0000000 | .0000000 | .0000000 | 10 + 200 | .0000000 | 3 | 1401-04-01 | 4.0000000 | 4.0000000 | 5.0000000 | .0000000 | .0000000 | 40 + 300 | .0000000 | 1 | 1401-05-02 | 5.0000000 | 5.0000000 | 10.0000000 | .0000000 | .0000000 | 30 + 400 | .0000000 | 2 | 1401-06-01 | 6.0000000 | 7.0000000 | 8.0000000 | .0000000 | .0000000 | 50 + 400 | .0000000 | 1 | 1401-06-01 | 7.0000000 | 7.0000000 | 8.0000000 | .0000000 | .0000000 | 50 + 500 | .0000000 | 1 | 1401-06-01 | 8.0000000 | 9.0000000 | 16.0000000 | .0000000 | .0000000 | 30 + 500 | .0000000 | 3 | 1401-06-01 | 9.0000000 | 9.0000000 | 16.0000000 | .0000000 | .0000000 | 30 + 600 | .0000000 | 3 | 1401-06-01 | 10.0000000 | 10.0000000 | 20.0000000 | .0000000 | .0000000 | 30 + 700 | .0000000 | 4 | 1401-06-01 | 11.0000000 | 11.0000000 | 17.0000000 | .0000000 | .0000000 | 40 + 800 | .0000000 | 4 | 1401-06-01 | 12.0000000 | 12.0000000 | 20.0000000 | .0000000 | .0000000 | 40 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc rows between current row and floor(ow_sale.qty) following ); -- mvd 6,1,7,4,8->5; + cn | cn | cn | vn | to_char | prc | dt | pn +----+----+----+----+-------------------+------+------------+----- + 1 | 1 | 1 | 10 | .0000000 | 0 | 1401-03-01 | 200 + 1 | 1 | 1 | 30 | .0000000 | 0 | 1401-05-02 | 300 + 1 | 1 | 1 | 30 | 320000.0000000 | 5 | 1401-06-01 | 500 + 3 | 3 | 3 | 30 | 360000.0000000 | 5 | 1401-06-01 | 500 + 3 | 3 | 3 | 30 | .0000000 | 5 | 1401-06-01 | 600 + 1 | 1 | 1 | 50 | .0000000 | 0 | 1401-06-01 | 400 + 2 | 2 | 2 | 50 | .0000000 | 0 | 1401-06-01 | 400 + 1 | 1 | 1 | 20 | .0000000 | 0 | 1401-05-01 | 100 + 2 | 2 | 2 | 40 | .0000000 | 2400 | 1401-01-01 | 100 + 3 | 3 | 3 | 40 | .0000000 | 0 | 1401-04-01 | 200 + 4 | 4 | 4 | 40 | 2500.0000000 | 1 | 1401-06-01 | 700 + 4 | 4 | 4 | 40 | .0000000 | 1 | 1401-06-01 | 800 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc rows between current row and floor(ow_sale.cn) following ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.cn desc); -- mvd 4,1,5->3; 2,1,5,7->6; + cn | dt | to_char | prc | vn | to_char | pn +----+------------+-------------------+------+----+-------------------+----- + 1 | 1401-03-01 | .0000000 | 0 | 10 | 1.0000000 | 200 + 1 | 1401-05-01 | .0000000 | 0 | 20 | 1.0000000 | 100 + 1 | 1401-05-02 | .0000000 | 0 | 30 | 1.0000000 | 300 + 1 | 1401-06-01 | .0000000 | 5 | 30 | 1.0000000 | 500 + 3 | 1401-06-01 | .0000000 | 5 | 30 | 1.0000000 | 500 + 3 | 1401-06-01 | .0000000 | 5 | 30 | 1.0000000 | 600 + 3 | 1401-04-01 | .0000000 | 0 | 40 | 1.0000000 | 200 + 4 | 1401-06-01 | .0000000 | 1 | 40 | 1.0000000 | 700 + 4 | 1401-06-01 | .0000000 | 1 | 40 | 1.0000000 | 800 + 1 | 1401-06-01 | .0000000 | 0 | 50 | 1.0000000 | 400 + 2 | 1401-01-01 | .0000000 | 2400 | 40 | 1.0000000 | 100 + 2 | 1401-06-01 | .0000000 | 0 | 50 | 1.0000000 | 400 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn asc rows between current row and unbounded following ); -- mvd 1,3,4,5->2; + prc | to_char | cn | vn | pn +------+-------------------+----+----+----- + 0 | .0000000 | 1 | 30 | 300 + 0 | .0000000 | 1 | 50 | 400 + 0 | .0000000 | 2 | 50 | 400 + 1 | .0000000 | 4 | 40 | 700 + 5 | .0000000 | 1 | 30 | 500 + 5 | .0000000 | 3 | 30 | 500 + 0 | .0000000 | 1 | 20 | 100 + 0 | .0000000 | 1 | 10 | 200 + 0 | .0000000 | 3 | 40 | 200 + 1 | .0000000 | 4 | 40 | 800 + 5 | .0000000 | 3 | 30 | 600 + 2400 | .0000000 | 2 | 40 | 100 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc,ow_sale.cn asc rows between 2 following and 6 following ); -- mvd 5,6,2,1->4; + pn | vn | pn | to_char | prc | cn +-----+----+-----+-------------------+------+---- + 200 | 10 | 200 | .0000000 | 0 | 1 + 100 | 20 | 100 | .0000000 | 0 | 1 + 300 | 30 | 300 | .0000000 | 0 | 1 + 500 | 30 | 500 | .0000000 | 5 | 1 + 400 | 50 | 400 | .0000000 | 0 | 1 + 500 | 30 | 500 | .0000000 | 5 | 3 + 600 | 30 | 600 | .0000000 | 5 | 3 + 200 | 40 | 200 | .0000000 | 0 | 3 + 700 | 40 | 700 | .0000000 | 1 | 4 + 800 | 40 | 800 | .0000000 | 1 | 4 + 100 | 40 | 100 | .0000000 | 2400 | 2 + 400 | 50 | 400 | .0000000 | 0 | 2 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn/ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows between 1 following and floor(ow_sale.vn) following ), +win2 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.pn asc), +win3 as (order by ow_sale.vn asc); -- mvd 8,6->7; 1->9; 6->10; 1->11; + pn | qty | cn | qty | dt | vn | to_char | prc | to_char | to_char | to_char +-----+------+----+------+------------+----+-------------------+------+-------------------+-------------------+------------------- + 200 | 1 | 1 | 1 | 1401-03-01 | 10 | .0000000 | 0 | .0000000 | 1.0000000 | 200.0000000 + 100 | 1 | 1 | 1 | 1401-05-01 | 20 | .0000000 | 0 | 1.0000000 | 2.0000000 | 100.0000000 + 500 | 12 | 1 | 12 | 1401-06-01 | 30 | .0000000 | 5 | .0000000 | 3.0000000 | 500.0000000 + 500 | 12 | 3 | 12 | 1401-06-01 | 30 | .0000000 | 5 | .0000000 | 4.0000000 | 500.0000000 + 300 | 1 | 1 | 1 | 1401-05-02 | 30 | .0000000 | 0 | .0000000 | 5.0000000 | 300.0000000 + 600 | 12 | 3 | 12 | 1401-06-01 | 30 | .0000000 | 5 | .0000000 | 6.0000000 | 600.0000000 + 100 | 1100 | 2 | 1100 | 1401-01-01 | 40 | .0000000 | 2400 | .0000000 | 7.0000000 | 100.0000000 + 200 | 1 | 3 | 1 | 1401-04-01 | 40 | .0000000 | 0 | .0000000 | 8.0000000 | 200.0000000 + 700 | 1 | 4 | 1 | 1401-06-01 | 40 | .0000000 | 1 | .0000000 | 9.0000000 | 700.0000000 + 800 | 1 | 4 | 1 | 1401-06-01 | 40 | .0000000 | 1 | .0000000 | 10.0000000 | 800.0000000 + 400 | 1 | 2 | 1 | 1401-06-01 | 50 | .0000000 | 0 | .0000000 | 11.0000000 | 400.0000000 + 400 | 1 | 1 | 1 | 1401-06-01 | 50 | .0000000 | 0 | .0000000 | 12.0000000 | 400.0000000 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.qty) following and unbounded following ); -- mvd 3,1,4->2; + vn | to_char | cn | pn +----+-------------------+----+----- + 10 | .0000000 | 1 | 200 + 20 | .0000000 | 1 | 100 + 30 | .0000000 | 3 | 600 + 40 | .0000000 | 3 | 200 + 40 | .0000000 | 4 | 800 + 50 | .0000000 | 2 | 400 + 30 | .0000000 | 1 | 300 + 30 | .0000000 | 1 | 500 + 30 | .0000000 | 3 | 500 + 40 | .0000000 | 2 | 100 + 40 | .0000000 | 4 | 700 + 50 | .0000000 | 1 | 400 +(12 rows) + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(partition by ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between 2 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.vn)) OVER(partition by ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between 2 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between 2 following and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.cn desc), +win3 as (order by ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 3,4,1->2; 4,6->5; 3,4,1->7; 4->8; 3,4,1->9; 1->10; + pn | to_char | prc | cn | to_char | dt | to_char | to_char | to_char | to_char +-----+-------------------+------+----+-------------------+------------+-------------------+-------------------+-------------------+------------------- + 400 | .0000000 | 0 | 1 | 1.0000000 | 1401-06-01 | .0000000 | .0000000 | .0000000 | 2.0000000 + 200 | .0000000 | 0 | 1 | 1.0000000 | 1401-03-01 | .0000000 | .0000000 | .0000000 | 3.0000000 + 500 | .0000000 | 5 | 1 | 1.0000000 | 1401-06-01 | .0000000 | .0000000 | .0000000 | 8.0000000 + 100 | .0000000 | 0 | 1 | 1.0000000 | 1401-05-01 | .0000000 | .0000000 | .0000000 | 1.0000000 + 300 | .0000000 | 0 | 1 | 1.0000000 | 1401-05-02 | .0000000 | .0000000 | .0000000 | 1.0000000 + 100 | .0000000 | 2400 | 2 | 1.0000000 | 1401-01-01 | .0000000 | .4545455 | .0000000 | 3.0000000 + 400 | .0000000 | 0 | 2 | 1.0000000 | 1401-06-01 | .0000000 | .4545455 | .0000000 | 8.0000000 + 200 | .0000000 | 0 | 3 | 1.0000000 | 1401-04-01 | .0000000 | .6363636 | .0000000 | 1.0000000 + 500 | .0000000 | 5 | 3 | 1.0000000 | 1401-06-01 | .0000000 | .6363636 | .0000000 | 5.0000000 + 600 | .0000000 | 5 | 3 | 1.0000000 | 1401-06-01 | .0000000 | .6363636 | .0000000 | .0000000 + 700 | .0000000 | 1 | 4 | 1.0000000 | 1401-06-01 | .0000000 | .9090909 | .0000000 | .0000000 + 800 | .0000000 | 1 | 4 | 1.0000000 | 1401-06-01 | .0000000 | .9090909 | .0000000 | .0000000 +(12 rows) + +-- VAR_SAMP() function with NULL OVER() clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (); -- mvd 2->2; + pn | to_char +-----+------------------- + 400 | 1.4242424 + 800 | 1.4242424 + 300 | 1.4242424 + 400 | 1.4242424 + 500 | 1.4242424 + 500 | 1.4242424 + 200 | 1.4242424 + 200 | 1.4242424 + 100 | 1.4242424 + 600 | 1.4242424 + 100 | 1.4242424 + 700 | 1.4242424 +(12 rows) + +-- VAR_SAMP() function with NULL OVER() clause in combination with other window functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn/ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (), +win2 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.vn order by ow_sale.cn desc), +win3 as (order by ow_sale.vn desc), +win4 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc); -- mvd 2->2; 4,1,5,6->3; 5->7; 4,6->8; + qty | to_char | to_char | cn | vn | pn | to_char | to_char +------+-------------------+-------------------+----+----+-----+-------------------+------------------- + 1 | 1.4242424 | 1.0000000 | 2 | 50 | 400 | .1666667 | 200.0000000 + 1 | 1.4242424 | 1.0000000 | 1 | 50 | 400 | .1666667 | 400.0000000 + 1100 | 1.4242424 | 1.0000000 | 2 | 40 | 100 | .5000000 | .0000000 + 1 | 1.4242424 | 1.0000000 | 4 | 40 | 700 | .5000000 | .0000000 + 1 | 1.4242424 | 1.0000000 | 3 | 40 | 200 | .5000000 | 66.0000000 + 1 | 1.4242424 | 1.0000000 | 4 | 40 | 800 | .5000000 | .0000000 + 12 | 1.4242424 | 1.0000000 | 3 | 30 | 600 | .8333333 | .0000000 + 1 | 1.4242424 | 1.0000000 | 1 | 30 | 300 | .8333333 | 300.0000000 + 12 | 1.4242424 | 1.0000000 | 1 | 30 | 500 | .8333333 | .0000000 + 12 | 1.4242424 | 1.0000000 | 3 | 30 | 500 | .8333333 | .0000000 + 1 | 1.4242424 | 1.0000000 | 1 | 20 | 100 | .9166667 | 100.0000000 + 1 | 1.4242424 | 1.0000000 | 1 | 10 | 200 | 1.0000000 | 200.0000000 +(12 rows) + +-- VAR_SAMP() function with OVER() clause having ONLY PARTITION BY -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn); -- mvd 4,2,5->3; + qty | vn | to_char | cn | pn +------+----+-------------------+----+----- + 1 | 10 | .0000000 | 1 | 200 + 1 | 20 | .0000000 | 1 | 100 + 1 | 50 | .0000000 | 2 | 400 + 12 | 30 | .0000000 | 3 | 600 + 1 | 40 | .0000000 | 3 | 200 + 1 | 40 | .0000000 | 4 | 800 + 1 | 30 | .0000000 | 1 | 300 + 12 | 30 | .0000000 | 1 | 500 + 1 | 50 | .0000000 | 1 | 400 + 1100 | 40 | .0000000 | 2 | 100 + 12 | 30 | .0000000 | 3 | 500 + 1 | 40 | .0000000 | 4 | 700 +(12 rows) + +-- VAR_SAMP() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.pn desc); -- mvd 4->3; 6->5; 6,1->7; + pn | cn | to_char | dt | to_char | vn | to_char +-----+----+-------------------+------------+-------------------+----+------------------- + 400 | 2 | 5.9523810 | 1401-06-01 | .0000000 | 50 | 1.0000000 + 400 | 1 | 5.9523810 | 1401-06-01 | .0000000 | 50 | 2.0000000 + 800 | 4 | 5.9523810 | 1401-06-01 | .1818182 | 40 | 1.0000000 + 700 | 4 | 5.9523810 | 1401-06-01 | .1818182 | 40 | 1.0000000 + 100 | 2 | .0000000 | 1401-01-01 | .1818182 | 40 | 1.0000000 + 200 | 3 | .0000000 | 1401-04-01 | .1818182 | 40 | 1.0000000 + 500 | 1 | 5.9523810 | 1401-06-01 | .5454545 | 30 | 1.0000000 + 300 | 1 | .0000000 | 1401-05-02 | .5454545 | 30 | 1.0000000 + 500 | 3 | 5.9523810 | 1401-06-01 | .5454545 | 30 | 2.0000000 + 600 | 3 | 5.9523810 | 1401-06-01 | .5454545 | 30 | 1.0000000 + 100 | 1 | .0000000 | 1401-05-01 | .9090909 | 20 | 1.0000000 + 200 | 1 | .0000000 | 1401-03-01 | 1.0000000 | 10 | 1.0000000 +(12 rows) + +-- VAR_SAMP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc); -- mvd 1->4; + cn | pn | qty | to_char +----+-----+------+------------------- + 4 | 800 | 1 | .0000000 + 4 | 700 | 1 | .0000000 + 3 | 500 | 12 | .3000000 + 3 | 200 | 1 | .3000000 + 3 | 600 | 12 | .3000000 + 2 | 400 | 1 | .6666667 + 2 | 100 | 1100 | .6666667 + 1 | 300 | 1 | 1.4242424 + 1 | 400 | 1 | 1.4242424 + 1 | 500 | 12 | 1.4242424 + 1 | 100 | 1 | 1.4242424 + 1 | 200 | 1 | 1.4242424 +(12 rows) + +-- VAR_SAMP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.prc) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc), +win2 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 4->5; 2,7,8->6; 4->9; 2,7,8->10; 4->11; + qty | cn | qty | vn | to_char | to_char | dt | pn | to_char | to_char | to_char +------+----+------+----+-------------------+-------------------+------------+-----+-------------------+-------------------+------------------- + 1 | 2 | 1 | 50 | .0000000 | 2.0000000 | 1401-06-01 | 400 | .0000000 | 1.0000000 | .0000000 + 1 | 1 | 1 | 50 | .0000000 | 1.0000000 | 1401-06-01 | 400 | .0000000 | .5000000 | .0000000 + 1 | 4 | 1 | 40 | 26.6666667 | .0000000 | 1401-06-01 | 800 | .1818182 | 1.0000000 | .1818182 + 1 | 3 | 1 | 40 | 26.6666667 | 3.0000000 | 1401-04-01 | 200 | .1818182 | 1.0000000 | .1818182 + 1100 | 2 | 1100 | 40 | 26.6666667 | .0000000 | 1401-01-01 | 100 | .1818182 | 1.0000000 | .1818182 + 1 | 4 | 1 | 40 | 26.6666667 | .0000000 | 1401-06-01 | 700 | .1818182 | 1.0000000 | .1818182 + 12 | 3 | 12 | 30 | 62.2222222 | .0000000 | 1401-06-01 | 600 | .5454545 | 1.0000000 | .5454545 + 12 | 1 | 12 | 30 | 62.2222222 | .0000000 | 1401-06-01 | 500 | .5454545 | .5000000 | .5454545 + 12 | 3 | 12 | 30 | 62.2222222 | .0000000 | 1401-06-01 | 500 | .5454545 | 1.0000000 | .5454545 + 1 | 1 | 1 | 30 | 62.2222222 | 1.0000000 | 1401-05-02 | 300 | .5454545 | 1.0000000 | .5454545 + 1 | 1 | 1 | 20 | 85.4545455 | 1.0000000 | 1401-05-01 | 100 | .9090909 | 1.0000000 | .9090909 + 1 | 1 | 1 | 10 | 135.6060606 | 1.0000000 | 1401-03-01 | 200 | 1.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range unbounded preceding ); -- mvd 3->2; + vn | to_char | pn +----+-------------------+----- + 40 | .0000000 | 800 + 40 | 4.5000000 | 700 + 30 | 3.0000000 | 600 + 30 | 4.2000000 | 500 + 30 | 4.2000000 | 500 + 50 | 25.6666667 | 400 + 50 | 25.6666667 | 400 + 30 | 25.1250000 | 300 + 10 | 32.6666667 | 200 + 40 | 32.6666667 | 200 + 40 | 43.8409091 | 100 + 20 | 43.8409091 | 100 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ), +win2 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.vn asc); -- mvd 1->2; 4->3; + cn | to_char | to_char | vn +----+-------------------+-------------------+---- + 4 | 5000.0000000 | .0000000 | 40 + 4 | 5000.0000000 | .0000000 | 40 + 3 | 53146.3000000 | .0000000 | 30 + 3 | 53146.3000000 | .0000000 | 40 + 3 | 53146.3000000 | .0000000 | 30 + 2 | 372625.2380952 | .0000000 | 50 + 2 | 372625.2380952 | .0000000 | 40 + 1 | 211998.0606061 | .0000000 | 50 + 1 | 211998.0606061 | .0000000 | 20 + 1 | 211998.0606061 | .0000000 | 30 + 1 | 211998.0606061 | .0000000 | 30 + 1 | 211998.0606061 | .0000000 | 10 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range 3 preceding ); -- mvd 6->5; + vn | pn | vn | pn | to_char | cn +----+-----+----+-----+-------------------+---- + 10 | 200 | 10 | 200 | 25000.0000000 | 1 + 20 | 100 | 20 | 100 | 25000.0000000 | 1 + 30 | 300 | 30 | 300 | 25000.0000000 | 1 + 50 | 400 | 50 | 400 | 25000.0000000 | 1 + 30 | 500 | 30 | 500 | 25000.0000000 | 1 + 40 | 100 | 40 | 100 | 24761.9047619 | 2 + 50 | 400 | 50 | 400 | 24761.9047619 | 2 + 40 | 200 | 40 | 200 | 31222.2222222 | 3 + 30 | 600 | 30 | 600 | 31222.2222222 | 3 + 30 | 500 | 30 | 500 | 31222.2222222 | 3 + 40 | 700 | 40 | 700 | 52727.2727273 | 4 + 40 | 800 | 40 | 800 | 52727.2727273 | 4 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range current row ); -- mvd 4->3; + pn | prc | to_char | cn +-----+------+-------------------+---- + 200 | 0 | 25000.0000000 | 1 + 100 | 0 | 25000.0000000 | 1 + 300 | 0 | 25000.0000000 | 1 + 400 | 0 | 25000.0000000 | 1 + 500 | 5 | 25000.0000000 | 1 + 100 | 2400 | 45000.0000000 | 2 + 400 | 0 | 45000.0000000 | 2 + 200 | 0 | 43333.3333333 | 3 + 600 | 5 | 43333.3333333 | 3 + 500 | 5 | 43333.3333333 | 3 + 700 | 1 | 5000.0000000 | 4 + 800 | 1 | 5000.0000000 | 4 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(order by ow_sale.cn asc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(order by ow_sale.cn asc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range current row ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.vn,ow_sale.prc order by ow_sale.pn desc); -- mvd 1->3; 1->4; 1->5; 1->6; 2->7; 9,2,10->8; + cn | vn | to_char | to_char | to_char | to_char | to_char | to_char | prc | pn +----+----+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+------+----- + 1 | 50 | 220.0000000 | 1.0000000 | 5.0000000 | 5.0000000 | .1666667 | 1.0000000 | 0 | 400 + 2 | 50 | 50.0000000 | 2.0000000 | 2400.0000000 | 2.0000000 | .1666667 | 1.0000000 | 0 | 400 + 4 | 40 | .0000000 | 4.0000000 | 1.0000000 | 2.0000000 | .5000000 | 2.0000000 | 1 | 700 + 2 | 40 | 50.0000000 | 2.0000000 | 2400.0000000 | 2.0000000 | .5000000 | 1.0000000 | 2400 | 100 + 3 | 40 | 33.3333333 | 3.0000000 | 5.0000000 | 3.0000000 | .5000000 | 1.0000000 | 0 | 200 + 4 | 40 | .0000000 | 4.0000000 | 1.0000000 | 2.0000000 | .5000000 | 1.0000000 | 1 | 800 + 3 | 30 | 33.3333333 | 3.0000000 | 5.0000000 | 3.0000000 | .8333333 | 2.0000000 | 5 | 500 + 3 | 30 | 33.3333333 | 3.0000000 | 5.0000000 | 3.0000000 | .8333333 | 1.0000000 | 5 | 600 + 1 | 30 | 220.0000000 | 1.0000000 | 5.0000000 | 5.0000000 | .8333333 | 2.0000000 | 5 | 500 + 1 | 30 | 220.0000000 | 1.0000000 | 5.0000000 | 5.0000000 | .8333333 | 1.0000000 | 0 | 300 + 1 | 20 | 220.0000000 | 1.0000000 | 5.0000000 | 5.0000000 | .9166667 | 1.0000000 | 0 | 100 + 1 | 10 | 220.0000000 | 1.0000000 | 5.0000000 | 5.0000000 | 1.0000000 | 1.0000000 | 0 | 200 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc/ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and floor(ow_sale.pn) preceding ); -- mvd 3->5; + qty | cn | vn | dt | to_char +------+----+----+------------+------------------- + 1 | 1 | 10 | 1401-03-01 | .0000000 + 1 | 1 | 20 | 1401-05-01 | .0000000 + 12 | 3 | 30 | 1401-06-01 | .0000000 + 1 | 1 | 30 | 1401-05-02 | .0000000 + 12 | 1 | 30 | 1401-06-01 | .0000000 + 12 | 3 | 30 | 1401-06-01 | .0000000 + 1100 | 2 | 40 | 1401-01-01 | .0000000 + 1 | 4 | 40 | 1401-06-01 | .0000000 + 1 | 3 | 40 | 1401-04-01 | .0000000 + 1 | 4 | 40 | 1401-06-01 | .0000000 + 1 | 2 | 50 | 1401-06-01 | .0000000 + 1 | 1 | 50 | 1401-06-01 | .0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.prc) preceding ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.pn desc); -- mvd 1->3; 5,1,6->4; 5,1,6->7; + vn | cn | to_char | to_char | dt | pn | to_char +----+----+-------------------+-------------------+------------+-----+------------------- + 50 | 1 | .0000000 | 1.0000000 | 1401-06-01 | 400 | 2.0000000 + 50 | 2 | .0000000 | 2.0000000 | 1401-06-01 | 400 | 2.0000000 + 40 | 2 | .0000000 | 1.0000000 | 1401-01-01 | 100 | 2.0000000 + 40 | 3 | 74666.6666667 | 1.0000000 | 1401-04-01 | 200 | 3.0000000 + 40 | 4 | .0000000 | 1.0000000 | 1401-06-01 | 800 | 4.0000000 + 40 | 4 | .0000000 | 1.0000000 | 1401-06-01 | 700 | 4.0000000 + 30 | 3 | 74666.6666667 | 1.0000000 | 1401-06-01 | 600 | 3.0000000 + 30 | 3 | 74666.6666667 | 1.0000000 | 1401-06-01 | 500 | 3.0000000 + 30 | 1 | 47222.2222222 | 1.0000000 | 1401-05-02 | 300 | 1.0000000 + 30 | 1 | 74666.6666667 | 2.0000000 | 1401-06-01 | 500 | 3.0000000 + 20 | 1 | 53636.3636364 | 1.0000000 | 1401-05-01 | 100 | 1.0000000 + 10 | 1 | 52727.2727273 | 1.0000000 | 1401-03-01 | 200 | 1.0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and current row ); -- mvd 4->3; + pn | pn | to_char | vn +-----+-----+-------------------+---- + 400 | 400 | .5000000 | 50 + 400 | 400 | .5000000 | 50 + 100 | 100 | 1.4666667 | 40 + 700 | 700 | 1.4666667 | 40 + 800 | 800 | 1.4666667 | 40 + 200 | 200 | 1.4666667 | 40 + 600 | 600 | 1.3777778 | 30 + 300 | 300 | 1.3777778 | 30 + 500 | 500 | 1.3777778 | 30 + 500 | 500 | 1.3777778 | 30 + 100 | 100 | 1.4181818 | 20 + 200 | 200 | 1.4242424 | 10 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and current row ), +win2 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc); -- mvd 1->2; 4,5->3; + vn | to_char | to_char | cn | pn +----+-------------------+-------------------+----+----- + 10 | .0000000 | 200.0000000 | 1 | 200 + 20 | .0000000 | 100.0000000 | 1 | 100 + 30 | 18.1666667 | .0000000 | 3 | 600 + 30 | 18.1666667 | 300.0000000 | 1 | 300 + 30 | 18.1666667 | .0000000 | 1 | 500 + 30 | 18.1666667 | .0000000 | 3 | 500 + 40 | 29982.9000000 | .0000000 | 2 | 100 + 40 | 29982.9000000 | .0000000 | 4 | 700 + 40 | 29982.9000000 | 200.0000000 | 3 | 200 + 40 | 29982.9000000 | .0000000 | 4 | 800 + 50 | 25020.3333333 | 400.0000000 | 2 | 400 + 50 | 25020.3333333 | 400.0000000 | 1 | 400 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.vn+ow_sale.cn) following ); -- mvd 3->2; + qty | to_char | cn +------+-------------------+---- + 1 | 476986.0227273 | 1 + 1 | 476986.0227273 | 1 + 1 | 476986.0227273 | 1 + 1 | 476986.0227273 | 1 + 12 | 476986.0227273 | 1 + 1100 | 476986.0227273 | 2 + 1 | 476986.0227273 | 2 + 1 | 476986.0227273 | 3 + 12 | 476986.0227273 | 3 + 12 | 476986.0227273 | 3 + 1 | 476986.0227273 | 4 + 1 | 476986.0227273 | 4 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.pn+ow_sale.cn) following ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->2; 5->4; 7->6; 3->8; 7->9; + dt | to_char | vn | to_char | pn | to_char | cn | to_char | to_char +------------+-------------------+----+-------------------+-----+-------------------+----+-------------------+------------------- + 1401-01-01 | 135.6060606 | 40 | .9090909 | 100 | .0000000 | 2 | 12.0000000 | .0000000 + 1401-03-01 | 135.6060606 | 10 | .7272727 | 200 | 40.0000000 | 1 | 12.0000000 | .0909091 + 1401-04-01 | 135.6060606 | 40 | .7272727 | 200 | .0000000 | 3 | 12.0000000 | .1818182 + 1401-05-01 | 135.6060606 | 20 | .9090909 | 100 | 40.0000000 | 1 | 12.0000000 | .2727273 + 1401-05-02 | 135.6060606 | 30 | .6363636 | 300 | 20.0000000 | 1 | 12.0000000 | .3636364 + 1401-06-01 | 135.6060606 | 50 | .4545455 | 400 | 30.0000000 | 1 | 12.0000000 | .4545455 + 1401-06-01 | 135.6060606 | 50 | .4545455 | 400 | 30.0000000 | 2 | 12.0000000 | .5454545 + 1401-06-01 | 135.6060606 | 30 | .2727273 | 500 | 50.0000000 | 1 | 12.0000000 | .6363636 + 1401-06-01 | 135.6060606 | 30 | .2727273 | 500 | 50.0000000 | 3 | 12.0000000 | .7272727 + 1401-06-01 | 135.6060606 | 30 | .1818182 | 600 | 50.0000000 | 3 | 12.0000000 | .8181818 + 1401-06-01 | 135.6060606 | 40 | .0909091 | 700 | 50.0000000 | 4 | 12.0000000 | .9090909 + 1401-06-01 | 135.6060606 | 40 | .0000000 | 800 | 30.0000000 | 4 | 12.0000000 | 1.0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and unbounded following ); -- mvd 2->4; + qty | pn | dt | to_char +------+-----+------------+------------------- + 1 | 100 | 1401-05-01 | 479386.6287879 + 1100 | 100 | 1401-01-01 | 479386.6287879 + 1 | 200 | 1401-03-01 | 479386.6287879 + 1 | 200 | 1401-04-01 | 479386.6287879 + 1 | 300 | 1401-05-02 | 479386.6287879 + 1 | 400 | 1401-06-01 | 479386.6287879 + 1 | 400 | 1401-06-01 | 479386.6287879 + 12 | 500 | 1401-06-01 | 479386.6287879 + 12 | 500 | 1401-06-01 | 479386.6287879 + 12 | 600 | 1401-06-01 | 479386.6287879 + 1 | 700 | 1401-06-01 | 479386.6287879 + 1 | 800 | 1401-06-01 | 479386.6287879 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 1 preceding and floor(ow_sale.qty*ow_sale.qty) preceding ); -- mvd 1->2; + vn | to_char +----+------------------- + 10 | .0000000 + 20 | .0000000 + 30 | .0000000 + 30 | .0000000 + 30 | .0000000 + 30 | .0000000 + 40 | .0000000 + 40 | .0000000 + 40 | .0000000 + 40 | .0000000 + 50 | .0000000 + 50 | .0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.vn) preceding and current row ); -- mvd 1->2; + vn | to_char +----+------------------- + 10 | .0000000 + 20 | 50.0000000 + 30 | 70.0000000 + 30 | 70.0000000 + 30 | 70.0000000 + 30 | 70.0000000 + 40 | 98.8888889 + 40 | 98.8888889 + 40 | 98.8888889 + 40 | 98.8888889 + 50 | 135.6060606 + 50 | 135.6060606 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.cn)) OVER(order by ow_sale.pn asc range between 1 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 1 preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.pn desc), +win3 as (order by ow_sale.pn desc); -- mvd 5->4; 5->6; 5->7; 9,1,5->8; 5->10; + vn | vn | qty | to_char | pn | to_char | to_char | to_char | cn | to_char +----+----+------+-------------------+-----+-------------------+-------------------+-------------------+----+------------------- + 40 | 40 | 1 | .0000000 | 800 | 1.0000000 | 1.0000000 | 1.0000000 | 4 | 1.0000000 + 40 | 40 | 1 | .0000000 | 700 | 1.0000000 | 1.0000000 | 2.0000000 | 4 | 2.0000000 + 30 | 30 | 12 | .0000000 | 600 | 1.0000000 | 1.0000000 | 1.0000000 | 3 | 3.0000000 + 30 | 30 | 12 | 2.0000000 | 500 | 2.0000000 | 2.0000000 | 2.0000000 | 3 | 4.0000000 + 30 | 30 | 12 | 2.0000000 | 500 | 2.0000000 | 2.0000000 | 1.0000000 | 1 | 4.0000000 + 50 | 50 | 1 | .5000000 | 400 | 2.0000000 | 2.0000000 | 1.0000000 | 2 | 6.0000000 + 50 | 50 | 1 | .5000000 | 400 | 2.0000000 | 2.0000000 | 1.0000000 | 1 | 6.0000000 + 30 | 30 | 1 | .0000000 | 300 | 1.0000000 | 1.0000000 | 2.0000000 | 1 | 8.0000000 + 10 | 10 | 1 | 392.0000000 | 200 | 2.0000000 | 2.0000000 | 1.0000000 | 1 | 9.0000000 + 40 | 40 | 1 | 392.0000000 | 200 | 2.0000000 | 2.0000000 | 1.0000000 | 3 | 9.0000000 + 20 | 20 | 1 | 180.5000000 | 100 | 2.0000000 | 2.0000000 | 1.0000000 | 1 | 11.0000000 + 40 | 40 | 1100 | 180.5000000 | 100 | 2.0000000 | 2.0000000 | 1.0000000 | 2 | 11.0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 2 preceding and floor(ow_sale.pn+ow_sale.cn) following ); -- mvd 6->5; + prc | qty | prc | qty | to_char | pn +------+------+------+------+-------------------+----- + 1 | 1 | 1 | 1 | 210909.0909091 | 800 + 1 | 1 | 1 | 1 | 162181.8181818 | 700 + 5 | 12 | 5 | 12 | 124888.8888889 | 600 + 5 | 12 | 5 | 12 | 100000.0000000 | 500 + 5 | 12 | 5 | 12 | 100000.0000000 | 500 + 0 | 1 | 0 | 1 | 64761.9047619 | 400 + 0 | 1 | 0 | 1 | 64761.9047619 | 400 + 0 | 1 | 0 | 1 | 28000.0000000 | 300 + 0 | 1 | 0 | 1 | 13333.3333333 | 200 + 0 | 1 | 0 | 1 | 13333.3333333 | 200 + 0 | 1 | 0 | 1 | .0000000 | 100 + 2400 | 1100 | 2400 | 1100 | .0000000 | 100 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.vn*ow_sale.qty) preceding and 2 following ), +win2 as (order by ow_sale.vn desc); -- mvd 4->3; 1->5; + vn | pn | to_char | cn | to_char +----+-----+-------------------+----+------------------- + 50 | 400 | 156.6666667 | 1 | .1666667 + 50 | 400 | 135.6060606 | 2 | .1666667 + 40 | 800 | 135.6060606 | 4 | .5000000 + 40 | 100 | 135.6060606 | 2 | .5000000 + 40 | 200 | 135.6060606 | 3 | .5000000 + 40 | 700 | 135.6060606 | 4 | .5000000 + 30 | 600 | 135.6060606 | 3 | .8333333 + 30 | 300 | 156.6666667 | 1 | .8333333 + 30 | 500 | 156.6666667 | 1 | .8333333 + 30 | 500 | 135.6060606 | 3 | .8333333 + 20 | 100 | 156.6666667 | 1 | .9166667 + 10 | 200 | 156.6666667 | 1 | 1.0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 2 preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.pn desc), +win4 as (order by ow_sale.pn desc); -- mvd 1->7; 9,3->8; 9,3->10; 9,12,3->11; 3->13; + vn | vn | pn | vn | prc | vn | to_char | to_char | cn | to_char | to_char | qty | to_char +----+----+-----+----+------+----+-------------------+-------------------+----+-------------------+-------------------+------+------------------- + 40 | 40 | 800 | 40 | 1 | 40 | 98.8888889 | .0000000 | 4 | 44.0000000 | 1.0000000 | 1 | 1.0000000 + 40 | 40 | 700 | 40 | 1 | 40 | 98.8888889 | .0000000 | 4 | 44.0000000 | 1.0000000 | 1 | 2.0000000 + 30 | 30 | 600 | 30 | 5 | 30 | 70.0000000 | .0000000 | 3 | 33.0000000 | 1.0000000 | 12 | 3.0000000 + 30 | 30 | 500 | 30 | 5 | 30 | 70.0000000 | .0000000 | 3 | 33.0000000 | 1.0000000 | 12 | 4.0000000 + 30 | 30 | 500 | 30 | 5 | 30 | 70.0000000 | .0000000 | 1 | 31.0000000 | 1.0000000 | 12 | 5.0000000 + 50 | 50 | 400 | 50 | 0 | 50 | 135.6060606 | .0000000 | 2 | 52.0000000 | 1.0000000 | 1 | 6.0000000 + 50 | 50 | 400 | 50 | 0 | 50 | 135.6060606 | .0000000 | 1 | 51.0000000 | 1.0000000 | 1 | 7.0000000 + 30 | 30 | 300 | 30 | 0 | 30 | 70.0000000 | .0000000 | 1 | 31.0000000 | 1.0000000 | 1 | 8.0000000 + 40 | 40 | 200 | 40 | 0 | 40 | 98.8888889 | .0000000 | 3 | 43.0000000 | 1.0000000 | 1 | 9.0000000 + 10 | 10 | 200 | 10 | 0 | 10 | .0000000 | .0000000 | 1 | 11.0000000 | 1.0000000 | 1 | 10.0000000 + 40 | 40 | 100 | 40 | 2400 | 40 | 98.8888889 | .0000000 | 2 | 42.0000000 | 1.0000000 | 1100 | 11.0000000 + 20 | 20 | 100 | 20 | 0 | 20 | 50.0000000 | .0000000 | 1 | 21.0000000 | 1.0000000 | 1 | 12.0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and current row ); -- mvd 1->5; + pn | pn | vn | vn | to_char +-----+-----+----+----+------------------- + 800 | 800 | 40 | 40 | .0000000 + 700 | 700 | 40 | 40 | .0000000 + 600 | 600 | 30 | 30 | .0000000 + 500 | 500 | 30 | 30 | .0000000 + 500 | 500 | 30 | 30 | .0000000 + 400 | 400 | 50 | 50 | .0000000 + 400 | 400 | 50 | 50 | .0000000 + 300 | 300 | 30 | 30 | .0000000 + 200 | 200 | 10 | 10 | .0000000 + 200 | 200 | 40 | 40 | .0000000 + 100 | 100 | 20 | 20 | 2880000.0000000 + 100 | 100 | 40 | 40 | 2880000.0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.qty)) OVER(order by ow_sale.pn asc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and current row ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->2; 1,5,6,3->4; 3->7; 3->8; 1,5,6,3->9; 1->10; + cn | to_char | pn | to_char | dt | vn | to_char | to_char | to_char | to_char +----+-------------------+-----+-------------------+------------+----+-------------------+-------------------+-------------------+------------------- + 2 | 603900.5000000 | 100 | 1.0000000 | 1401-01-01 | 40 | -1060.0000000 | 2360.0000000 | .0000000 | .0000000 + 1 | .0000000 | 200 | 1.0000000 | 1401-03-01 | 10 | 9.0000000 | -10.0000000 | .0000000 | .0000000 + 3 | .0000000 | 200 | 1.0000000 | 1401-04-01 | 40 | 9.0000000 | -10.0000000 | .0000000 | .0000000 + 1 | 603900.5000000 | 100 | 1.0000000 | 1401-05-01 | 20 | -1060.0000000 | 2360.0000000 | .0000000 | .0000000 + 1 | .0000000 | 300 | 1.0000000 | 1401-05-02 | 30 | 29.0000000 | -30.0000000 | .0000000 | .0000000 + 1 | .0000000 | 400 | 1.0000000 | 1401-06-01 | 50 | 49.0000000 | -50.0000000 | .0000000 | .0000000 + 2 | .0000000 | 400 | 1.0000000 | 1401-06-01 | 50 | 49.0000000 | -50.0000000 | .0000000 | .0000000 + 1 | .0000000 | 500 | 1.0000000 | 1401-06-01 | 30 | 18.0000000 | -25.0000000 | .0000000 | .0000000 + 3 | .0000000 | 500 | 1.0000000 | 1401-06-01 | 30 | 18.0000000 | -25.0000000 | .0000000 | .0000000 + 3 | .0000000 | 600 | 1.0000000 | 1401-06-01 | 30 | 18.0000000 | -25.0000000 | .0000000 | .0000000 + 4 | .0000000 | 700 | 1.0000000 | 1401-06-01 | 40 | 39.0000000 | -39.0000000 | .0000000 | .0000000 + 4 | .0000000 | 800 | 1.0000000 | 1401-06-01 | 40 | 39.0000000 | -39.0000000 | .0000000 | .0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and 3 following ); -- mvd 4->3; + qty | vn | to_char | cn +------+----+-------------------+---- + 1 | 10 | 662532.0833333 | 1 + 1 | 20 | 662532.0833333 | 1 + 1 | 30 | 662532.0833333 | 1 + 12 | 30 | 662532.0833333 | 1 + 1 | 50 | 662532.0833333 | 1 + 1100 | 40 | 1183900.4761905 | 2 + 1 | 50 | 1183900.4761905 | 2 + 12 | 30 | 52865.8000000 | 3 + 1 | 40 | 52865.8000000 | 3 + 12 | 30 | 52865.8000000 | 3 + 1 | 40 | 5000.0000000 | 4 + 1 | 40 | 5000.0000000 | 4 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and floor(ow_sale.vn) following ), +win2 as (order by ow_sale.cn asc); -- mvd 4->3; 4->5; 4->6; + pn | vn | to_char | cn | to_char | to_char +-----+----+-------------------+----+-------------------+------------------- + 800 | 40 | 146.4242424 | 4 | 11.0000000 | 12.0000000 + 700 | 40 | 146.4242424 | 4 | 11.0000000 | 12.0000000 + 200 | 40 | 163.2888889 | 3 | 8.0000000 | 10.0000000 + 500 | 30 | 163.2888889 | 3 | 8.0000000 | 10.0000000 + 600 | 30 | 163.2888889 | 3 | 8.0000000 | 10.0000000 + 400 | 50 | 232.1428571 | 2 | 6.0000000 | 7.0000000 + 100 | 40 | 232.1428571 | 2 | 6.0000000 | 7.0000000 + 200 | 10 | 220.0000000 | 1 | 1.0000000 | 5.0000000 + 500 | 30 | 220.0000000 | 1 | 1.0000000 | 5.0000000 + 400 | 50 | 220.0000000 | 1 | 1.0000000 | 5.0000000 + 300 | 30 | 220.0000000 | 1 | 1.0000000 | 5.0000000 + 100 | 20 | 220.0000000 | 1 | 1.0000000 | 5.0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and unbounded following ); -- mvd 1->3; + cn | vn | to_char +----+----+------------------- + 1 | 30 | 557196.9696970 + 1 | 10 | 557196.9696970 + 1 | 20 | 557196.9696970 + 1 | 30 | 557196.9696970 + 1 | 50 | 557196.9696970 + 2 | 40 | 292380.9523810 + 2 | 50 | 292380.9523810 + 3 | 30 | 147000.0000000 + 3 | 40 | 147000.0000000 + 3 | 30 | 147000.0000000 + 4 | 40 | .0000000 + 4 | 40 | .0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc); -- mvd 6->5; 8,1,6->7; 6->9; + cn | pn | prc | cn | to_char | vn | to_char | dt | to_char +----+-----+------+----+-------------------+----+-------------------+------------+------------------- + 2 | 400 | 0 | 2 | 52727.2727273 | 50 | .0000000 | 1401-06-01 | 800.0000000 + 1 | 400 | 0 | 1 | 52727.2727273 | 50 | .0000000 | 1401-06-01 | 800.0000000 + 2 | 100 | 2400 | 2 | 64444.4444444 | 40 | .0000000 | 1401-01-01 | 800.0000000 + 3 | 200 | 0 | 3 | 64444.4444444 | 40 | .0000000 | 1401-04-01 | 800.0000000 + 4 | 700 | 1 | 4 | 64444.4444444 | 40 | .0000000 | 1401-06-01 | 800.0000000 + 4 | 800 | 1 | 4 | 64444.4444444 | 40 | .0000000 | 1401-06-01 | 800.0000000 + 1 | 500 | 5 | 1 | 38666.6666667 | 30 | .0000000 | 1401-06-01 | 600.0000000 + 3 | 600 | 5 | 3 | 38666.6666667 | 30 | .0000000 | 1401-06-01 | 600.0000000 + 3 | 500 | 5 | 3 | 38666.6666667 | 30 | .0000000 | 1401-06-01 | 600.0000000 + 1 | 300 | 0 | 1 | 38666.6666667 | 30 | .0000000 | 1401-05-02 | 600.0000000 + 1 | 100 | 0 | 1 | 5000.0000000 | 20 | .0000000 | 1401-05-01 | 200.0000000 + 1 | 200 | 0 | 1 | .0000000 | 10 | .0000000 | 1401-03-01 | 200.0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 3 following and 4 following ); -- mvd 5->4; + prc | pn | pn | to_char | vn +------+-----+-----+-------------------+---- + 0 | 200 | 200 | .0000000 | 10 + 0 | 100 | 100 | .0000000 | 20 + 5 | 600 | 600 | .0000000 | 30 + 0 | 300 | 300 | .0000000 | 30 + 5 | 500 | 500 | .0000000 | 30 + 5 | 500 | 500 | .0000000 | 30 + 2400 | 100 | 100 | .0000000 | 40 + 1 | 700 | 700 | .0000000 | 40 + 0 | 200 | 200 | .0000000 | 40 + 1 | 800 | 800 | .0000000 | 40 + 0 | 400 | 400 | .0000000 | 50 + 0 | 400 | 400 | .0000000 | 50 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.cn)) OVER(order by ow_sale.vn asc range between 4 following and floor(ow_sale.qty+ow_sale.vn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 4 following and floor(ow_sale.qty+ow_sale.vn) following ), +win2 as (order by ow_sale.cn desc); -- mvd 3->2; 5->4; 3->6; + prc | to_char | vn | to_char | cn | to_char +------+-------------------+----+-------------------+----+------------------- + 1 | .0000000 | 40 | 1.0000000 | 4 | 48.0000000 + 1 | .0000000 | 40 | 1.0000000 | 4 | 48.0000000 + 5 | 74666.6666667 | 30 | 3.0000000 | 3 | 36.0000000 + 0 | .0000000 | 40 | 3.0000000 | 3 | 48.0000000 + 5 | 74666.6666667 | 30 | 3.0000000 | 3 | 36.0000000 + 0 | .0000000 | 50 | 6.0000000 | 2 | .0000000 + 2400 | .0000000 | 40 | 6.0000000 | 2 | 48.0000000 + 0 | .0000000 | 50 | 8.0000000 | 1 | .0000000 + 0 | 59821.4285714 | 20 | 8.0000000 | 1 | 27.0000000 + 0 | 74666.6666667 | 30 | 8.0000000 | 1 | 36.0000000 + 5 | 74666.6666667 | 30 | 8.0000000 | 1 | 36.0000000 + 0 | .0000000 | 10 | 8.0000000 | 1 | 19.0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between floor(ow_sale.pn/ow_sale.vn) following and unbounded following ); -- mvd 4->3; + vn | vn | to_char | pn +----+----+-------------------+----- + 40 | 40 | 40545.4545455 | 800 + 40 | 40 | 31222.2222222 | 700 + 30 | 30 | 25000.0000000 | 600 + 30 | 30 | 16190.4761905 | 500 + 30 | 30 | 16190.4761905 | 500 + 50 | 50 | 7000.0000000 | 400 + 50 | 50 | 7000.0000000 | 400 + 30 | 30 | 3333.3333333 | 300 + 10 | 10 | .0000000 | 200 + 40 | 40 | .0000000 | 200 + 20 | 20 | .0000000 | 100 + 40 | 40 | .0000000 | 100 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.cn) as int),cast (floor(ow_sale.prc+ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn/ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn/ow_sale.cn) as int),cast (floor(ow_sale.qty/ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.prc/ow_sale.cn) following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc); -- mvd 1->5; 1->6; 8->7; 8->9; 1,3,11->10; + cn | cn | qty | qty | to_char | to_char | to_char | vn | to_char | to_char | pn +----+----+------+------+-------------------+-------------------+-------------------+----+-------------------+-------------------+----- + 2 | 2 | 1100 | 1100 | .0000000 | .0000000 | .0000000 | 40 | 1.0000000 | .0000000 | 100 + 1 | 1 | 1 | 1 | 1.4242424 | 12.0000000 | .0000000 | 10 | 2.0000000 | 10.0000000 | 200 + 3 | 3 | 1 | 1 | .3000000 | 5.0000000 | .0000000 | 40 | 3.0000000 | 13.0000000 | 200 + 1 | 1 | 1 | 1 | 1.4242424 | 12.0000000 | .0000000 | 20 | 4.0000000 | 20.0000000 | 100 + 1 | 1 | 1 | 1 | 1.4242424 | 12.0000000 | .0000000 | 30 | 5.0000000 | 30.0000000 | 300 + 1 | 1 | 1 | 1 | 1.4242424 | 12.0000000 | .0000000 | 50 | 6.0000000 | 50.0000000 | 400 + 2 | 2 | 1 | 1 | .6666667 | 7.0000000 | .0000000 | 50 | 7.0000000 | 25.0000000 | 400 + 1 | 1 | 12 | 12 | .0000000 | .0000000 | .0000000 | 30 | 8.0000000 | 30.0000000 | 500 + 3 | 3 | 12 | 12 | .0000000 | 2.0000000 | .0000000 | 30 | 9.0000000 | 10.0000000 | 500 + 3 | 3 | 12 | 12 | .0000000 | 2.0000000 | .0000000 | 30 | 10.0000000 | 10.0000000 | 600 + 4 | 4 | 1 | 1 | .0000000 | 2.0000000 | .0000000 | 40 | 11.0000000 | 10.0000000 | 700 + 4 | 4 | 1 | 1 | .0000000 | 2.0000000 | .0000000 | 40 | 12.0000000 | 10.0000000 | 800 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows unbounded preceding ); -- mvd 4->3; + dt | prc | to_char | cn +------------+------+-------------------+---- + 1401-01-01 | 2400 | .0000000 | 2 + 1401-03-01 | 0 | 450.0000000 | 1 + 1401-04-01 | 0 | 300.0000000 | 3 + 1401-05-01 | 0 | 225.0000000 | 1 + 1401-05-02 | 0 | 170.0000000 | 1 + 1401-06-01 | 0 | 216.6666667 | 1 + 1401-06-01 | 0 | 228.5714286 | 2 + 1401-06-01 | 5 | 198.2142857 | 1 + 1401-06-01 | 5 | 175.0000000 | 3 + 1401-06-01 | 5 | 156.6666667 | 3 + 1401-06-01 | 1 | 145.4545455 | 4 + 1401-06-01 | 1 | 135.6060606 | 4 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.cn desc rows unbounded preceding ), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc); -- mvd 3,4->2; 6,7,1,4->5; + vn | to_char | cn | pn | to_char | dt | qty +----+-------------------+----+-----+-------------------+------------+------ + 40 | .0000000 | 2 | 100 | .0000000 | 1401-01-01 | 1100 + 10 | 605000.0000000 | 1 | 200 | .0000000 | 1401-03-01 | 1 + 40 | 402601.3333333 | 3 | 200 | .0000000 | 1401-04-01 | 1 + 20 | 302134.3333333 | 1 | 100 | .0000000 | 1401-05-01 | 1 + 30 | 241780.8000000 | 1 | 300 | .0000000 | 1401-05-02 | 1 + 50 | 201520.6666667 | 1 | 400 | .0000000 | 1401-06-01 | 1 + 50 | 172700.6190476 | 2 | 400 | .0000000 | 1401-06-01 | 1 + 30 | 150714.5000000 | 1 | 500 | .0000000 | 1401-06-01 | 12 + 30 | 133646.1944444 | 3 | 500 | .0000000 | 1401-06-01 | 12 + 30 | 120056.0000000 | 3 | 600 | .0000000 | 1401-06-01 | 12 + 40 | 109170.4909091 | 4 | 700 | .0000000 | 1401-06-01 | 1 + 40 | 100094.4545455 | 4 | 800 | .0000000 | 1401-06-01 | 1 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows floor(ow_sale.qty*ow_sale.cn) preceding ); -- mvd 3,4->2; + qty | to_char | cn | vn +------+-------------------+----+---- + 1100 | .0000000 | 2 | 40 + 1 | .0000000 | 1 | 10 + 1 | .0000000 | 3 | 40 + 1 | .0000000 | 1 | 20 + 1 | .0000000 | 1 | 30 + 1 | .0000000 | 1 | 50 + 1 | .0000000 | 2 | 50 + 12 | .0000000 | 1 | 30 + 12 | .0000000 | 3 | 30 + 12 | .0000000 | 3 | 30 + 1 | .0000000 | 4 | 40 + 1 | .0000000 | 4 | 40 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.cn desc rows floor(ow_sale.qty*ow_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.cn desc rows floor(ow_sale.qty*ow_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows floor(ow_sale.qty*ow_sale.pn) preceding ), +win2 as (order by ow_sale.vn desc); -- mvd 4->3; 4->5; 4->6; 8->7; + dt | qty | to_char | cn | to_char | to_char | to_char | vn +------------+------+-------------------+----+-------------------+-------------------+-------------------+---- + 1401-06-01 | 1 | 172543.0000000 | 2 | 50.0000000 | .0000000 | 1.0000000 | 50 + 1401-06-01 | 1 | 201300.1666667 | 1 | 50.0000000 | .0000000 | 1.0000000 | 50 + 1401-06-01 | 1 | 100125.3333333 | 4 | 50.0000000 | .0000000 | 3.0000000 | 40 + 1401-04-01 | 1 | 402600.3333333 | 3 | 40.0000000 | .0000000 | 3.0000000 | 40 + 1401-06-01 | 1 | 109167.0909091 | 4 | 50.0000000 | .0000000 | 3.0000000 | 40 + 1401-01-01 | 1100 | .0000000 | 2 | -2360.0000000 | 2400.0000000 | 3.0000000 | 40 + 1401-06-01 | 12 | 150558.5000000 | 1 | 50.0000000 | .0000000 | 7.0000000 | 30 + 1401-06-01 | 12 | 133552.0277778 | 3 | 50.0000000 | .0000000 | 7.0000000 | 30 + 1401-06-01 | 12 | 120002.4000000 | 3 | 50.0000000 | .0000000 | 7.0000000 | 30 + 1401-05-02 | 1 | 241560.2000000 | 1 | 40.0000000 | .0000000 | 7.0000000 | 30 + 1401-05-01 | 1 | 301950.2500000 | 1 | 40.0000000 | .0000000 | 11.0000000 | 20 + 1401-03-01 | 1 | 603900.5000000 | 1 | 10.0000000 | .0000000 | 12.0000000 | 10 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows current row ); -- mvd 3->2; + vn | to_char | cn +----+-------------------+---- + 40 | .0000000 | 2 + 10 | .0000000 | 1 + 40 | .0000000 | 3 + 20 | .0000000 | 1 + 30 | .0000000 | 1 + 50 | .0000000 | 1 + 50 | .0000000 | 2 + 30 | .0000000 | 1 + 30 | .0000000 | 3 + 30 | .0000000 | 3 + 40 | .0000000 | 4 + 40 | .0000000 | 4 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc*ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.cn asc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn asc rows current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows current row ), +win2 as (order by ow_sale.pn desc); -- mvd 8->7; 8->9; 4->10; 8->11; + prc | vn | qty | pn | qty | qty | to_char | cn | to_char | to_char | to_char +------+----+------+-----+------+------+-------------------+----+-------------------+-------------------+------------------- + 1 | 40 | 1 | 800 | 1 | 1 | .0000000 | 4 | 1.0000000 | 1.0000000 | 801.0000000 + 1 | 40 | 1 | 700 | 1 | 1 | .0000000 | 4 | 1.0000000 | 2.0000000 | 701.0000000 + 5 | 30 | 12 | 600 | 12 | 12 | .0000000 | 3 | 25.0000000 | 3.0000000 | 605.0000000 + 5 | 30 | 12 | 500 | 12 | 12 | .0000000 | 1 | 25.0000000 | 4.0000000 | 505.0000000 + 5 | 30 | 12 | 500 | 12 | 12 | .0000000 | 3 | 25.0000000 | 4.0000000 | 505.0000000 + 0 | 50 | 1 | 400 | 1 | 1 | .0000000 | 2 | .0000000 | 5.0000000 | 400.0000000 + 0 | 50 | 1 | 400 | 1 | 1 | .0000000 | 1 | .0000000 | 5.0000000 | 400.0000000 + 0 | 30 | 1 | 300 | 1 | 1 | .0000000 | 1 | .0000000 | 6.0000000 | 300.0000000 + 0 | 40 | 1 | 200 | 1 | 1 | .0000000 | 3 | .0000000 | 7.0000000 | 200.0000000 + 0 | 10 | 1 | 200 | 1 | 1 | .0000000 | 1 | .0000000 | 7.0000000 | 200.0000000 + 2400 | 40 | 1100 | 100 | 1100 | 1100 | .0000000 | 2 | 5760000.0000000 | 8.0000000 | 2500.0000000 + 0 | 20 | 1 | 100 | 1 | 1 | .0000000 | 1 | .0000000 | 8.0000000 | 100.0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and 0 preceding ); -- mvd 4->7; + qty | cn | qty | pn | pn | prc | to_char +------+----+------+-----+-----+------+------------------- + 1100 | 2 | 1100 | 100 | 100 | 2400 | .0000000 + 1 | 1 | 1 | 200 | 200 | 0 | 6121500.5000000 + 1 | 3 | 1 | 200 | 200 | 0 | 4081000.3333333 + 1 | 1 | 1 | 100 | 100 | 0 | 3060750.2500000 + 1 | 1 | 1 | 300 | 300 | 0 | 2448600.2000000 + 1 | 1 | 1 | 400 | 400 | 0 | 2040500.1666667 + 1 | 2 | 1 | 400 | 400 | 0 | 1749000.1428571 + 12 | 1 | 12 | 500 | 500 | 5 | 1528407.6964286 + 12 | 3 | 12 | 500 | 500 | 5 | 1357273.0000000 + 12 | 3 | 12 | 600 | 600 | 5 | 1220627.5666667 + 1 | 4 | 1 | 700 | 700 | 1 | 1109937.8727273 + 1 | 4 | 1 | 800 | 800 | 1 | 1017650.3863636 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between unbounded preceding and 4 preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc); -- mvd 1,3->4; 3->5; 1,2,3->6; + cn | vn | pn | to_char | to_char | to_char +----+----+-----+-------------------+-------------------+------------------- + 4 | 40 | 800 | 22142.8571429 | 1.0000000 | .0000000 + 4 | 40 | 700 | 16190.4761905 | 2.0000000 | .0000000 + 3 | 30 | 600 | 13666.6666667 | 3.0000000 | .0000000 + 1 | 30 | 500 | 3333.3333333 | 4.0000000 | .0000000 + 3 | 30 | 500 | 7000.0000000 | 4.0000000 | .0000000 + 2 | 50 | 400 | 3333.3333333 | 5.0000000 | .0000000 + 1 | 50 | 400 | 5000.0000000 | 5.0000000 | .0000000 + 1 | 30 | 300 | .0000000 | 6.0000000 | .0000000 + 3 | 40 | 200 | .0000000 | 7.0000000 | .0000000 + 1 | 10 | 200 | .0000000 | 7.0000000 | .0000000 + 2 | 40 | 100 | .0000000 | 8.0000000 | .0000000 + 1 | 20 | 100 | .0000000 | 8.0000000 | .0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows between unbounded preceding and current row ); -- mvd 5,1->7; + vn | qty | qty | pn | cn | dt | to_char +----+------+------+-----+----+------------+------------------- + 40 | 1100 | 1100 | 100 | 2 | 1401-01-01 | .0000000 + 10 | 1 | 1 | 200 | 1 | 1401-03-01 | 846300.5000000 + 40 | 1 | 1 | 200 | 3 | 1401-04-01 | 564200.3333333 + 20 | 1 | 1 | 100 | 1 | 1401-05-01 | 423150.2500000 + 30 | 1 | 1 | 300 | 1 | 1401-05-02 | 338520.2000000 + 50 | 1 | 1 | 400 | 1 | 1401-06-01 | 282100.1666667 + 50 | 1 | 1 | 400 | 2 | 1401-06-01 | 241800.1428571 + 30 | 12 | 12 | 500 | 1 | 1401-06-01 | 211858.4107143 + 30 | 12 | 12 | 500 | 3 | 1401-06-01 | 188507.4444444 + 30 | 12 | 12 | 600 | 3 | 1401-06-01 | 169788.9000000 + 40 | 1 | 1 | 700 | 4 | 1401-06-01 | 154283.2181818 + 40 | 1 | 1 | 800 | 4 | 1401-06-01 | 141373.5378788 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn/ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and current row ); -- mvd 4->5; 4->6; + prc | vn | dt | pn | to_char | to_char +------+----+------------+-----+-------------------+------------------- + 2400 | 40 | 1401-01-01 | 100 | .0000000 | 1.0000000 + 0 | 10 | 1401-03-01 | 200 | 11520000.0000000 | 2.0000000 + 0 | 40 | 1401-04-01 | 200 | 7680000.0000000 | 3.0000000 + 0 | 20 | 1401-05-01 | 100 | 5760000.0000000 | 4.0000000 + 0 | 30 | 1401-05-02 | 300 | 4608000.0000000 | 5.0000000 + 0 | 50 | 1401-06-01 | 400 | 3840000.0000000 | 6.0000000 + 0 | 50 | 1401-06-01 | 400 | 3291428.5714286 | 7.0000000 + 5 | 30 | 1401-06-01 | 500 | 2879145.9821429 | 8.0000000 + 5 | 30 | 1401-06-01 | 500 | 2557359.0277778 | 9.0000000 + 5 | 30 | 1401-06-01 | 600 | 2300305.8333333 | 10.0000000 + 1 | 40 | 1401-06-01 | 700 | 2091177.0909091 | 11.0000000 + 1 | 40 | 1401-06-01 | 800 | 1916904.8106061 | 12.0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and 3 following ); -- mvd 2,5->4; + qty | vn | qty | to_char | pn +------+----+------+-------------------+----- + 1100 | 40 | 1100 | 3333.3333333 | 100 + 1 | 10 | 1 | 7000.0000000 | 200 + 1 | 40 | 1 | 13666.6666667 | 200 + 1 | 20 | 1 | 16190.4761905 | 100 + 1 | 30 | 1 | 22142.8571429 | 300 + 1 | 50 | 1 | 25000.0000000 | 400 + 1 | 50 | 1 | 31222.2222222 | 400 + 12 | 30 | 12 | 40545.4545455 | 500 + 12 | 30 | 12 | 52727.2727273 | 500 + 12 | 30 | 12 | 52727.2727273 | 600 + 1 | 40 | 1 | 52727.2727273 | 700 + 1 | 40 | 1 | 52727.2727273 | 800 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between unbounded preceding and 2 following ), +win2 as (order by ow_sale.vn desc); -- mvd 4->3; 6->5; 6->7; + dt | prc | to_char | cn | to_char | vn | to_char +------------+------+-------------------+----+-------------------+----+------------------- + 1401-06-01 | 0 | .0000000 | 2 | 1.0000000 | 50 | 1.0000000 + 1401-06-01 | 0 | .0000000 | 1 | 1.0000000 | 50 | 1.0000000 + 1401-06-01 | 1 | .0000000 | 4 | 2.0000000 | 40 | 1.0000000 + 1401-04-01 | 0 | .0000000 | 3 | 2.0000000 | 40 | 1.0000000 + 1401-06-01 | 1 | .0000000 | 4 | 2.0000000 | 40 | 1.0000000 + 1401-01-01 | 2400 | .0000000 | 2 | 2.0000000 | 40 | 1.0000000 + 1401-06-01 | 5 | .0000000 | 1 | 3.0000000 | 30 | 1.0000000 + 1401-06-01 | 5 | .0000000 | 3 | 3.0000000 | 30 | 1.0000000 + 1401-06-01 | 5 | .0000000 | 3 | 3.0000000 | 30 | 1.0000000 + 1401-05-02 | 0 | .0000000 | 1 | 3.0000000 | 30 | 1.0000000 + 1401-05-01 | 0 | .0000000 | 1 | 4.0000000 | 20 | 1.0000000 + 1401-03-01 | 0 | .0000000 | 1 | 5.0000000 | 10 | 1.0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 7,1->6; + pn | prc | pn | pn | qty | to_char | cn +-----+------+-----+-----+------+-------------------+---- + 100 | 2400 | 100 | 100 | 1100 | 127.6363636 | 2 + 200 | 0 | 200 | 200 | 1 | 127.6363636 | 1 + 200 | 0 | 200 | 200 | 1 | 127.6363636 | 3 + 100 | 0 | 100 | 100 | 1 | 127.6363636 | 1 + 300 | 0 | 300 | 300 | 1 | 127.6363636 | 1 + 400 | 0 | 400 | 400 | 1 | 127.6363636 | 1 + 400 | 0 | 400 | 400 | 1 | 127.6363636 | 2 + 500 | 5 | 500 | 500 | 12 | 127.6363636 | 1 + 500 | 5 | 500 | 500 | 12 | 127.6363636 | 3 + 600 | 5 | 600 | 600 | 12 | 127.6363636 | 3 + 700 | 1 | 700 | 700 | 1 | 127.6363636 | 4 + 800 | 1 | 800 | 800 | 1 | 127.6363636 | 4 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.cn order by ow_sale.vn desc), +win3 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 1->2; 4,5,1,6->3; 5,4,1,8->7; + vn | to_char | to_char | cn | dt | qty | to_char | pn +----+-------------------+-------------------+----+------------+------+-------------------+----- + 40 | 135.6060606 | 1.0000000 | 2 | 1401-01-01 | 1100 | .0000000 | 100 + 10 | 135.6060606 | 1.0000000 | 1 | 1401-03-01 | 1 | .0000000 | 200 + 40 | 135.6060606 | 1.0000000 | 3 | 1401-04-01 | 1 | .0000000 | 200 + 20 | 135.6060606 | 1.0000000 | 1 | 1401-05-01 | 1 | .0000000 | 100 + 30 | 135.6060606 | 1.0000000 | 1 | 1401-05-02 | 1 | .0000000 | 300 + 50 | 135.6060606 | 1.0000000 | 1 | 1401-06-01 | 1 | .0000000 | 400 + 50 | 135.6060606 | 1.0000000 | 2 | 1401-06-01 | 1 | .0000000 | 400 + 30 | 135.6060606 | 1.0000000 | 1 | 1401-06-01 | 12 | .0000000 | 500 + 30 | 135.6060606 | 1.0000000 | 3 | 1401-06-01 | 12 | .0000000 | 500 + 30 | 135.6060606 | 1.0000000 | 3 | 1401-06-01 | 12 | .0000000 | 600 + 40 | 135.6060606 | 1.0000000 | 4 | 1401-06-01 | 1 | .0000000 | 700 + 40 | 135.6060606 | 1.0000000 | 4 | 1401-06-01 | 1 | .0000000 | 800 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.prc) preceding and current row ); -- mvd 5->4; + vn | pn | dt | to_char | cn +----+-----+------------+-------------------+---- + 40 | 100 | 1401-01-01 | .0000000 | 2 + 10 | 200 | 1401-03-01 | .0000000 | 1 + 40 | 200 | 1401-04-01 | .0000000 | 3 + 20 | 100 | 1401-05-01 | .0000000 | 1 + 30 | 300 | 1401-05-02 | .0000000 | 1 + 50 | 400 | 1401-06-01 | .0000000 | 1 + 50 | 400 | 1401-06-01 | .0000000 | 2 + 30 | 500 | 1401-06-01 | 139.3666667 | 1 + 30 | 500 | 1401-06-01 | 148.7000000 | 3 + 30 | 600 | 1401-06-01 | 112.9666667 | 3 + 40 | 700 | 1401-06-01 | 40.5000000 | 4 + 40 | 800 | 1401-06-01 | .0000000 | 4 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between floor(ow_sale.vn) preceding and current row ), +win2 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.cn desc), +win3 as (partition by ow_sale.prc,ow_sale.vn order by ow_sale.vn asc); -- mvd 6,7->5; 6,1,4->8; 3,4->9; + dt | qty | prc | vn | to_char | cn | pn | to_char | to_char +------------+------+------+----+-------------------+----+-----+-------------------+------------------- + 1401-01-01 | 1100 | 2400 | 40 | .0000000 | 2 | 100 | 1.0000000 | 1.0000000 + 1401-03-01 | 1 | 0 | 10 | 450.0000000 | 1 | 200 | 1.0000000 | 1.0000000 + 1401-04-01 | 1 | 0 | 40 | 300.0000000 | 3 | 200 | 1.0000000 | 1.0000000 + 1401-05-01 | 1 | 0 | 20 | 225.0000000 | 1 | 100 | 1.0000000 | 1.0000000 + 1401-05-02 | 1 | 0 | 30 | 170.0000000 | 1 | 300 | 1.0000000 | 1.0000000 + 1401-06-01 | 1 | 0 | 50 | 216.6666667 | 1 | 400 | 1.0000000 | 2.0000000 + 1401-06-01 | 1 | 0 | 50 | 228.5714286 | 2 | 400 | .5000000 | 1.0000000 + 1401-06-01 | 12 | 5 | 30 | 198.2142857 | 1 | 500 | 1.0000000 | 1.0000000 + 1401-06-01 | 12 | 5 | 30 | 175.0000000 | 3 | 500 | .6666667 | 2.0000000 + 1401-06-01 | 12 | 5 | 30 | 156.6666667 | 3 | 600 | .6666667 | 3.0000000 + 1401-06-01 | 1 | 1 | 40 | 145.4545455 | 4 | 700 | 1.0000000 | 1.0000000 + 1401-06-01 | 1 | 1 | 40 | 135.6060606 | 4 | 800 | 1.0000000 | 2.0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.qty*ow_sale.qty) preceding and 5 following ); -- mvd 5->4; + cn | cn | qty | to_char | pn +----+----+------+-------------------+----- + 2 | 2 | 1100 | 13666.6666667 | 100 + 1 | 1 | 1 | 16190.4761905 | 200 + 3 | 3 | 1 | 20000.0000000 | 200 + 1 | 1 | 1 | 22857.1428571 | 100 + 1 | 1 | 1 | 26666.6666667 | 300 + 1 | 1 | 1 | 18095.2380952 | 400 + 2 | 2 | 1 | 22857.1428571 | 400 + 1 | 1 | 12 | 52727.2727273 | 500 + 3 | 3 | 12 | 52727.2727273 | 500 + 3 | 3 | 12 | 52727.2727273 | 600 + 4 | 4 | 1 | 10000.0000000 | 700 + 4 | 4 | 1 | 5000.0000000 | 800 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between floor(ow_sale.pn) preceding and floor(ow_sale.cn) following ), +win2 as (order by ow_sale.cn desc); -- mvd 3->4; 3->5; 3->6; 3->7; + pn | pn | cn | to_char | to_char | to_char | to_char +-----+-----+----+-------------------+-------------------+-------------------+------------------- + 800 | 800 | 4 | 662532.0833333 | 1.0000000 | 1.0000000 | 12.0000000 + 700 | 700 | 4 | 662532.0833333 | 1.0000000 | 2.0000000 | 12.0000000 + 500 | 500 | 3 | 662532.0833333 | 2.0000000 | 3.0000000 | 12.0000000 + 200 | 200 | 3 | 1085666.6666667 | 2.0000000 | 4.0000000 | 6.0000000 + 600 | 600 | 3 | 662532.0833333 | 2.0000000 | 5.0000000 | 12.0000000 + 400 | 400 | 2 | 783838.1944444 | 3.0000000 | 6.0000000 | 9.0000000 + 100 | 100 | 2 | 2083333.3333333 | 3.0000000 | 7.0000000 | 3.0000000 + 500 | 500 | 1 | 783838.1944444 | 4.0000000 | 8.0000000 | 9.0000000 + 400 | 400 | 1 | 953333.3333333 | 4.0000000 | 9.0000000 | 7.0000000 + 300 | 300 | 1 | 1085666.6666667 | 4.0000000 | 10.0000000 | 6.0000000 + 100 | 100 | 1 | 1255000.0000000 | 4.0000000 | 11.0000000 | 5.0000000 + 200 | 200 | 1 | 2083333.3333333 | 4.0000000 | 12.0000000 | 3.0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.vn desc rows between 4 preceding and unbounded following ); -- mvd 1,2->5; + cn | vn | pn | vn | to_char +----+----+-----+----+------------------- + 2 | 40 | 100 | 40 | 135.6060606 + 1 | 10 | 200 | 10 | 135.6060606 + 3 | 40 | 200 | 40 | 135.6060606 + 1 | 20 | 100 | 20 | 135.6060606 + 1 | 30 | 300 | 30 | 135.6060606 + 1 | 50 | 400 | 50 | 145.4545455 + 2 | 50 | 400 | 50 | 93.3333333 + 1 | 30 | 500 | 30 | 102.7777778 + 3 | 30 | 500 | 30 | 78.5714286 + 3 | 30 | 600 | 30 | 80.9523810 + 4 | 40 | 700 | 40 | 66.6666667 + 4 | 40 | 800 | 40 | 30.0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.prc+ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between 0 preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.cn desc), +win4 as (partition by ow_sale.pn order by ow_sale.vn desc); -- mvd 1,4->3; 1,4->5; 4->6; 1->7; 4,9->8; 4->10; + cn | cn | to_char | vn | to_char | to_char | to_char | to_char | pn | to_char +----+----+-------------------+----+-------------------+-------------------+-------------------+-------------------+-----+------------------- + 4 | 4 | .0000000 | 40 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 | 800 | 12.0000000 + 4 | 4 | 5000.0000000 | 40 | 2.0000000 | .0000000 | 1.0000000 | 1.0000000 | 700 | 11.0000000 + 3 | 3 | 16533.6666667 | 30 | 4.0000000 | .0000000 | 3.0000000 | 1.0000000 | 500 | 9.0000000 + 3 | 3 | 46857.1222222 | 40 | 10.0000000 | .0000000 | 3.0000000 | .5000000 | 200 | 3.0000000 + 3 | 3 | 9900.3333333 | 30 | 3.0000000 | .0000000 | 3.0000000 | 1.0000000 | 600 | 10.0000000 + 2 | 2 | 21394.7000000 | 50 | 6.0000000 | .0000000 | 6.0000000 | 1.0000000 | 400 | 7.0000000 + 2 | 2 | 52365.0606061 | 40 | 12.0000000 | .0000000 | 6.0000000 | .5000000 | 100 | 1.0000000 + 1 | 1 | 16751.5000000 | 30 | 5.0000000 | .0000000 | 8.0000000 | 1.0000000 | 500 | 8.0000000 + 1 | 1 | 22534.9523810 | 50 | 7.0000000 | .0000000 | 8.0000000 | 1.0000000 | 400 | 6.0000000 + 1 | 1 | 27480.2678571 | 30 | 8.0000000 | .0000000 | 8.0000000 | 1.0000000 | 300 | 5.0000000 + 1 | 1 | 43985.0277778 | 20 | 9.0000000 | .0000000 | 8.0000000 | 1.0000000 | 100 | 4.0000000 + 1 | 1 | 47794.2909091 | 10 | 11.0000000 | .0000000 | 8.0000000 | 1.0000000 | 200 | 2.0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between current row and current row ); -- mvd 4->3; + qty | prc | to_char | vn +------+------+-------------------+---- + 1100 | 2400 | .0000000 | 40 + 1 | 0 | .0000000 | 10 + 1 | 0 | .0000000 | 40 + 1 | 0 | .0000000 | 20 + 1 | 0 | .0000000 | 30 + 1 | 0 | .0000000 | 50 + 1 | 0 | .0000000 | 50 + 12 | 5 | .0000000 | 30 + 12 | 5 | .0000000 | 30 + 12 | 5 | .0000000 | 30 + 1 | 1 | .0000000 | 40 + 1 | 1 | .0000000 | 40 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn desc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn*ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between current row and current row ), +win2 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.vn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 1->2; 4,1->3; 1->5; 7->6; + vn | to_char | to_char | cn | to_char | to_char | pn +----+-------------------+-------------------+----+-------------------+-------------------+----- + 40 | .0000000 | 1.0000000 | 2 | .0000000 | 1.0000000 | 100 + 10 | .0000000 | 1.0000000 | 1 | .0000000 | 3.0000000 | 200 + 40 | .0000000 | 1.0000000 | 3 | .0000000 | 4.0000000 | 200 + 20 | .0000000 | 1.0000000 | 1 | .0000000 | 1.0000000 | 100 + 30 | .0000000 | 1.0000000 | 1 | .0000000 | 1.0000000 | 300 + 50 | .0000000 | 1.0000000 | 1 | .0000000 | 2.0000000 | 400 + 50 | .0000000 | 1.0000000 | 2 | .0000000 | 4.0000000 | 400 + 30 | .0000000 | 1.0000000 | 1 | .0000000 | 3.0000000 | 500 + 30 | .0000000 | 1.0000000 | 3 | .0000000 | .0000000 | 500 + 30 | .0000000 | 1.0000000 | 3 | .0000000 | .0000000 | 600 + 40 | .0000000 | 1.0000000 | 4 | .0000000 | .0000000 | 700 + 40 | .0000000 | 1.0000000 | 4 | .0000000 | .0000000 | 800 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between current row and floor(ow_sale.pn*ow_sale.cn) following ); -- mvd 5,2->4; + qty | vn | qty | to_char | cn +------+----+------+-------------------+---- + 1100 | 40 | 1100 | 52727.2727273 | 2 + 1 | 10 | 1 | 48181.8181818 | 1 + 1 | 40 | 1 | 47222.2222222 | 3 + 1 | 20 | 1 | 44444.4444444 | 1 + 1 | 30 | 1 | 27857.1428571 | 1 + 1 | 50 | 1 | 22857.1428571 | 1 + 1 | 50 | 1 | 21666.6666667 | 2 + 12 | 30 | 12 | 17000.0000000 | 1 + 12 | 30 | 12 | 16666.6666667 | 3 + 12 | 30 | 12 | 10000.0000000 | 3 + 1 | 40 | 1 | 5000.0000000 | 4 + 1 | 40 | 1 | .0000000 | 4 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between current row and floor(ow_sale.prc) following ); -- mvd 8->7; 8->9; + pn | qty | qty | cn | prc | cn | to_char | vn | to_char +-----+------+------+----+------+----+-------------------+----+------------------- + 100 | 1100 | 1100 | 2 | 2400 | 2 | 1.4242424 | 40 | 2200.0000000 + 200 | 1 | 1 | 1 | 0 | 1 | .0000000 | 10 | 1.0000000 + 200 | 1 | 1 | 3 | 0 | 3 | .0000000 | 40 | 3.0000000 + 100 | 1 | 1 | 1 | 0 | 1 | .0000000 | 20 | 1.0000000 + 300 | 1 | 1 | 1 | 0 | 1 | .0000000 | 30 | 1.0000000 + 400 | 1 | 1 | 1 | 0 | 1 | .0000000 | 50 | 1.0000000 + 400 | 1 | 1 | 2 | 0 | 2 | .0000000 | 50 | 2.0000000 + 500 | 12 | 12 | 1 | 5 | 1 | 1.5000000 | 30 | 36.0000000 + 500 | 12 | 12 | 3 | 5 | 3 | .3333333 | 30 | 36.0000000 + 600 | 12 | 12 | 3 | 5 | 3 | .3333333 | 30 | 36.0000000 + 700 | 1 | 1 | 4 | 1 | 4 | .0000000 | 40 | 4.0000000 + 800 | 1 | 1 | 4 | 1 | 4 | .0000000 | 40 | 4.0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.vn desc rows between current row and unbounded following ); -- mvd 3,4->2; + qty | to_char | cn | vn +------+-------------------+----+---- + 1100 | .0000000 | 2 | 40 + 1 | .0000000 | 1 | 10 + 1 | .0000000 | 3 | 40 + 1 | .0000000 | 1 | 20 + 1 | .0000000 | 1 | 30 + 1 | .0000000 | 1 | 50 + 1 | .0000000 | 2 | 50 + 12 | .0000000 | 1 | 30 + 12 | .0000000 | 3 | 30 + 12 | .0000000 | 3 | 30 + 1 | .0000000 | 4 | 40 + 1 | .0000000 | 4 | 40 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->2; 5,6,7->4; 5,6,7->8; 3->9; 5,6,7->10; 5,6,7->11; + qty | to_char | pn | to_char | cn | dt | vn | to_char | to_char | to_char | to_char +------+-------------------+-----+-------------------+----+------------+----+-------------------+-------------------+-------------------+------------------- + 1100 | 482058.4469697 | 100 | .0000000 | 2 | 1401-01-01 | 40 | 1.0000000 | 12.0000000 | 1.0000000 | 1.0000000 + 1 | 142.1636364 | 200 | .0000000 | 1 | 1401-03-01 | 10 | 1.0000000 | 11.0000000 | 1.0000000 | 1.0000000 + 1 | 80.4555556 | 200 | .0000000 | 3 | 1401-04-01 | 40 | 1.0000000 | 10.0000000 | 1.0000000 | 1.0000000 + 1 | 89.7777778 | 100 | .0000000 | 1 | 1401-05-01 | 20 | 1.0000000 | 9.0000000 | 1.0000000 | 1.0000000 + 1 | 53.6964286 | 300 | .0000000 | 1 | 1401-05-02 | 30 | 1.0000000 | 8.0000000 | 1.0000000 | 1.0000000 + 1 | 45.0000000 | 400 | .0000000 | 1 | 1401-06-01 | 50 | 1.0000000 | 7.0000000 | 1.0000000 | 1.0000000 + 1 | 35.1000000 | 400 | 50.0000000 | 2 | 1401-06-01 | 50 | 2.0000000 | 6.0000000 | 2.0000000 | 2.0000000 + 12 | 10.8000000 | 500 | .0000000 | 1 | 1401-06-01 | 30 | 1.0000000 | 5.0000000 | 1.0000000 | 1.0000000 + 12 | 12.0000000 | 500 | .0000000 | 3 | 1401-06-01 | 30 | 2.0000000 | 4.0000000 | 2.0000000 | 2.0000000 + 12 | 12.0000000 | 600 | .0000000 | 3 | 1401-06-01 | 30 | 3.0000000 | 3.0000000 | 3.0000000 | 3.0000000 + 1 | .0000000 | 700 | .0000000 | 4 | 1401-06-01 | 40 | 1.0000000 | 2.0000000 | 1.0000000 | 1.0000000 + 1 | .0000000 | 800 | 40.0000000 | 4 | 1401-06-01 | 40 | 2.0000000 | 1.0000000 | 2.0000000 | 2.0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between 1 following and 1 following ); -- mvd 2->3; + vn | pn | to_char +----+-----+------------------- + 40 | 100 | .0000000 + 10 | 200 | .0000000 + 40 | 200 | .0000000 + 20 | 100 | .0000000 + 30 | 300 | .0000000 + 50 | 400 | .0000000 + 50 | 400 | .0000000 + 30 | 500 | .0000000 + 30 | 500 | .0000000 + 30 | 600 | .0000000 + 40 | 700 | .0000000 + 40 | 800 | .0000000 +(12 rows) + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn asc rows between 1 following and floor(ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn asc rows between 1 following and floor(ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between 1 following and floor(ow_sale.qty) following ), +win2 as (partition by ow_sale.vn order by ow_sale.pn asc); -- mvd 3->5; 3->6; 3->7; 3->8; 3,10->9; + qty | prc | vn | cn | to_char | to_char | to_char | to_char | to_char | pn +------+------+----+----+-------------------+-------------------+-------------------+-------------------+-------------------+----- + 1100 | 2400 | 40 | 2 | 48181.8181818 | 10.0000000 | 11.0000000 | 804.0000000 | 1.0000000 | 100 + 1 | 0 | 10 | 1 | .0000000 | 40.0000000 | 1.0000000 | 203.0000000 | 1.0000000 | 200 + 1 | 0 | 40 | 3 | .0000000 | 20.0000000 | 1.0000000 | 101.0000000 | 2.0000000 | 200 + 1 | 0 | 20 | 1 | .0000000 | 30.0000000 | 1.0000000 | 301.0000000 | 1.0000000 | 100 + 1 | 0 | 30 | 1 | .0000000 | 50.0000000 | 1.0000000 | 401.0000000 | 1.0000000 | 300 + 1 | 0 | 50 | 1 | .0000000 | 50.0000000 | 1.0000000 | 402.0000000 | 1.0000000 | 400 + 1 | 0 | 50 | 2 | .0000000 | 30.0000000 | 1.0000000 | 501.0000000 | 1.0000000 | 400 + 12 | 5 | 30 | 1 | 16666.6666667 | 30.0000000 | 4.0000000 | 804.0000000 | 2.0000000 | 500 + 12 | 5 | 30 | 3 | 10000.0000000 | 30.0000000 | 3.0000000 | 804.0000000 | 2.0000000 | 500 + 12 | 5 | 30 | 3 | 5000.0000000 | 40.0000000 | 2.0000000 | 804.0000000 | 4.0000000 | 600 + 1 | 1 | 40 | 4 | .0000000 | 40.0000000 | 1.0000000 | 804.0000000 | 3.0000000 | 700 + 1 | 1 | 40 | 4 | .0000000 | .0000000 | .0000000 | .0000000 | 4.0000000 | 800 +(12 rows) + +-- VAR_SAMP() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.pn order by ow_sale.pn asc,ow_sale.cn desc); -- mvd 3,4,5->2; + prc | to_char | cn | dt | pn +------+-------------------+----+------------+----- + 0 | .0000000 | 3 | 1401-04-01 | 200 + 0 | .0000000 | 1 | 1401-05-01 | 100 + 0 | .0000000 | 1 | 1401-05-02 | 300 + 0 | .0000000 | 1 | 1401-06-01 | 400 + 5 | .0000000 | 1 | 1401-06-01 | 500 + 5 | .0000000 | 3 | 1401-06-01 | 500 + 1 | .0000000 | 4 | 1401-06-01 | 700 + 2400 | .0000000 | 2 | 1401-01-01 | 100 + 0 | .0000000 | 1 | 1401-03-01 | 200 + 0 | .0000000 | 2 | 1401-06-01 | 400 + 5 | .0000000 | 3 | 1401-06-01 | 600 + 1 | .0000000 | 4 | 1401-06-01 | 800 +(12 rows) + +-- VAR_SAMP() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +, +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.cn asc,ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.cn asc,ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.cn asc,ow_sale.vn desc); -- mvd 8,1,4->7; 8,1,4->9; 8,1,4->10; 8,1,4->11; 8,1,4->12; 8,1,4->13; + vn | prc | dt | pn | qty | qty | to_char | cn | to_char | to_char | to_char | to_char | to_char +----+------+------------+-----+------+------+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 30 | 0 | 1401-05-02 | 300 | 1 | 1 | .0000000 | 1 | 1.0000000 | 1.0000000 | .0000000 | .0000000 | 1.0000000 + 50 | 0 | 1401-06-01 | 400 | 1 | 1 | .0000000 | 1 | .5000000 | 1.0000000 | .0000000 | .0000000 | 1.0000000 + 50 | 0 | 1401-06-01 | 400 | 1 | 1 | .5000000 | 2 | 1.0000000 | 2.0000000 | 1.0000000 | 1.0000000 | 2.0000000 + 30 | 5 | 1401-06-01 | 500 | 12 | 12 | .0000000 | 1 | .5000000 | 1.0000000 | .0000000 | .0000000 | 1.0000000 + 30 | 5 | 1401-06-01 | 500 | 12 | 12 | 32.0000000 | 3 | 1.0000000 | 2.0000000 | 1.0000000 | 1.0000000 | 2.0000000 + 40 | 1 | 1401-06-01 | 800 | 1 | 1 | .0000000 | 4 | 1.0000000 | 1.0000000 | .0000000 | .0000000 | 1.0000000 + 20 | 0 | 1401-05-01 | 100 | 1 | 1 | .0000000 | 1 | .5000000 | 1.0000000 | .0000000 | .0000000 | 1.0000000 + 40 | 2400 | 1401-01-01 | 100 | 1100 | 1100 | 150700.5000000 | 2 | 1.0000000 | 2.0000000 | 1.0000000 | 1.0000000 | 2.0000000 + 10 | 0 | 1401-03-01 | 200 | 1 | 1 | .0000000 | 1 | .5000000 | 1.0000000 | .0000000 | .0000000 | 1.0000000 + 40 | 0 | 1401-04-01 | 200 | 1 | 1 | .5000000 | 3 | 1.0000000 | 2.0000000 | 1.0000000 | 1.0000000 | 2.0000000 + 30 | 5 | 1401-06-01 | 600 | 12 | 12 | .0000000 | 3 | 1.0000000 | 1.0000000 | .0000000 | .0000000 | 1.0000000 + 40 | 1 | 1401-06-01 | 700 | 1 | 1 | .0000000 | 4 | 1.0000000 | 1.0000000 | .0000000 | .0000000 | 1.0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.cn desc range unbounded preceding ); -- mvd 4,1,5->3; + dt | dt | to_char | cn | vn +------------+------------+-------------------+----+---- + 1401-03-01 | 1401-03-01 | .0000000 | 1 | 10 + 1401-05-02 | 1401-05-02 | .0000000 | 1 | 30 + 1401-06-01 | 1401-06-01 | 5000.0000000 | 3 | 30 + 1401-06-01 | 1401-06-01 | 5000.0000000 | 3 | 30 + 1401-06-01 | 1401-06-01 | 3333.3333333 | 1 | 30 + 1401-06-01 | 1401-06-01 | 5000.0000000 | 4 | 40 + 1401-06-01 | 1401-06-01 | 5000.0000000 | 4 | 40 + 1401-06-01 | 1401-06-01 | .0000000 | 2 | 50 + 1401-06-01 | 1401-06-01 | .0000000 | 1 | 50 + 1401-05-01 | 1401-05-01 | .0000000 | 1 | 20 + 1401-01-01 | 1401-01-01 | .0000000 | 2 | 40 + 1401-04-01 | 1401-04-01 | .0000000 | 3 | 40 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.prc,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty/ow_sale.pn)) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.vn,ow_sale.dt order by ow_sale.vn desc range unbounded preceding ), +win2 as (partition by ow_sale.pn order by ow_sale.vn asc), +win3 as (order by ow_sale.cn asc), +win4 as (order by ow_sale.vn asc); -- mvd 2,1,6->5; 6,8->7; 4->9; 6->10; 4->11; 6->12; + dt | prc | prc | cn | to_char | vn | to_char | pn | to_char | to_char | to_char | to_char +------------+------+------+----+-------------------+----+-------------------+-----+-------------------+-------------------+-------------------+------------------- + 1401-06-01 | 5 | 5 | 1 | 3333.3333333 | 30 | 1.0000000 | 500 | 1.0000000 | 3.0000000 | 1.0000000 | 6.0000000 + 1401-05-01 | 0 | 0 | 1 | .0000000 | 20 | 1.0000000 | 100 | 1.0000000 | 2.0000000 | 1.0000000 | 2.0000000 + 1401-03-01 | 0 | 0 | 1 | .0000000 | 10 | 1.0000000 | 200 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 0 | 0 | 1 | .0000000 | 50 | 2.0000000 | 400 | 1.0000000 | 5.0000000 | 1.0000000 | 12.0000000 + 1401-05-02 | 0 | 0 | 1 | .0000000 | 30 | 1.0000000 | 300 | 1.0000000 | 3.0000000 | 1.0000000 | 6.0000000 + 1401-06-01 | 0 | 0 | 2 | .0000000 | 50 | 1.0000000 | 400 | 2.0000000 | 5.0000000 | 6.0000000 | 12.0000000 + 1401-01-01 | 2400 | 2400 | 2 | .0000000 | 40 | 2.0000000 | 100 | 2.0000000 | 4.0000000 | 6.0000000 | 10.0000000 + 1401-06-01 | 5 | 5 | 3 | 3333.3333333 | 30 | 2.0000000 | 500 | 3.0000000 | 3.0000000 | 8.0000000 | 6.0000000 + 1401-06-01 | 5 | 5 | 3 | 3333.3333333 | 30 | 1.0000000 | 600 | 3.0000000 | 3.0000000 | 8.0000000 | 6.0000000 + 1401-04-01 | 0 | 0 | 3 | .0000000 | 40 | 2.0000000 | 200 | 3.0000000 | 4.0000000 | 8.0000000 | 10.0000000 + 1401-06-01 | 1 | 1 | 4 | 5000.0000000 | 40 | 1.0000000 | 800 | 4.0000000 | 4.0000000 | 11.0000000 | 10.0000000 + 1401-06-01 | 1 | 1 | 4 | 5000.0000000 | 40 | 1.0000000 | 700 | 4.0000000 | 4.0000000 | 11.0000000 | 10.0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.cn desc range 1 preceding ); -- mvd 4,2,5,6,7->3; + vn | cn | to_char | prc | dt | qty | pn +----+----+-------------------+------+------------+------+----- + 10 | 1 | .0000000 | 0 | 1401-03-01 | 1 | 200 + 50 | 2 | .0000000 | 0 | 1401-06-01 | 1 | 400 + 40 | 4 | .0000000 | 1 | 1401-06-01 | 1 | 700 + 30 | 1 | .0000000 | 5 | 1401-06-01 | 12 | 500 + 30 | 3 | .0000000 | 5 | 1401-06-01 | 12 | 500 + 40 | 3 | .0000000 | 0 | 1401-04-01 | 1 | 200 + 20 | 1 | .0000000 | 0 | 1401-05-01 | 1 | 100 + 30 | 1 | .0000000 | 0 | 1401-05-02 | 1 | 300 + 50 | 1 | .0000000 | 0 | 1401-06-01 | 1 | 400 + 40 | 4 | .0000000 | 1 | 1401-06-01 | 1 | 800 + 30 | 3 | .0000000 | 5 | 1401-06-01 | 12 | 600 + 40 | 2 | .0000000 | 2400 | 1401-01-01 | 1100 | 100 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.pn asc range current row ); -- mvd 4,2->3; + qty | pn | to_char | cn +------+-----+-------------------+---- + 1 | 100 | .0000000 | 1 + 1 | 200 | .0000000 | 1 + 1 | 300 | .0000000 | 1 + 1 | 400 | .0000000 | 1 + 12 | 500 | .0000000 | 1 + 1 | 200 | .0000000 | 3 + 12 | 500 | .0000000 | 3 + 12 | 600 | .0000000 | 3 + 1100 | 100 | .0000000 | 2 + 1 | 400 | .0000000 | 2 + 1 | 700 | .0000000 | 4 + 1 | 800 | .0000000 | 4 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.prc) as int),cast (floor(ow_sale.prc/ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.cn,ow_sale.vn order by ow_sale.pn asc range current row ), +win2 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 1,6,7,3,2,8->5; 3->9; + prc | qty | vn | vn | to_char | cn | dt | pn | to_char +------+------+----+----+-------------------+----+------------+-----+------------------- + 2400 | 1100 | 40 | 40 | .0000000 | 2 | 1401-01-01 | 100 | .0000000 + 0 | 1 | 10 | 10 | .0000000 | 1 | 1401-03-01 | 200 | .0000000 + 0 | 1 | 40 | 40 | .0000000 | 3 | 1401-04-01 | 200 | .0000000 + 0 | 1 | 20 | 20 | .0000000 | 1 | 1401-05-01 | 100 | .0000000 + 0 | 1 | 30 | 30 | .0000000 | 1 | 1401-05-02 | 300 | .0000000 + 0 | 1 | 50 | 50 | .0000000 | 1 | 1401-06-01 | 400 | .0000000 + 0 | 1 | 50 | 50 | .0000000 | 2 | 1401-06-01 | 400 | .0000000 + 5 | 12 | 30 | 30 | .0000000 | 1 | 1401-06-01 | 500 | 10.0000000 + 5 | 12 | 30 | 30 | .0000000 | 3 | 1401-06-01 | 500 | 10.0000000 + 5 | 12 | 30 | 30 | .0000000 | 3 | 1401-06-01 | 600 | 10.0000000 + 1 | 1 | 40 | 40 | .0000000 | 4 | 1401-06-01 | 700 | 2.0000000 + 1 | 1 | 40 | 40 | .0000000 | 4 | 1401-06-01 | 800 | 2.0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.pn asc range between unbounded preceding and 1 preceding ); -- mvd 5,6,3,7,8->4; + cn | cn | vn | to_char | prc | dt | qty | pn +----+----+----+-------------------+------+------------+------+----- + 1 | 1 | 10 | .0000000 | 0 | 1401-03-01 | 1 | 200 + 1 | 1 | 30 | .0000000 | 0 | 1401-05-02 | 1 | 300 + 2 | 2 | 50 | .0000000 | 0 | 1401-06-01 | 1 | 400 + 1 | 1 | 50 | .0000000 | 0 | 1401-06-01 | 1 | 400 + 2 | 2 | 40 | .0000000 | 2400 | 1401-01-01 | 1100 | 100 + 1 | 1 | 20 | .0000000 | 0 | 1401-05-01 | 1 | 100 + 3 | 3 | 40 | .0000000 | 0 | 1401-04-01 | 1 | 200 + 4 | 4 | 40 | .0000000 | 1 | 1401-06-01 | 1 | 700 + 4 | 4 | 40 | .0000000 | 1 | 1401-06-01 | 1 | 800 + 1 | 1 | 30 | .0000000 | 5 | 1401-06-01 | 12 | 500 + 3 | 3 | 30 | .0000000 | 5 | 1401-06-01 | 12 | 500 + 3 | 3 | 30 | .0000000 | 5 | 1401-06-01 | 12 | 600 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc order by ow_sale.vn desc range between unbounded preceding and 4 preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 8,4->7; 2->9; 2->10; 2->11; + pn | cn | dt | vn | pn | cn | to_char | prc | to_char | to_char | to_char +-----+----+------------+----+-----+----+-------------------+------+-------------------+-------------------+------------------- + 700 | 4 | 1401-06-01 | 40 | 700 | 4 | .0000000 | 1 | 1.0000000 | 1.0000000 | 2.0000000 + 800 | 4 | 1401-06-01 | 40 | 800 | 4 | .0000000 | 1 | 1.0000000 | 1.0000000 | 2.0000000 + 600 | 3 | 1401-06-01 | 30 | 600 | 3 | .0000000 | 5 | 3.0000000 | 3.0000000 | 5.0000000 + 200 | 3 | 1401-04-01 | 40 | 200 | 3 | .0000000 | 0 | 3.0000000 | 3.0000000 | 5.0000000 + 500 | 3 | 1401-06-01 | 30 | 500 | 3 | .0000000 | 5 | 3.0000000 | 3.0000000 | 5.0000000 + 100 | 2 | 1401-01-01 | 40 | 100 | 2 | .0000000 | 2400 | 6.0000000 | 6.0000000 | 7.0000000 + 400 | 2 | 1401-06-01 | 50 | 400 | 2 | .0000000 | 0 | 6.0000000 | 6.0000000 | 7.0000000 + 400 | 1 | 1401-06-01 | 50 | 400 | 1 | .0000000 | 0 | 8.0000000 | 8.0000000 | 12.0000000 + 100 | 1 | 1401-05-01 | 20 | 100 | 1 | .0000000 | 0 | 8.0000000 | 8.0000000 | 12.0000000 + 300 | 1 | 1401-05-02 | 30 | 300 | 1 | .0000000 | 0 | 8.0000000 | 8.0000000 | 12.0000000 + 500 | 1 | 1401-06-01 | 30 | 500 | 1 | .0000000 | 5 | 8.0000000 | 8.0000000 | 12.0000000 + 200 | 1 | 1401-03-01 | 10 | 200 | 1 | .0000000 | 0 | 8.0000000 | 8.0000000 | 12.0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.prc order by ow_sale.vn desc range between unbounded preceding and current row ); -- mvd 7,1,8,5,3->6; + cn | cn | pn | cn | qty | to_char | prc | vn +----+----+-----+----+------+-------------------+------+---- + 1 | 1 | 300 | 1 | 1 | .0000000 | 0 | 30 + 1 | 1 | 400 | 1 | 1 | .0000000 | 0 | 50 + 3 | 3 | 600 | 3 | 12 | .0000000 | 5 | 30 + 4 | 4 | 800 | 4 | 1 | .0000000 | 1 | 40 + 1 | 1 | 100 | 1 | 1 | .0000000 | 0 | 20 + 2 | 2 | 100 | 2 | 1100 | .0000000 | 2400 | 40 + 1 | 1 | 200 | 1 | 1 | .0000000 | 0 | 10 + 3 | 3 | 200 | 3 | 1 | .0000000 | 0 | 40 + 2 | 2 | 400 | 2 | 1 | .0000000 | 0 | 50 + 1 | 1 | 500 | 1 | 12 | .0000000 | 5 | 30 + 3 | 3 | 500 | 3 | 12 | .0000000 | 5 | 30 + 4 | 4 | 700 | 4 | 1 | .0000000 | 1 | 40 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn*ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc order by ow_sale.cn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.pn order by ow_sale.pn desc), +win4 as (order by ow_sale.ord, ow_sale.cn asc), +win5 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.pn asc); -- mvd 2,4,1->3; 6->5; 4,8,6->7; 4->9; 4,8,6->10; 4,1,6->11; + vn | prc | to_char | cn | to_char | pn | to_char | dt | to_char | to_char | to_char +----+------+-------------------+----+-------------------+-----+-------------------+------------+-------------------+-------------------+------------------- + 40 | 2400 | .0000000 | 2 | 1.0000000 | 100 | 1.0000000 | 1401-01-01 | .0000000 | .0000000 | 1.0000000 + 10 | 0 | .0000000 | 1 | 3.0000000 | 200 | 1.0000000 | 1401-03-01 | .0000000 | .0000000 | 1.0000000 + 40 | 0 | .0000000 | 3 | 3.0000000 | 200 | 1.0000000 | 1401-04-01 | .0000000 | .0000000 | 1.0000000 + 20 | 0 | .0000000 | 1 | 1.0000000 | 100 | 1.0000000 | 1401-05-01 | .0000000 | .0000000 | 1.0000000 + 30 | 0 | .0000000 | 1 | 5.0000000 | 300 | 1.0000000 | 1401-05-02 | .0000000 | .0000000 | 1.0000000 + 50 | 0 | .0000000 | 1 | 6.0000000 | 400 | 1.0000000 | 1401-06-01 | .0000000 | .0000000 | 1.0000000 + 50 | 0 | .5000000 | 2 | 6.0000000 | 400 | 1.0000000 | 1401-06-01 | 2500.0000000 | .0000000 | 1.0000000 + 30 | 5 | .0000000 | 1 | 8.0000000 | 500 | 1.0000000 | 1401-06-01 | .0000000 | .0000000 | 1.0000000 + 30 | 5 | 1.3333333 | 3 | 8.0000000 | 500 | 1.0000000 | 1401-06-01 | .0000000 | .0000000 | 1.0000000 + 30 | 5 | 1.3333333 | 3 | 10.0000000 | 600 | 1.0000000 | 1401-06-01 | .0000000 | .0000000 | 1.0000000 + 40 | 1 | .0000000 | 4 | 11.0000000 | 700 | 1.0000000 | 1401-06-01 | 800.0000000 | .0000000 | 1.0000000 + 40 | 1 | .0000000 | 4 | 12.0000000 | 800 | 1.0000000 | 1401-06-01 | .0000000 | .0000000 | 1.0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.pn) following ); -- mvd 1,6->5; + cn | vn | vn | prc | to_char | dt +----+----+----+------+-------------------+------------ + 1 | 10 | 10 | 0 | .0000000 | 1401-03-01 + 1 | 30 | 30 | 0 | .0000000 | 1401-05-02 + 4 | 40 | 40 | 1 | 3.3333333 | 1401-06-01 + 4 | 40 | 40 | 1 | 3.3333333 | 1401-06-01 + 3 | 30 | 30 | 5 | 3.3333333 | 1401-06-01 + 3 | 30 | 30 | 5 | 3.3333333 | 1401-06-01 + 2 | 50 | 50 | 0 | 3.3333333 | 1401-06-01 + 1 | 30 | 30 | 5 | 3.3333333 | 1401-06-01 + 1 | 50 | 50 | 0 | 3.3333333 | 1401-06-01 + 2 | 40 | 40 | 2400 | .0000000 | 1401-01-01 + 3 | 40 | 40 | 0 | .0000000 | 1401-04-01 + 1 | 20 | 20 | 0 | .0000000 | 1401-05-01 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.qty order by ow_sale.cn desc range between unbounded preceding and 1 following ), +win2 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.qty order by ow_sale.cn asc); -- mvd 6,1,2,3->7; 9,6,2,4,3->8; 9,6,2,4,3->10; 9,6,2,4,3->11; + dt | qty | pn | vn | dt | cn | to_char | to_char | prc | to_char | to_char +------------+------+-----+----+------------+----+-------------------+-------------------+------+-------------------+------------------- + 1401-04-01 | 1 | 200 | 40 | 1401-04-01 | 3 | .0000000 | .0000000 | 0 | 200.0000000 | 200.0000000 + 1401-05-01 | 1 | 100 | 20 | 1401-05-01 | 1 | .0000000 | .0000000 | 0 | 100.0000000 | 100.0000000 + 1401-05-02 | 1 | 300 | 30 | 1401-05-02 | 1 | .0000000 | .0000000 | 0 | 300.0000000 | 300.0000000 + 1401-06-01 | 1 | 400 | 50 | 1401-06-01 | 2 | .5000000 | .0000000 | 0 | 400.0000000 | 400.0000000 + 1401-06-01 | 1 | 400 | 50 | 1401-06-01 | 1 | .5000000 | .0000000 | 0 | 400.0000000 | 400.0000000 + 1401-06-01 | 12 | 600 | 30 | 1401-06-01 | 3 | .0000000 | .0000000 | 5 | 7200.0000000 | 600.0000000 + 1401-06-01 | 1 | 800 | 40 | 1401-06-01 | 4 | .0000000 | .0000000 | 1 | 800.0000000 | 800.0000000 + 1401-01-01 | 1100 | 100 | 40 | 1401-01-01 | 2 | .0000000 | .0000000 | 2400 | 110000.0000000 | 100.0000000 + 1401-03-01 | 1 | 200 | 10 | 1401-03-01 | 1 | .0000000 | .0000000 | 0 | 200.0000000 | 200.0000000 + 1401-06-01 | 12 | 500 | 30 | 1401-06-01 | 3 | .0000000 | .0000000 | 5 | 6000.0000000 | 500.0000000 + 1401-06-01 | 12 | 500 | 30 | 1401-06-01 | 1 | 288.0000000 | .0000000 | 5 | 6000.0000000 | 500.0000000 + 1401-06-01 | 1 | 700 | 40 | 1401-06-01 | 4 | .0000000 | .0000000 | 1 | 700.0000000 | 700.0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.pn asc range between unbounded preceding and unbounded following ); -- mvd 3,4->6; + qty | cn | dt | pn | pn | to_char +------+----+------------+-----+-----+------------------- + 1 | 1 | 1401-03-01 | 200 | 200 | .0000000 + 1 | 1 | 1401-05-02 | 300 | 300 | .0000000 + 1 | 1 | 1401-06-01 | 400 | 400 | 80.9523810 + 1 | 2 | 1401-06-01 | 400 | 400 | 80.9523810 + 12 | 3 | 1401-06-01 | 500 | 500 | 80.9523810 + 12 | 1 | 1401-06-01 | 500 | 500 | 80.9523810 + 12 | 3 | 1401-06-01 | 600 | 600 | 80.9523810 + 1 | 4 | 1401-06-01 | 700 | 700 | 80.9523810 + 1 | 4 | 1401-06-01 | 800 | 800 | 80.9523810 + 1100 | 2 | 1401-01-01 | 100 | 100 | .0000000 + 1 | 3 | 1401-04-01 | 200 | 200 | .0000000 + 1 | 1 | 1401-05-01 | 100 | 100 | .0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn-ow_sale.cn) as int),cast (floor(ow_sale.qty/ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.vn order by ow_sale.cn asc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,1,3->6; 4->7; 4->8; 4->9; 4->10; + qty | dt | vn | cn | qty | to_char | to_char | to_char | to_char | to_char +------+------------+----+----+------+-------------------+-------------------+-------------------+-------------------+------------------- + 1100 | 1401-01-01 | 40 | 2 | 1100 | .0000000 | .5833333 | 796.0000000 | 1.0000000 | 7.0000000 + 1 | 1401-03-01 | 10 | 1 | 1 | .0000000 | 1.0000000 | 199.0000000 | 2.0000000 | 12.0000000 + 1 | 1401-04-01 | 40 | 3 | 1 | .3333333 | .4166667 | 197.0000000 | 3.0000000 | 5.0000000 + 1 | 1401-05-01 | 20 | 1 | 1 | .0000000 | 1.0000000 | 99.0000000 | 4.0000000 | 12.0000000 + 1 | 1401-05-02 | 30 | 1 | 1 | .0000000 | 1.0000000 | 299.0000000 | 5.0000000 | 12.0000000 + 1 | 1401-06-01 | 50 | 1 | 1 | .0000000 | 1.0000000 | 399.0000000 | 6.0000000 | 12.0000000 + 1 | 1401-06-01 | 50 | 2 | 1 | .0000000 | .5833333 | 398.0000000 | 7.0000000 | 7.0000000 + 12 | 1401-06-01 | 30 | 1 | 12 | .0000000 | 1.0000000 | 499.0000000 | 8.0000000 | 12.0000000 + 12 | 1401-06-01 | 30 | 3 | 12 | .0000000 | .4166667 | 497.0000000 | 9.0000000 | 5.0000000 + 12 | 1401-06-01 | 30 | 3 | 12 | .0000000 | .4166667 | 597.0000000 | 10.0000000 | 5.0000000 + 1 | 1401-06-01 | 40 | 4 | 1 | .3333333 | .1666667 | 696.0000000 | 11.0000000 | 2.0000000 + 1 | 1401-06-01 | 40 | 4 | 1 | .3333333 | .1666667 | 796.0000000 | 12.0000000 | 2.0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.cn asc range between 0 preceding and floor(ow_sale.cn) preceding ); -- mvd 4,5,2->3; + vn | pn | to_char | dt | cn +----+-----+-------------------+------------+---- + 20 | 100 | .0000000 | 1401-05-01 | 1 + 30 | 300 | .0000000 | 1401-05-02 | 1 + 50 | 400 | .0000000 | 1401-06-01 | 1 + 30 | 500 | .0000000 | 1401-06-01 | 1 + 40 | 200 | .0000000 | 1401-04-01 | 3 + 30 | 500 | .0000000 | 1401-06-01 | 3 + 40 | 700 | .0000000 | 1401-06-01 | 4 + 10 | 200 | .0000000 | 1401-03-01 | 1 + 40 | 100 | .0000000 | 1401-01-01 | 2 + 50 | 400 | .0000000 | 1401-06-01 | 2 + 30 | 600 | .0000000 | 1401-06-01 | 3 + 40 | 800 | .0000000 | 1401-06-01 | 4 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc/ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.cn order by ow_sale.cn desc range between floor(ow_sale.qty+ow_sale.qty) preceding and floor(ow_sale.cn+ow_sale.vn) preceding ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc); -- mvd 1,5->4; 1,2,5,3->6; 1,2,5,3->7; + cn | dt | pn | to_char | vn | to_char | to_char +----+------------+-----+-------------------+----+-------------------+------------------- + 1 | 1401-03-01 | 200 | .0000000 | 10 | 1.0000000 | 200.0000000 + 1 | 1401-05-01 | 100 | .0000000 | 20 | 1.0000000 | 100.0000000 + 1 | 1401-05-02 | 300 | .0000000 | 30 | 1.0000000 | 300.0000000 + 1 | 1401-06-01 | 500 | .0000000 | 30 | 1.0000000 | 500.0000000 + 1 | 1401-06-01 | 400 | .0000000 | 50 | 1.0000000 | 400.0000000 + 3 | 1401-06-01 | 600 | .0000000 | 30 | 3.0000000 | 600.0000000 + 3 | 1401-06-01 | 500 | .0000000 | 30 | 3.0000000 | 500.0000000 + 3 | 1401-04-01 | 200 | .0000000 | 40 | 3.0000000 | 200.0000000 + 2 | 1401-01-01 | 100 | .0000000 | 40 | .0000000 | 100.0000000 + 2 | 1401-06-01 | 400 | .0000000 | 50 | 2.0000000 | 400.0000000 + 4 | 1401-06-01 | 800 | .0000000 | 40 | .0000000 | 800.0000000 + 4 | 1401-06-01 | 700 | .0000000 | 40 | .0000000 | 700.0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.prc order by ow_sale.pn asc range between floor(ow_sale.vn*ow_sale.qty) preceding and current row ); -- mvd 7,8,3,2->6; + vn | pn | cn | pn | vn | to_char | prc | dt +----+-----+----+-----+----+-------------------+------+------------ + 20 | 100 | 1 | 100 | 20 | .0000000 | 0 | 1401-05-01 + 30 | 300 | 1 | 300 | 30 | .0000000 | 0 | 1401-05-02 + 50 | 400 | 1 | 400 | 50 | .0000000 | 0 | 1401-06-01 + 30 | 500 | 1 | 500 | 30 | .0000000 | 5 | 1401-06-01 + 40 | 200 | 3 | 200 | 40 | .0000000 | 0 | 1401-04-01 + 30 | 500 | 3 | 500 | 30 | .0000000 | 5 | 1401-06-01 + 40 | 800 | 4 | 800 | 40 | .0000000 | 1 | 1401-06-01 + 10 | 200 | 1 | 200 | 10 | .0000000 | 0 | 1401-03-01 + 40 | 100 | 2 | 100 | 40 | .0000000 | 2400 | 1401-01-01 + 50 | 400 | 2 | 400 | 50 | .0000000 | 0 | 1401-06-01 + 30 | 600 | 3 | 600 | 30 | .0000000 | 5 | 1401-06-01 + 40 | 700 | 4 | 700 | 40 | .0000000 | 1 | 1401-06-01 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.pn order by ow_sale.pn desc range between 3 preceding and 1 following ); -- mvd 8,1->7; + pn | vn | vn | pn | cn | cn | to_char | prc +-----+----+----+-----+----+----+-------------------+------ + 300 | 30 | 30 | 300 | 1 | 1 | .0000000 | 0 + 400 | 50 | 50 | 400 | 2 | 2 | .0000000 | 0 + 400 | 50 | 50 | 400 | 1 | 1 | .0000000 | 0 + 500 | 30 | 30 | 500 | 1 | 1 | .0000000 | 5 + 500 | 30 | 30 | 500 | 3 | 3 | .0000000 | 5 + 700 | 40 | 40 | 700 | 4 | 4 | .0000000 | 1 + 100 | 20 | 20 | 100 | 1 | 1 | .0000000 | 0 + 100 | 40 | 40 | 100 | 2 | 2 | .0000000 | 2400 + 200 | 10 | 10 | 200 | 1 | 1 | 450.0000000 | 0 + 200 | 40 | 40 | 200 | 3 | 3 | 450.0000000 | 0 + 600 | 30 | 30 | 600 | 3 | 3 | .0000000 | 5 + 800 | 40 | 40 | 800 | 4 | 4 | .0000000 | 1 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.cn desc range between floor(ow_sale.qty) preceding and 3 following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.vn asc); -- mvd 8,6,2->7; 8->9; 8->10; 8,6,2->11; 8->12; + qty | pn | prc | pn | qty | vn | to_char | cn | to_char | to_char | to_char | to_char +------+-----+------+-----+------+----+-------------------+----+-------------------+-------------------+-------------------+------------------- + 1 | 300 | 0 | 300 | 1 | 30 | .0000000 | 1 | 1.0000000 | .0000000 | .0000000 | .4166667 + 1 | 400 | 0 | 400 | 1 | 50 | .5000000 | 1 | 1.0000000 | .0000000 | .0000000 | .4166667 + 12 | 500 | 5 | 500 | 12 | 30 | 2.0000000 | 1 | 1.0000000 | .0000000 | .0000000 | .4166667 + 1 | 100 | 0 | 100 | 1 | 20 | .0000000 | 1 | 1.0000000 | .0000000 | .0000000 | .4166667 + 1 | 200 | 0 | 200 | 1 | 10 | .0000000 | 1 | 1.0000000 | .0000000 | .0000000 | .4166667 + 1100 | 100 | 2400 | 100 | 1100 | 40 | .0000000 | 2 | 6.0000000 | .4545455 | .0000000 | .5833333 + 1 | 400 | 0 | 400 | 1 | 50 | .5000000 | 2 | 6.0000000 | .4545455 | .0000000 | .5833333 + 12 | 500 | 5 | 500 | 12 | 30 | 2.0000000 | 3 | 8.0000000 | .6363636 | .0000000 | .8333333 + 1 | 200 | 0 | 200 | 1 | 40 | .0000000 | 3 | 8.0000000 | .6363636 | .0000000 | .8333333 + 12 | 600 | 5 | 600 | 12 | 30 | .0000000 | 3 | 8.0000000 | .6363636 | .0000000 | .8333333 + 1 | 700 | 1 | 700 | 1 | 40 | .0000000 | 4 | 11.0000000 | .9090909 | .0000000 | 1.0000000 + 1 | 800 | 1 | 800 | 1 | 40 | .0000000 | 4 | 11.0000000 | .9090909 | .0000000 | 1.0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.vn desc range between floor(ow_sale.cn) preceding and unbounded following ); -- mvd 3,4->2; + dt | to_char | prc | vn +------------+-------------------+------+---- + 1401-06-01 | .0000000 | 1 | 40 + 1401-06-01 | .0000000 | 1 | 40 + 1401-06-01 | .0000000 | 0 | 50 + 1401-06-01 | .0000000 | 0 | 50 + 1401-04-01 | .0000000 | 0 | 40 + 1401-05-02 | .0000000 | 0 | 30 + 1401-05-01 | .0000000 | 0 | 20 + 1401-03-01 | .0000000 | 0 | 10 + 1401-06-01 | .0000000 | 5 | 30 + 1401-06-01 | .0000000 | 5 | 30 + 1401-06-01 | .0000000 | 5 | 30 + 1401-01-01 | .0000000 | 2400 | 40 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.dt order by ow_sale.cn asc range between floor(ow_sale.pn) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.cn asc range between floor(ow_sale.pn) preceding and unbounded following ), +win2 as (order by ow_sale.vn desc); -- mvd 3,2->5; 3,2->6; 8->7; + pn | cn | dt | prc | to_char | to_char | to_char | vn +-----+----+------------+------+-------------------+-------------------+-------------------+---- + 400 | 2 | 1401-06-01 | 0 | .0000000 | 400.0000000 | 1.0000000 | 50 + 400 | 1 | 1401-06-01 | 0 | 5000.0000000 | 400.0000000 | 1.0000000 | 50 + 100 | 2 | 1401-01-01 | 2400 | .0000000 | 100.0000000 | 2.0000000 | 40 + 200 | 3 | 1401-04-01 | 0 | .0000000 | 200.0000000 | 2.0000000 | 40 + 800 | 4 | 1401-06-01 | 1 | 5000.0000000 | 700.0000000 | 2.0000000 | 40 + 700 | 4 | 1401-06-01 | 1 | 5000.0000000 | 700.0000000 | 2.0000000 | 40 + 500 | 1 | 1401-06-01 | 5 | 5000.0000000 | 400.0000000 | 3.0000000 | 30 + 300 | 1 | 1401-05-02 | 0 | .0000000 | 300.0000000 | 3.0000000 | 30 + 500 | 3 | 1401-06-01 | 5 | 5000.0000000 | 500.0000000 | 3.0000000 | 30 + 600 | 3 | 1401-06-01 | 5 | 5000.0000000 | 500.0000000 | 3.0000000 | 30 + 100 | 1 | 1401-05-01 | 0 | .0000000 | 100.0000000 | 4.0000000 | 20 + 200 | 1 | 1401-03-01 | 0 | .0000000 | 200.0000000 | 5.0000000 | 10 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.pn asc range between current row and current row ); -- mvd 3,4,5,1->2; + pn | to_char | dt | cn | vn +-----+-------------------+------------+----+---- + 100 | .0000000 | 1401-05-01 | 1 | 20 + 200 | .0000000 | 1401-03-01 | 1 | 10 + 200 | .0000000 | 1401-04-01 | 3 | 40 + 400 | .0000000 | 1401-06-01 | 2 | 50 + 600 | .0000000 | 1401-06-01 | 3 | 30 + 800 | .0000000 | 1401-06-01 | 4 | 40 + 100 | .0000000 | 1401-01-01 | 2 | 40 + 300 | .0000000 | 1401-05-02 | 1 | 30 + 400 | .0000000 | 1401-06-01 | 1 | 50 + 500 | .0000000 | 1401-06-01 | 1 | 30 + 500 | .0000000 | 1401-06-01 | 3 | 30 + 700 | .0000000 | 1401-06-01 | 4 | 40 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.vn) as int),cast (floor(ow_sale.qty*ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win5),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.pn asc range between current row and current row ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.pn desc), +win5 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.vn order by ow_sale.cn desc); -- mvd 5,2,1->4; 5,2,1->6; 1->7; 9->8; 1->10; 9,2,12->11; + pn | vn | vn | to_char | dt | to_char | to_char | to_char | cn | to_char | to_char | qty +-----+----+----+-------------------+------------+-------------------+-------------------+-------------------+----+-------------------+-------------------+------ + 100 | 40 | 40 | .0000000 | 1401-01-01 | 2402.0000000 | 11.0000000 | 6.0000000 | 2 | .0000000 | 1.0000000 | 1100 + 200 | 10 | 10 | .0000000 | 1401-03-01 | 1.0000000 | 9.0000000 | 1.0000000 | 1 | 840.0000000 | 1.0000000 | 1 + 200 | 40 | 40 | .0000000 | 1401-04-01 | 3.0000000 | 9.0000000 | 8.0000000 | 3 | .0000000 | 1.0000000 | 1 + 100 | 20 | 20 | .0000000 | 1401-05-01 | 1.0000000 | 11.0000000 | 1.0000000 | 1 | .0000000 | 1.0000000 | 1 + 300 | 30 | 30 | .0000000 | 1401-05-02 | 1.0000000 | 8.0000000 | 1.0000000 | 1 | .0000000 | 1.0000000 | 1 + 400 | 50 | 50 | .5000000 | 1401-06-01 | 1.0000000 | 6.0000000 | 1.0000000 | 1 | .0000000 | 1.0000000 | 1 + 400 | 50 | 50 | .5000000 | 1401-06-01 | 1.0000000 | 6.0000000 | 6.0000000 | 2 | .0000000 | 1.0000000 | 1 + 500 | 30 | 30 | 2.0000000 | 1401-06-01 | 6.0000000 | 4.0000000 | 1.0000000 | 1 | .0000000 | 1.0000000 | 12 + 500 | 30 | 30 | 2.0000000 | 1401-06-01 | 6.0000000 | 4.0000000 | 8.0000000 | 3 | .0000000 | 1.0000000 | 12 + 600 | 30 | 30 | .0000000 | 1401-06-01 | 8.0000000 | 3.0000000 | 8.0000000 | 3 | .0000000 | 2.0000000 | 12 + 700 | 40 | 40 | .0000000 | 1401-06-01 | 5.0000000 | 2.0000000 | 11.0000000 | 4 | .0000000 | 1.0000000 | 1 + 800 | 40 | 40 | .0000000 | 1401-06-01 | 5.0000000 | 1.0000000 | 11.0000000 | 4 | .0000000 | 2.0000000 | 1 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.pn asc range between current row and 1 following ); -- mvd 5->4; + qty | dt | prc | to_char | pn +------+------------+------+-------------------+----- + 1 | 1401-05-02 | 0 | .0000000 | 300 + 1 | 1401-06-01 | 0 | .5000000 | 400 + 1 | 1401-06-01 | 0 | .5000000 | 400 + 12 | 1401-06-01 | 5 | 288.0000000 | 500 + 12 | 1401-06-01 | 5 | 288.0000000 | 500 + 1 | 1401-06-01 | 1 | .0000000 | 800 + 1 | 1401-05-01 | 0 | 2417800.5000000 | 100 + 1100 | 1401-01-01 | 2400 | 2417800.5000000 | 100 + 1 | 1401-03-01 | 0 | 2.0000000 | 200 + 1 | 1401-04-01 | 0 | 2.0000000 | 200 + 12 | 1401-06-01 | 5 | .0000000 | 600 + 1 | 1401-06-01 | 1 | .0000000 | 700 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(partition by ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.cn order by ow_sale.pn desc range between current row and 3 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(partition by ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.cn order by ow_sale.pn desc range between current row and 3 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.cn order by ow_sale.pn desc range between current row and 3 following ), +win2 as (order by ow_sale.pn desc); -- mvd 3,5,6,2->4; 3,5,6,2->7; 3,5,6,2->8; 3,5,6,2->9; 2->10; 2->11; + prc | pn | cn | to_char | dt | qty | to_char | to_char | to_char | to_char | to_char +------+-----+----+-------------------+------------+------+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | 800 | 4 | .0000000 | 1401-06-01 | 1 | 760.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 700 | 4 | .0000000 | 1401-06-01 | 1 | 660.0000000 | 1.0000000 | 1.0000000 | 2.0000000 | 2.0000000 + 5 | 600 | 3 | .0000000 | 1401-06-01 | 12 | 570.0000000 | 1.0000000 | 1.0000000 | 3.0000000 | 3.0000000 + 5 | 500 | 3 | .0000000 | 1401-06-01 | 12 | 470.0000000 | 1.0000000 | 1.0000000 | 4.0000000 | 4.0000000 + 5 | 500 | 1 | .0000000 | 1401-06-01 | 12 | 470.0000000 | 1.0000000 | 1.0000000 | 4.0000000 | 5.0000000 + 0 | 400 | 2 | .0000000 | 1401-06-01 | 1 | 350.0000000 | 1.0000000 | 1.0000000 | 6.0000000 | 6.0000000 + 0 | 400 | 1 | .0000000 | 1401-06-01 | 1 | 350.0000000 | 1.0000000 | 1.0000000 | 6.0000000 | 7.0000000 + 0 | 300 | 1 | .0000000 | 1401-05-02 | 1 | 270.0000000 | 1.0000000 | 1.0000000 | 8.0000000 | 8.0000000 + 0 | 200 | 1 | .0000000 | 1401-03-01 | 1 | 190.0000000 | 1.0000000 | 1.0000000 | 9.0000000 | 9.0000000 + 0 | 200 | 3 | .0000000 | 1401-04-01 | 1 | 160.0000000 | 1.0000000 | 1.0000000 | 9.0000000 | 10.0000000 + 0 | 100 | 1 | .0000000 | 1401-05-01 | 1 | 80.0000000 | 1.0000000 | 1.0000000 | 11.0000000 | 11.0000000 + 2400 | 100 | 2 | .0000000 | 1401-01-01 | 1100 | 60.0000000 | 1.0000000 | 1.0000000 | 11.0000000 | 12.0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt order by ow_sale.cn desc range between current row and unbounded following ); -- mvd 4,5,6->3; + vn | prc | to_char | cn | dt | qty +----+------+-------------------+----+------------+------ + 40 | 0 | .0000000 | 3 | 1401-04-01 | 1 + 20 | 0 | .0000000 | 1 | 1401-05-01 | 1 + 30 | 5 | .0000000 | 3 | 1401-06-01 | 12 + 30 | 5 | .0000000 | 3 | 1401-06-01 | 12 + 30 | 5 | .0000000 | 1 | 1401-06-01 | 12 + 10 | 0 | .0000000 | 1 | 1401-03-01 | 1 + 30 | 0 | .0000000 | 1 | 1401-05-02 | 1 + 40 | 1 | 27.0000000 | 4 | 1401-06-01 | 1 + 40 | 1 | 27.0000000 | 4 | 1401-06-01 | 1 + 50 | 0 | .0000000 | 2 | 1401-06-01 | 1 + 50 | 0 | .0000000 | 1 | 1401-06-01 | 1 + 40 | 2400 | .0000000 | 2 | 1401-01-01 | 1100 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.pn desc range between floor(ow_sale.pn) following and floor(ow_sale.cn) following ); -- mvd 5,6,3->4; + qty | vn | pn | to_char | prc | dt +------+----+-----+-------------------+------+------------ + 1 | 10 | 200 | .0000000 | 0 | 1401-03-01 + 12 | 30 | 600 | .0000000 | 5 | 1401-06-01 + 1 | 40 | 800 | .0000000 | 1 | 1401-06-01 + 1100 | 40 | 100 | .0000000 | 2400 | 1401-01-01 + 1 | 20 | 100 | .0000000 | 0 | 1401-05-01 + 1 | 40 | 200 | .0000000 | 0 | 1401-04-01 + 1 | 30 | 300 | .0000000 | 0 | 1401-05-02 + 1 | 50 | 400 | .0000000 | 0 | 1401-06-01 + 1 | 50 | 400 | .0000000 | 0 | 1401-06-01 + 12 | 30 | 500 | .0000000 | 5 | 1401-06-01 + 12 | 30 | 500 | .0000000 | 5 | 1401-06-01 + 1 | 40 | 700 | .0000000 | 1 | 1401-06-01 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.pn desc range between 1 following and 4 following ), +win2 as (order by ow_sale.vn desc); -- mvd 4,2,1->5; 7->6; 7->8; + pn | qty | qty | cn | to_char | to_char | vn | to_char +-----+------+------+----+-------------------+-------------------+----+------------------- + 400 | 1 | 1 | 1 | .0000000 | 1.0000000 | 50 | .0000000 + 400 | 1 | 1 | 2 | .0000000 | 1.0000000 | 50 | .0000000 + 200 | 1 | 1 | 3 | .0000000 | 3.0000000 | 40 | .1818182 + 100 | 1100 | 1100 | 2 | .0000000 | 3.0000000 | 40 | .1818182 + 800 | 1 | 1 | 4 | .0000000 | 3.0000000 | 40 | .1818182 + 700 | 1 | 1 | 4 | .0000000 | 3.0000000 | 40 | .1818182 + 300 | 1 | 1 | 1 | .0000000 | 7.0000000 | 30 | .5454545 + 600 | 12 | 12 | 3 | .0000000 | 7.0000000 | 30 | .5454545 + 500 | 12 | 12 | 1 | .0000000 | 7.0000000 | 30 | .5454545 + 500 | 12 | 12 | 3 | .0000000 | 7.0000000 | 30 | .5454545 + 100 | 1 | 1 | 1 | .0000000 | 11.0000000 | 20 | .9090909 + 200 | 1 | 1 | 1 | .0000000 | 12.0000000 | 10 | 1.0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.qty order by ow_sale.pn desc range between 2 following and unbounded following ); -- mvd 6,7,4,2->5; + vn | pn | vn | qty | to_char | dt | cn +----+-----+----+------+-------------------+------------+---- + 10 | 200 | 10 | 1 | .0000000 | 1401-03-01 | 1 + 50 | 400 | 50 | 1 | .0000000 | 1401-06-01 | 2 + 30 | 500 | 30 | 12 | .0000000 | 1401-06-01 | 1 + 30 | 500 | 30 | 12 | .0000000 | 1401-06-01 | 3 + 40 | 800 | 40 | 1 | .0000000 | 1401-06-01 | 4 + 20 | 100 | 20 | 1 | .0000000 | 1401-05-01 | 1 + 40 | 100 | 40 | 1100 | .0000000 | 1401-01-01 | 2 + 40 | 200 | 40 | 1 | .0000000 | 1401-04-01 | 3 + 30 | 300 | 30 | 1 | .0000000 | 1401-05-02 | 1 + 50 | 400 | 50 | 1 | .0000000 | 1401-06-01 | 1 + 30 | 600 | 30 | 12 | .0000000 | 1401-06-01 | 3 + 40 | 700 | 40 | 1 | .0000000 | 1401-06-01 | 4 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc*ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.cn desc range between floor(ow_sale.cn+ow_sale.cn) following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 1,2->4; 1->5; + cn | vn | cn | to_char | to_char +----+----+----+-------------------+------------------- + 2 | 40 | 2 | .0000000 | .0000000 + 1 | 10 | 1 | .0000000 | .0000000 + 3 | 40 | 3 | .0000000 | .0000000 + 1 | 20 | 1 | .0000000 | .0000000 + 1 | 30 | 1 | .0000000 | .0000000 + 1 | 50 | 1 | .0000000 | .0000000 + 2 | 50 | 2 | .0000000 | 60.0000000 + 1 | 30 | 1 | .0000000 | .0000000 + 3 | 30 | 3 | .0000000 | .0000000 + 3 | 30 | 3 | .0000000 | .0000000 + 4 | 40 | 4 | .0000000 | 1.0000000 + 4 | 40 | 4 | .0000000 | .0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn desc rows unbounded preceding ); -- mvd 4,5->3; + pn | dt | to_char | cn | qty +-----+------------+-------------------+----+------ + 200 | 1401-03-01 | .0000000 | 1 | 1 + 200 | 1401-04-01 | 2.0000000 | 3 | 1 + 100 | 1401-05-01 | 1.3333333 | 1 | 1 + 300 | 1401-05-02 | 1.0000000 | 1 | 1 + 400 | 1401-06-01 | .8000000 | 1 | 1 + 400 | 1401-06-01 | .7000000 | 2 | 1 + 700 | 1401-06-01 | 1.4761905 | 4 | 1 + 800 | 1401-06-01 | 1.8392857 | 4 | 1 + 500 | 1401-06-01 | .0000000 | 1 | 12 + 500 | 1401-06-01 | 2.0000000 | 3 | 12 + 600 | 1401-06-01 | 1.3333333 | 3 | 12 + 100 | 1401-01-01 | .0000000 | 2 | 1100 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc*ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows floor(ow_sale.cn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows floor(ow_sale.cn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows floor(ow_sale.cn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn/ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows floor(ow_sale.cn) preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,4,1->2; 3,4,1->5; 3,4,1->6; 3,4,1->7; 3,4,1->8; 10->9; + pn | to_char | dt | vn | to_char | to_char | to_char | to_char | to_char | cn +-----+-------------------+------------+----+-------------------+-------------------+-------------------+-------------------+-------------------+---- + 100 | .0000000 | 1401-01-01 | 40 | 240000.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 | 2 + 200 | .0000000 | 1401-03-01 | 10 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 20.0000000 | 1 + 200 | .0000000 | 1401-04-01 | 40 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 5.0000000 | 3 + 100 | .0000000 | 1401-05-01 | 20 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 5.0000000 | 1 + 300 | .0000000 | 1401-05-02 | 30 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 10.0000000 | 1 + 400 | .0000000 | 1401-06-01 | 50 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 8.0000000 | 1 + 400 | .0000000 | 1401-06-01 | 50 | .0000000 | 2.0000000 | 2.0000000 | 2.0000000 | 8.0000000 | 2 + 500 | .0000000 | 1401-06-01 | 30 | 2500.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 | 1 + 500 | .0000000 | 1401-06-01 | 30 | 2500.0000000 | 2.0000000 | 2.0000000 | 2.0000000 | .0000000 | 3 + 600 | .0000000 | 1401-06-01 | 30 | 3000.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 | 3 + 700 | .0000000 | 1401-06-01 | 40 | 700.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 20.0000000 | 4 + 800 | .0000000 | 1401-06-01 | 40 | 800.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 | 4 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc,ow_sale.pn desc rows current row ); -- mvd 4,5,6,1->3; + pn | dt | to_char | prc | cn | vn +-----+------------+-------------------+------+----+---- + 200 | 1401-03-01 | .0000000 | 0 | 1 | 10 + 100 | 1401-05-01 | .0000000 | 0 | 1 | 20 + 400 | 1401-06-01 | .0000000 | 0 | 2 | 50 + 200 | 1401-04-01 | .0000000 | 0 | 3 | 40 + 800 | 1401-06-01 | .0000000 | 1 | 4 | 40 + 600 | 1401-06-01 | .0000000 | 5 | 3 | 30 + 300 | 1401-05-02 | .0000000 | 0 | 1 | 30 + 400 | 1401-06-01 | .0000000 | 0 | 1 | 50 + 700 | 1401-06-01 | .0000000 | 1 | 4 | 40 + 500 | 1401-06-01 | .0000000 | 5 | 1 | 30 + 500 | 1401-06-01 | .0000000 | 5 | 3 | 30 + 100 | 1401-01-01 | .0000000 | 2400 | 2 | 40 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.qty, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.dt order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.dt,ow_sale.dt order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows current row ), +win2 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.cn desc), +win3 as (order by ow_sale.cn asc); -- mvd 6,7,2,8->5; 7,2->9; 7,2->10; 7->11; 7,2->12; + vn | dt | vn | vn | to_char | prc | cn | qty | to_char | to_char | to_char | to_char +----+------------+----+----+-------------------+------+----+------+-------------------+-------------------+-------------------+------------------- + 10 | 1401-03-01 | 10 | 10 | .0000000 | 0 | 1 | 1 | 1.0000000 | 200.0000000 | 1.0000000 | 1.0000000 + 30 | 1401-05-02 | 30 | 30 | .0000000 | 0 | 1 | 1 | 1.0000000 | 300.0000000 | 2.0000000 | 1.0000000 + 30 | 1401-06-01 | 30 | 30 | .0000000 | 5 | 1 | 12 | 6.0000000 | 800.0000000 | 3.0000000 | 1.0000000 + 50 | 1401-06-01 | 50 | 50 | .0000000 | 0 | 1 | 1 | 7.0000000 | 800.0000000 | 4.0000000 | 1.0000000 + 20 | 1401-05-01 | 20 | 20 | .0000000 | 0 | 1 | 1 | 1.0000000 | 100.0000000 | 5.0000000 | 1.0000000 + 40 | 1401-01-01 | 40 | 40 | .0000000 | 2400 | 2 | 1100 | 1.0000000 | 100.0000000 | 6.0000000 | 1.0000000 + 50 | 1401-06-01 | 50 | 50 | .0000000 | 0 | 2 | 1 | 5.0000000 | 800.0000000 | 7.0000000 | .7142857 + 30 | 1401-06-01 | 30 | 30 | .0000000 | 5 | 3 | 12 | 3.0000000 | 800.0000000 | 8.0000000 | .5714286 + 30 | 1401-06-01 | 30 | 30 | .0000000 | 5 | 3 | 12 | 4.0000000 | 800.0000000 | 9.0000000 | .5714286 + 40 | 1401-04-01 | 40 | 40 | .0000000 | 0 | 3 | 1 | 1.0000000 | 200.0000000 | 10.0000000 | 1.0000000 + 40 | 1401-06-01 | 40 | 40 | .0000000 | 1 | 4 | 1 | 1.0000000 | 800.0000000 | 11.0000000 | .2857143 + 40 | 1401-06-01 | 40 | 40 | .0000000 | 1 | 4 | 1 | 2.0000000 | 800.0000000 | 12.0000000 | .2857143 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.cn desc rows between unbounded preceding and 2 preceding ); -- mvd 8,1,3->7; + vn | qty | pn | qty | vn | prc | to_char | cn +----+------+-----+------+----+------+-------------------+---- + 30 | 1 | 300 | 1 | 30 | 0 | .0000000 | 1 + 50 | 1 | 400 | 1 | 50 | 0 | .0000000 | 1 + 50 | 1 | 400 | 1 | 50 | 0 | .0000000 | 2 + 30 | 12 | 500 | 12 | 30 | 5 | .0000000 | 1 + 30 | 12 | 500 | 12 | 30 | 5 | .0000000 | 3 + 40 | 1 | 800 | 1 | 40 | 1 | .0000000 | 4 + 40 | 1100 | 100 | 1100 | 40 | 2400 | .0000000 | 2 + 20 | 1 | 100 | 1 | 20 | 0 | .0000000 | 1 + 10 | 1 | 200 | 1 | 10 | 0 | .0000000 | 1 + 40 | 1 | 200 | 1 | 40 | 0 | .0000000 | 3 + 30 | 12 | 600 | 12 | 30 | 5 | .0000000 | 3 + 40 | 1 | 700 | 1 | 40 | 1 | .0000000 | 4 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.qty order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.pn) preceding ), +win2 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.qty order by ow_sale.cn asc), +win3 as (order by ow_sale.pn asc); -- mvd 4,6->5; 4,6->7; 1,4,9,6->8; 1,4,9,6->10; 2->11; + prc | pn | prc | cn | to_char | vn | to_char | to_char | qty | to_char | to_char +------+-----+------+----+-------------------+----+-------------------+-------------------+------+-------------------+------------------- + 0 | 100 | 0 | 1 | .0000000 | 20 | .0000000 | 1.0000000 | 1 | .0000000 | 1.0000000 + 2400 | 100 | 2400 | 2 | .0000000 | 40 | .0000000 | 1.0000000 | 1100 | .0000000 | 2.0000000 + 0 | 200 | 0 | 3 | .0000000 | 40 | .0000000 | 1.0000000 | 1 | .0000000 | 3.0000000 + 0 | 200 | 0 | 1 | .0000000 | 10 | .0000000 | 1.0000000 | 1 | .0000000 | 4.0000000 + 0 | 300 | 0 | 1 | .0000000 | 30 | .0000000 | 1.0000000 | 1 | .0000000 | 5.0000000 + 0 | 400 | 0 | 1 | .0000000 | 50 | .0000000 | 1.0000000 | 1 | .0000000 | 6.0000000 + 0 | 400 | 0 | 2 | .0000000 | 50 | .0000000 | 2.0000000 | 1 | .0000000 | 7.0000000 + 5 | 500 | 5 | 1 | .0000000 | 30 | .0000000 | 1.0000000 | 12 | .0000000 | 8.0000000 + 5 | 500 | 5 | 3 | .0000000 | 30 | .0000000 | 2.0000000 | 12 | .0000000 | 9.0000000 + 5 | 600 | 5 | 3 | .0000000 | 30 | .0000000 | 2.0000000 | 12 | .0000000 | 10.0000000 + 1 | 700 | 1 | 4 | .0000000 | 40 | .0000000 | 1.0000000 | 1 | .0000000 | 11.0000000 + 1 | 800 | 1 | 4 | .0000000 | 40 | .0000000 | 1.0000000 | 1 | .0000000 | 12.0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc,ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 1->2; + cn | to_char +----+------------------- + 1 | .0000000 + 1 | 50.0000000 + 1 | 100.0000000 + 1 | 291.6666667 + 1 | 220.0000000 + 3 | .0000000 + 3 | 50.0000000 + 3 | 33.3333333 + 2 | .0000000 + 2 | 50.0000000 + 4 | .0000000 + 4 | .0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.vn,ow_sale.dt order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.cn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.vn desc), +win3 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.pn desc), +win4 as (order by ow_sale.cn asc); -- mvd 3,6,1->5; 6,8->7; 6,8->9; 11,6,3,1->10; 3->12; + pn | qty | cn | qty | to_char | dt | to_char | vn | to_char | to_char | prc | to_char +-----+------+----+------+-------------------+------------+-------------------+----+-------------------+-------------------+------+------------------- + 100 | 1 | 1 | 1 | .0000000 | 1401-05-01 | 1.0000000 | 20 | 1.0000000 | .0000000 | 0 | .4166667 + 400 | 1 | 1 | 1 | .0000000 | 1401-06-01 | 2.0000000 | 50 | 1.0000000 | .0000000 | 0 | .4166667 + 200 | 1 | 1 | 1 | .0000000 | 1401-03-01 | 1.0000000 | 10 | 1.0000000 | .0000000 | 0 | .4166667 + 300 | 1 | 1 | 1 | .0000000 | 1401-05-02 | 1.0000000 | 30 | 1.0000000 | .0000000 | 0 | .4166667 + 500 | 12 | 1 | 12 | 60.5000000 | 1401-06-01 | 3.0000000 | 30 | 1.0000000 | .0000000 | 5 | .4166667 + 100 | 1100 | 2 | 1100 | .0000000 | 1401-01-01 | 1.0000000 | 40 | 1.0000000 | .0000000 | 2400 | .5833333 + 400 | 1 | 2 | 1 | .0000000 | 1401-06-01 | 1.0000000 | 50 | 1.0000000 | .0000000 | 0 | .5833333 + 200 | 1 | 3 | 1 | .0000000 | 1401-04-01 | 1.0000000 | 40 | 1.0000000 | .0000000 | 0 | .8333333 + 600 | 12 | 3 | 12 | .0000000 | 1401-06-01 | 1.0000000 | 30 | 1.0000000 | .0000000 | 5 | .8333333 + 500 | 12 | 3 | 12 | .0000000 | 1401-06-01 | 2.0000000 | 30 | 1.0000000 | 1.0000000 | 5 | .8333333 + 700 | 1 | 4 | 1 | .0000000 | 1401-06-01 | 1.0000000 | 40 | 1.0000000 | 1.0000000 | 1 | 1.0000000 + 800 | 1 | 4 | 1 | .0000000 | 1401-06-01 | 2.0000000 | 40 | 1.0000000 | .0000000 | 1 | 1.0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.pn) following ); -- mvd 1,3,4,5,6,7->2; + prc | to_char | cn | dt | vn | qty | pn +------+-------------------+----+------------+----+------+----- + 0 | .0000000 | 1 | 1401-05-01 | 20 | 1 | 100 + 0 | .0000000 | 3 | 1401-04-01 | 40 | 1 | 200 + 0 | .0000000 | 1 | 1401-05-02 | 30 | 1 | 300 + 0 | .0000000 | 1 | 1401-06-01 | 50 | 1 | 400 + 0 | .0000000 | 2 | 1401-06-01 | 50 | 1 | 400 + 5 | .0000000 | 3 | 1401-06-01 | 30 | 12 | 600 + 1 | .0000000 | 4 | 1401-06-01 | 40 | 1 | 700 + 2400 | .0000000 | 2 | 1401-01-01 | 40 | 1100 | 100 + 0 | .0000000 | 1 | 1401-03-01 | 10 | 1 | 200 + 5 | .0000000 | 1 | 1401-06-01 | 30 | 12 | 500 + 5 | .0000000 | 3 | 1401-06-01 | 30 | 12 | 500 + 1 | .0000000 | 4 | 1401-06-01 | 40 | 1 | 800 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and 3 following ), +win2 as (partition by ow_sale.qty,ow_sale.prc order by ow_sale.vn asc); -- mvd 1,3,4->2; 6,3,1->5; 6,3,1->7; + qty | to_char | vn | pn | to_char | prc | to_char +------+-------------------+----+-----+-------------------+------+------------------- + 1 | .0000000 | 10 | 200 | .0000000 | 0 | 1.0000000 + 1 | .0000000 | 20 | 100 | .2000000 | 0 | 2.0000000 + 12 | .0000000 | 30 | 500 | .0000000 | 5 | 1.0000000 + 12 | .0000000 | 30 | 500 | .0000000 | 5 | 1.0000000 + 1 | .0000000 | 40 | 200 | .6000000 | 0 | 4.0000000 + 1 | .0000000 | 40 | 700 | .0000000 | 1 | 1.0000000 + 1 | .0000000 | 30 | 300 | .4000000 | 0 | 3.0000000 + 12 | .0000000 | 30 | 600 | .0000000 | 5 | 1.0000000 + 1 | .0000000 | 40 | 800 | .0000000 | 1 | 1.0000000 + 1100 | .0000000 | 40 | 100 | .0000000 | 2400 | 1.0000000 + 1 | .0000000 | 50 | 400 | .8000000 | 0 | 5.0000000 + 1 | .0000000 | 50 | 400 | .8000000 | 0 | 5.0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows between unbounded preceding and unbounded following ); -- mvd 3,4,5->2; + cn | to_char | dt | vn | pn +----+-------------------+------------+----+----- + 1 | .0000000 | 1401-03-01 | 10 | 200 + 1 | .0000000 | 1401-05-02 | 30 | 300 + 1 | 3333.3333333 | 1401-06-01 | 30 | 500 + 3 | 3333.3333333 | 1401-06-01 | 30 | 500 + 3 | 3333.3333333 | 1401-06-01 | 30 | 600 + 4 | 5000.0000000 | 1401-06-01 | 40 | 700 + 4 | 5000.0000000 | 1401-06-01 | 40 | 800 + 1 | .0000000 | 1401-06-01 | 50 | 400 + 2 | .0000000 | 1401-06-01 | 50 | 400 + 2 | .0000000 | 1401-01-01 | 40 | 100 + 3 | .0000000 | 1401-04-01 | 40 | 200 + 1 | .0000000 | 1401-05-01 | 20 | 100 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.vn desc); -- mvd 5,6,1,3->4; 5,6,1,3->7; 9->8; + qty | prc | pn | to_char | dt | cn | to_char | to_char | vn +------+------+-----+-------------------+------------+----+-------------------+-------------------+---- + 1 | 0 | 400 | .0000000 | 1401-06-01 | 2 | 1.0000000 | 1.0000000 | 50 + 1 | 0 | 400 | .0000000 | 1401-06-01 | 1 | 1.0000000 | 1.0000000 | 50 + 1 | 0 | 200 | .0000000 | 1401-04-01 | 3 | 1.0000000 | 3.0000000 | 40 + 1 | 1 | 700 | .0000000 | 1401-06-01 | 4 | .0000000 | 3.0000000 | 40 + 1100 | 2400 | 100 | .0000000 | 1401-01-01 | 2 | -1300.0000000 | 3.0000000 | 40 + 1 | 1 | 800 | .0000000 | 1401-06-01 | 4 | .0000000 | 3.0000000 | 40 + 12 | 5 | 500 | .0000000 | 1401-06-01 | 1 | 7.0000000 | 7.0000000 | 30 + 12 | 5 | 500 | .0000000 | 1401-06-01 | 3 | 7.0000000 | 7.0000000 | 30 + 1 | 0 | 300 | .0000000 | 1401-05-02 | 1 | 1.0000000 | 7.0000000 | 30 + 12 | 5 | 600 | .0000000 | 1401-06-01 | 3 | 7.0000000 | 7.0000000 | 30 + 1 | 0 | 100 | .0000000 | 1401-05-01 | 1 | 1.0000000 | 11.0000000 | 20 + 1 | 0 | 200 | .0000000 | 1401-03-01 | 1 | 1.0000000 | 12.0000000 | 10 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc rows between 2 preceding and 5 preceding ); -- mvd 1,6,3,4->5; + cn | cn | vn | pn | to_char | dt +----+----+----+-----+-------------------+------------ + 1 | 1 | 10 | 200 | .0000000 | 1401-03-01 + 3 | 3 | 40 | 200 | .0000000 | 1401-04-01 + 1 | 1 | 20 | 100 | .0000000 | 1401-05-01 + 3 | 3 | 30 | 600 | .0000000 | 1401-06-01 + 4 | 4 | 40 | 800 | .0000000 | 1401-06-01 + 2 | 2 | 50 | 400 | .0000000 | 1401-06-01 + 2 | 2 | 40 | 100 | .0000000 | 1401-01-01 + 1 | 1 | 30 | 300 | .0000000 | 1401-05-02 + 1 | 1 | 30 | 500 | .0000000 | 1401-06-01 + 3 | 3 | 30 | 500 | .0000000 | 1401-06-01 + 4 | 4 | 40 | 700 | .0000000 | 1401-06-01 + 1 | 1 | 50 | 400 | .0000000 | 1401-06-01 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.qty/ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.pn asc rows between floor(ow_sale.qty) preceding and 4 preceding ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.vn desc), +win4 as (partition by ow_sale.prc,ow_sale.qty order by ow_sale.cn desc); -- mvd 1,4,2,5->3; 1,4,2,5->6; 1->7; 9,4->8; 9,1,2->10; + cn | qty | to_char | vn | pn | to_char | to_char | to_char | prc | to_char +----+------+-------------------+----+-----+-------------------+-------------------+-------------------+------+------------------- + 4 | 1 | .0000000 | 40 | 700 | .0000000 | 1.0000000 | .0000000 | 1 | 1.0000000 + 4 | 1 | .0000000 | 40 | 800 | .0000000 | 1.0000000 | 1.0000000 | 1 | 1.0000000 + 3 | 12 | .0000000 | 30 | 600 | .0000000 | 3.0000000 | 5.0000000 | 5 | .6666667 + 3 | 1 | .0000000 | 40 | 200 | .0000000 | 3.0000000 | .0000000 | 0 | .1666667 + 3 | 12 | .0000000 | 30 | 500 | .0000000 | 3.0000000 | 5.0000000 | 5 | .6666667 + 2 | 1100 | .0000000 | 40 | 100 | .0000000 | 6.0000000 | .0000000 | 2400 | 1.0000000 + 2 | 1 | .0000000 | 50 | 400 | .0000000 | 6.0000000 | .0000000 | 0 | .3333333 + 1 | 1 | .0000000 | 30 | 300 | .0000000 | 8.0000000 | .0000000 | 0 | 1.0000000 + 1 | 1 | .0000000 | 50 | 400 | .0000000 | 8.0000000 | .0000000 | 0 | 1.0000000 + 1 | 1 | .0000000 | 20 | 100 | .0000000 | 8.0000000 | .0000000 | 0 | 1.0000000 + 1 | 1 | .0000000 | 10 | 200 | .0000000 | 8.0000000 | .0000000 | 0 | 1.0000000 + 1 | 12 | .0000000 | 30 | 500 | .0000000 | 8.0000000 | .0000000 | 5 | 1.0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.vn desc rows between floor(ow_sale.qty) preceding and current row ); -- mvd 1,3,4->2; + cn | to_char | vn | qty +----+-------------------+----+------ + 1 | .0000000 | 30 | 12 + 2 | .0000000 | 50 | 1 + 3 | .0000000 | 30 | 12 + 3 | 5000.0000000 | 30 | 12 + 4 | .0000000 | 40 | 1 + 4 | 5000.0000000 | 40 | 1 + 1 | .0000000 | 10 | 1 + 1 | 5000.0000000 | 20 | 1 + 1 | 20000.0000000 | 30 | 1 + 1 | 5000.0000000 | 50 | 1 + 2 | .0000000 | 40 | 1100 + 3 | .0000000 | 40 | 1 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.pn*ow_sale.qty) preceding and 3 following ); -- mvd 5,2,7->6; + cn | dt | cn | cn | prc | to_char | pn +----+------------+----+----+------+-------------------+----- + 1 | 1401-03-01 | 1 | 1 | 0 | .0000000 | 200 + 1 | 1401-05-02 | 1 | 1 | 0 | .0000000 | 300 + 1 | 1401-06-01 | 1 | 1 | 0 | .0000000 | 400 + 2 | 1401-06-01 | 2 | 2 | 0 | .0000000 | 400 + 1 | 1401-06-01 | 1 | 1 | 5 | 3333.3333333 | 500 + 3 | 1401-06-01 | 3 | 3 | 5 | 3333.3333333 | 500 + 3 | 1401-06-01 | 3 | 3 | 5 | 3333.3333333 | 600 + 3 | 1401-04-01 | 3 | 3 | 0 | .0000000 | 200 + 1 | 1401-05-01 | 1 | 1 | 0 | .0000000 | 100 + 4 | 1401-06-01 | 4 | 4 | 1 | 5000.0000000 | 700 + 4 | 1401-06-01 | 4 | 4 | 1 | 5000.0000000 | 800 + 2 | 1401-01-01 | 2 | 2 | 2400 | .0000000 | 100 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.qty*ow_sale.qty) preceding and floor(ow_sale.vn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.qty*ow_sale.qty) preceding and floor(ow_sale.vn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.qty*ow_sale.qty) preceding and floor(ow_sale.vn) following ), +win2 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,4,5,1->2; 1->6; 3,4,5,1->7; 1->8; 3,4,5,1->9; + pn | to_char | prc | dt | vn | to_char | to_char | to_char | to_char +-----+-------------------+------+------------+----+-------------------+-------------------+-------------------+------------------- + 100 | .0000000 | 2400 | 1401-01-01 | 40 | .0000000 | 1.0000000 | .0833333 | 1.0000000 + 200 | .0000000 | 0 | 1401-03-01 | 10 | .0000000 | 1.0000000 | .1666667 | 1.0000000 + 200 | .0000000 | 0 | 1401-04-01 | 40 | .0000000 | 1.0000000 | .2500000 | 1.0000000 + 100 | .0000000 | 0 | 1401-05-01 | 20 | .0000000 | 1.0000000 | .3333333 | 1.0000000 + 300 | .0000000 | 0 | 1401-05-02 | 30 | .0000000 | 1.0000000 | .4166667 | 1.0000000 + 400 | .0000000 | 0 | 1401-06-01 | 50 | .0000000 | 2.0000000 | .5000000 | 2.0000000 + 400 | .0000000 | 0 | 1401-06-01 | 50 | .0000000 | 2.0000000 | .5833333 | 2.0000000 + 500 | .0000000 | 5 | 1401-06-01 | 30 | .0000000 | 2.0000000 | .6666667 | 2.0000000 + 500 | .0000000 | 5 | 1401-06-01 | 30 | .0000000 | 2.0000000 | .7500000 | 2.0000000 + 600 | .0000000 | 5 | 1401-06-01 | 30 | .0000000 | 1.0000000 | .8333333 | 1.0000000 + 700 | .0000000 | 1 | 1401-06-01 | 40 | 5.0000000 | 1.0000000 | .9166667 | 1.0000000 + 800 | .0000000 | 1 | 1401-06-01 | 40 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between 0 preceding and unbounded following ); -- mvd 7,5,3->6; + dt | prc | pn | dt | vn | to_char | cn +------------+------+-----+------------+----+-------------------+---- + 1401-05-02 | 0 | 300 | 1401-05-02 | 30 | .0000000 | 1 + 1401-06-01 | 0 | 400 | 1401-06-01 | 50 | .0000000 | 1 + 1401-06-01 | 0 | 400 | 1401-06-01 | 50 | .0000000 | 2 + 1401-06-01 | 5 | 500 | 1401-06-01 | 30 | .0000000 | 1 + 1401-06-01 | 5 | 500 | 1401-06-01 | 30 | .0000000 | 3 + 1401-06-01 | 1 | 800 | 1401-06-01 | 40 | .0000000 | 4 + 1401-01-01 | 2400 | 100 | 1401-01-01 | 40 | 603900.5000000 | 2 + 1401-05-01 | 0 | 100 | 1401-05-01 | 20 | .0000000 | 1 + 1401-03-01 | 0 | 200 | 1401-03-01 | 10 | .0000000 | 1 + 1401-04-01 | 0 | 200 | 1401-04-01 | 40 | .0000000 | 3 + 1401-06-01 | 5 | 600 | 1401-06-01 | 30 | .0000000 | 3 + 1401-06-01 | 1 | 700 | 1401-06-01 | 40 | .0000000 | 4 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.pn asc rows between floor(ow_sale.vn/ow_sale.qty) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc/ow_sale.qty) as int),cast (floor(ow_sale.prc+ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.pn asc rows between floor(ow_sale.vn/ow_sale.qty) preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc); -- mvd 1,4->3; 1,4->5; 1,4->6; 1,4->7; 9,4->8; 1,4->10; + qty | qty | to_char | pn | to_char | to_char | to_char | to_char | vn | to_char +------+------+-------------------+-----+-------------------+-------------------+-------------------+-------------------+----+------------------- + 1 | 1 | .0000000 | 100 | 100.0000000 | 20.0000000 | .0000000 | .0000000 | 20 | 1.0000000 + 1 | 1 | .0000000 | 200 | 200.0000000 | 10.0000000 | .0000000 | .0000000 | 10 | 1.0000000 + 1 | 1 | .0000000 | 200 | 200.0000000 | 10.0000000 | .0000000 | .0000000 | 40 | 1.0000000 + 12 | 12 | .0000000 | 500 | 500.0000000 | 30.0000000 | 5.0000000 | .0000000 | 30 | 12.0000000 + 12 | 12 | .0000000 | 500 | 500.0000000 | 30.0000000 | 5.0000000 | .0000000 | 30 | 12.0000000 + 1 | 1 | .0000000 | 700 | 700.0000000 | 40.0000000 | 1.0000000 | .0000000 | 40 | 1.0000000 + 1100 | 1100 | .0000000 | 100 | 100.0000000 | 40.0000000 | 2400.0000000 | .0000000 | 40 | 1100.0000000 + 1 | 1 | .0000000 | 300 | 300.0000000 | 30.0000000 | .0000000 | .0000000 | 30 | 1.0000000 + 1 | 1 | .0000000 | 400 | 400.0000000 | 50.0000000 | .0000000 | .0000000 | 50 | 1.0000000 + 1 | 1 | .0000000 | 400 | 400.0000000 | 50.0000000 | .0000000 | .0000000 | 50 | 1.0000000 + 12 | 12 | .0000000 | 600 | 600.0000000 | 30.0000000 | 5.0000000 | .0000000 | 30 | 12.0000000 + 1 | 1 | .0000000 | 800 | 800.0000000 | 40.0000000 | 1.0000000 | .0000000 | 40 | 1.0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between current row and current row ); -- mvd 5,6,7,2,8->4; + pn | vn | pn | to_char | prc | cn | dt | qty +-----+----+-----+-------------------+------+----+------------+------ + 200 | 10 | 200 | .0000000 | 0 | 1 | 1401-03-01 | 1 + 300 | 30 | 300 | .0000000 | 0 | 1 | 1401-05-02 | 1 + 400 | 50 | 400 | .0000000 | 0 | 1 | 1401-06-01 | 1 + 700 | 40 | 700 | .0000000 | 1 | 4 | 1401-06-01 | 1 + 800 | 40 | 800 | .0000000 | 1 | 4 | 1401-06-01 | 1 + 200 | 40 | 200 | .0000000 | 0 | 3 | 1401-04-01 | 1 + 100 | 20 | 100 | .0000000 | 0 | 1 | 1401-05-01 | 1 + 400 | 50 | 400 | .0000000 | 0 | 2 | 1401-06-01 | 1 + 500 | 30 | 500 | .0000000 | 5 | 1 | 1401-06-01 | 12 + 500 | 30 | 500 | .0000000 | 5 | 3 | 1401-06-01 | 12 + 600 | 30 | 600 | .0000000 | 5 | 3 | 1401-06-01 | 12 + 100 | 40 | 100 | .0000000 | 2400 | 2 | 1401-01-01 | 1100 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc rows between current row and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc rows between current row and current row ), +win2 as (order by ow_sale.vn asc); -- mvd 4,2,1->3; 6->5; 6->7; 6->8; 6->9; 4,2,1->10; + pn | cn | to_char | prc | to_char | vn | to_char | to_char | to_char | to_char +-----+----+-------------------+------+-------------------+----+-------------------+-------------------+-------------------+------------------- + 200 | 1 | .0000000 | 0 | .0833333 | 10 | .0833333 | .0833333 | .0833333 | 1.0000000 + 100 | 1 | .0000000 | 0 | .1666667 | 20 | .1666667 | .1666667 | .1666667 | 1.0000000 + 600 | 3 | .0000000 | 5 | .5000000 | 30 | .5000000 | .5000000 | .5000000 | 1.0000000 + 300 | 1 | .0000000 | 0 | .5000000 | 30 | .5000000 | .5000000 | .5000000 | 1.0000000 + 500 | 1 | .0000000 | 5 | .5000000 | 30 | .5000000 | .5000000 | .5000000 | 1.0000000 + 500 | 3 | .0000000 | 5 | .5000000 | 30 | .5000000 | .5000000 | .5000000 | 1.0000000 + 100 | 2 | .0000000 | 2400 | .8333333 | 40 | .8333333 | .8333333 | .8333333 | 1.0000000 + 800 | 4 | .0000000 | 1 | .8333333 | 40 | .8333333 | .8333333 | .8333333 | 1.0000000 + 200 | 3 | .0000000 | 0 | .8333333 | 40 | .8333333 | .8333333 | .8333333 | 1.0000000 + 700 | 4 | .0000000 | 1 | .8333333 | 40 | .8333333 | .8333333 | .8333333 | 1.0000000 + 400 | 2 | .0000000 | 0 | 1.0000000 | 50 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 400 | 1 | .0000000 | 0 | 1.0000000 | 50 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn+ow_sale.cn)) OVER(partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows between current row and 0 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows between current row and 0 following ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.pn asc); -- mvd 2,1->6; 2,1->7; 2,3,1->8; + pn | cn | vn | cn | qty | to_char | to_char | to_char +-----+----+----+----+------+-------------------+-------------------+------------------- + 200 | 1 | 10 | 1 | 1 | .0000000 | 201.0000000 | 1.0000000 + 100 | 1 | 20 | 1 | 1 | .0000000 | 101.0000000 | 1.0000000 + 300 | 1 | 30 | 1 | 1 | .0000000 | 301.0000000 | 1.0000000 + 400 | 1 | 50 | 1 | 1 | .0000000 | 401.0000000 | 1.0000000 + 500 | 1 | 30 | 1 | 12 | .0000000 | 501.0000000 | 1.0000000 + 200 | 3 | 40 | 3 | 1 | .0000000 | 203.0000000 | 1.0000000 + 500 | 3 | 30 | 3 | 12 | .0000000 | 503.0000000 | 1.0000000 + 600 | 3 | 30 | 3 | 12 | .0000000 | 603.0000000 | 1.0000000 + 100 | 2 | 40 | 2 | 1100 | .0000000 | 102.0000000 | 1.0000000 + 400 | 2 | 50 | 2 | 1 | .0000000 | 402.0000000 | 1.0000000 + 700 | 4 | 40 | 4 | 1 | .0000000 | 704.0000000 | 1.0000000 + 800 | 4 | 40 | 4 | 1 | .0000000 | 804.0000000 | 1.0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc,ow_sale.pn asc rows between current row and unbounded following ); -- mvd 6,3,2,1,7->5; + vn | dt | cn | dt | to_char | prc | pn +----+------------+----+------------+-------------------+------+----- + 20 | 1401-05-01 | 1 | 1401-05-01 | .0000000 | 0 | 100 + 40 | 1401-04-01 | 3 | 1401-04-01 | .0000000 | 0 | 200 + 50 | 1401-06-01 | 2 | 1401-06-01 | .0000000 | 0 | 400 + 10 | 1401-03-01 | 1 | 1401-03-01 | .0000000 | 0 | 200 + 30 | 1401-05-02 | 1 | 1401-05-02 | .0000000 | 0 | 300 + 50 | 1401-06-01 | 1 | 1401-06-01 | .0000000 | 0 | 400 + 40 | 1401-06-01 | 4 | 1401-06-01 | .0000000 | 1 | 700 + 40 | 1401-06-01 | 4 | 1401-06-01 | .0000000 | 1 | 800 + 30 | 1401-06-01 | 1 | 1401-06-01 | .0000000 | 5 | 500 + 30 | 1401-06-01 | 3 | 1401-06-01 | .0000000 | 5 | 500 + 30 | 1401-06-01 | 3 | 1401-06-01 | .0000000 | 5 | 600 + 40 | 1401-01-01 | 2 | 1401-01-01 | .0000000 | 2400 | 100 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty/ow_sale.qty) as int),cast (floor(ow_sale.prc+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between current row and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 4,2,1->5; 4,2,1->6; 4,2,1->7; 9,4,1->8; 4->10; + pn | vn | pn | cn | to_char | to_char | to_char | to_char | dt | to_char +-----+----+-----+----+-------------------+-------------------+-------------------+-------------------+------------+------------------- + 100 | 40 | 100 | 2 | 681716.9166667 | 4.0000000 | 4.0000000 | 1.0000000 | 1401-01-01 | .0000000 + 200 | 10 | 200 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1401-03-01 | 1.0000000 + 200 | 40 | 200 | 3 | 103333.3333333 | 3.0000000 | 3.0000000 | 1.0000000 | 1401-04-01 | .0000000 + 100 | 20 | 100 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1401-05-01 | 1.0000000 + 300 | 30 | 300 | 1 | 14580.2500000 | 4.0000000 | 4.0000000 | 1.0000000 | 1401-05-02 | 1.0000000 + 400 | 50 | 400 | 1 | .0000000 | 2.0000000 | 2.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 400 | 50 | 400 | 2 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 500 | 30 | 500 | 1 | 3333.3333333 | 3.0000000 | 3.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 500 | 30 | 500 | 3 | 5000.0000000 | 2.0000000 | 2.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 600 | 30 | 600 | 3 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 700 | 40 | 700 | 4 | 5000.0000000 | 2.0000000 | 2.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 + 800 | 40 | 800 | 4 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows between 1 following and 4 following ); -- mvd 1,2,3->5; + prc | cn | pn | qty | to_char +------+----+-----+------+------------------- + 0 | 1 | 100 | 1 | .0000000 + 0 | 1 | 200 | 1 | .0000000 + 0 | 3 | 200 | 1 | .0000000 + 0 | 2 | 400 | 1 | .0000000 + 5 | 3 | 600 | 12 | .0000000 + 1 | 4 | 700 | 1 | .0000000 + 2400 | 2 | 100 | 1100 | .0000000 + 0 | 1 | 300 | 1 | .0000000 + 0 | 1 | 400 | 1 | .0000000 + 5 | 1 | 500 | 12 | .0000000 + 5 | 3 | 500 | 12 | .0000000 + 1 | 4 | 800 | 1 | .0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.cn) as int),cast (floor(ow_sale.vn/ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn-ow_sale.pn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc rows between 0 following and floor(ow_sale.qty/ow_sale.pn) following ), +win2 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 2,5->4; 7,8,5->6; 8->9; 8->10; + dt | qty | prc | to_char | pn | to_char | cn | vn | to_char | to_char +------------+------+------+-------------------+-----+-------------------+----+----+-------------------+------------------- + 1401-01-01 | 1100 | 2400 | .0000000 | 100 | 1.0000000 | 2 | 40 | .0000000 | 1.0000000 + 1401-03-01 | 1 | 0 | .0000000 | 200 | 1.0000000 | 1 | 10 | 38.0000000 | 2.0000000 + 1401-04-01 | 1 | 0 | .0000000 | 200 | 1.0000000 | 3 | 40 | 9.0000000 | 3.0000000 + 1401-05-01 | 1 | 0 | .0000000 | 100 | 1.0000000 | 1 | 20 | 37.0000000 | 4.0000000 + 1401-05-02 | 1 | 0 | .0000000 | 300 | 2.0000000 | 1 | 30 | 19.0000000 | 5.0000000 + 1401-06-01 | 1 | 0 | .0000000 | 400 | 1.0000000 | 1 | 50 | 29.0000000 | 6.0000000 + 1401-06-01 | 1 | 0 | .0000000 | 400 | 1.0000000 | 2 | 50 | 49.0000000 | 7.0000000 + 1401-06-01 | 12 | 5 | .0000000 | 500 | 1.0000000 | 1 | 30 | 48.0000000 | 8.0000000 + 1401-06-01 | 12 | 5 | .0000000 | 500 | 2.0000000 | 3 | 30 | 29.0000000 | 9.0000000 + 1401-06-01 | 12 | 5 | .0000000 | 600 | 1.0000000 | 3 | 30 | 27.0000000 | 10.0000000 + 1401-06-01 | 1 | 1 | .0000000 | 700 | 2.0000000 | 4 | 40 | 27.0000000 | 11.0000000 + 1401-06-01 | 1 | 1 | .0000000 | 800 | 1.0000000 | 4 | 40 | 36.0000000 | 12.0000000 +(12 rows) + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn asc rows between 3 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn asc rows between 3 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn asc rows between 3 following and unbounded following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.vn desc), +win4 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.vn desc); -- mvd 3,1,4->2; 3,1,4->5; 1->6; 3,1,4->7; 1,4->8; 3,10,1,4->9; + vn | to_char | cn | pn | to_char | to_char | to_char | to_char | to_char | dt +----+-------------------+----+-----+-------------------+-------------------+-------------------+-------------------+-------------------+------------ + 10 | .0000000 | 1 | 200 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 | 1401-03-01 + 20 | .0000000 | 1 | 100 | .0000000 | 2.0000000 | .0000000 | 1.0000000 | 1.0000000 | 1401-05-01 + 30 | .0000000 | 3 | 600 | .0000000 | 3.0000000 | .0000000 | 1.0000000 | 1.0000000 | 1401-06-01 + 30 | .0000000 | 1 | 300 | .0000000 | 4.0000000 | .0000000 | 1.0000000 | 1.0000000 | 1401-05-02 + 30 | .0000000 | 1 | 500 | .0000000 | 5.0000000 | .0000000 | 1.0000000 | 1.0000000 | 1401-06-01 + 30 | .0000000 | 3 | 500 | .0000000 | 6.0000000 | .0000000 | 2.0000000 | 1.0000000 | 1401-06-01 + 40 | .0000000 | 4 | 800 | .0000000 | 7.0000000 | .0000000 | 1.0000000 | 1.0000000 | 1401-06-01 + 40 | .0000000 | 2 | 100 | .0000000 | 8.0000000 | .0000000 | 1.0000000 | 1.0000000 | 1401-01-01 + 40 | .0000000 | 3 | 200 | .0000000 | 9.0000000 | .0000000 | 1.0000000 | 1.0000000 | 1401-04-01 + 40 | .0000000 | 4 | 700 | .0000000 | 10.0000000 | .0000000 | 1.0000000 | 1.0000000 | 1401-06-01 + 50 | .0000000 | 2 | 400 | .0000000 | 11.0000000 | .0000000 | 1.0000000 | 1.0000000 | 1401-06-01 + 50 | .0000000 | 1 | 400 | .0000000 | 12.0000000 | .0000000 | 2.0000000 | 1.0000000 | 1401-06-01 +(12 rows) + +-- VARIANCE() function with NULL OVER() clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (); -- mvd 2->2; + qty | to_char +------+------------------- + 1 | 141373.5378788 + 1 | 141373.5378788 + 1 | 141373.5378788 + 12 | 141373.5378788 + 1 | 141373.5378788 + 1 | 141373.5378788 + 1 | 141373.5378788 + 1 | 141373.5378788 + 12 | 141373.5378788 + 12 | 141373.5378788 + 1100 | 141373.5378788 + 1 | 141373.5378788 +(12 rows) + +-- VARIANCE() function with OVER() clause having ONLY PARTITION BY -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn); -- mvd 4->5; + vn | vn | qty | pn | to_char +----+----+------+-----+------------------- + 30 | 30 | 1 | 300 | .0000000 + 50 | 50 | 1 | 400 | .0000000 + 50 | 50 | 1 | 400 | .0000000 + 30 | 30 | 12 | 500 | .0000000 + 30 | 30 | 12 | 500 | .0000000 + 40 | 40 | 1 | 800 | .0000000 + 20 | 20 | 1 | 100 | 2880000.0000000 + 40 | 40 | 1100 | 100 | 2880000.0000000 + 10 | 10 | 1 | 200 | .0000000 + 40 | 40 | 1 | 200 | .0000000 + 30 | 30 | 12 | 600 | .0000000 + 40 | 40 | 1 | 700 | .0000000 +(12 rows) + +-- VARIANCE() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc,ow_sale.vn asc); -- mvd 1,4->7; + vn | qty | vn | pn | qty | pn | to_char +----+------+----+-----+------+-----+------------------- + 20 | 1 | 20 | 100 | 1 | 100 | .0000000 + 40 | 1100 | 40 | 100 | 1100 | 100 | .0000000 + 10 | 1 | 10 | 200 | 1 | 200 | 3333.3333333 + 40 | 1 | 40 | 200 | 1 | 200 | 3333.3333333 + 30 | 1 | 30 | 300 | 1 | 300 | 7000.0000000 + 50 | 1 | 50 | 400 | 1 | 400 | 16190.4761905 + 50 | 1 | 50 | 400 | 1 | 400 | 16190.4761905 + 30 | 12 | 30 | 500 | 12 | 500 | 25000.0000000 + 30 | 12 | 30 | 500 | 12 | 500 | 25000.0000000 + 30 | 12 | 30 | 600 | 12 | 600 | 31222.2222222 + 40 | 1 | 40 | 700 | 1 | 700 | 40545.4545455 + 40 | 1 | 40 | 800 | 1 | 800 | 52727.2727273 +(12 rows) + +-- VARIANCE() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.pn)) OVER(order by ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn asc), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 4,1->3; 4,1->5; 4->6; 4,1->7; + pn | vn | to_char | cn | to_char | to_char | to_char +-----+----+-------------------+----+-------------------+-------------------+------------------- + 100 | 40 | 78226.6666667 | 2 | 6.0000000 | .0000000 | -796.0000000 + 200 | 10 | 67900.0000000 | 1 | 9.0000000 | 1.0000000 | -796.0000000 + 200 | 40 | 103333.3333333 | 3 | 3.0000000 | 3.0000000 | -796.0000000 + 100 | 20 | 72583.9285714 | 1 | 8.0000000 | 1.0000000 | -796.0000000 + 300 | 30 | 61290.0000000 | 1 | 10.0000000 | 1.0000000 | -796.0000000 + 400 | 50 | 55165.4545455 | 1 | 11.0000000 | 1.0000000 | -796.0000000 + 400 | 50 | 66523.8095238 | 2 | 7.0000000 | 2.0000000 | -796.0000000 + 500 | 30 | 51226.5151515 | 1 | 12.0000000 | 3.0000000 | -796.0000000 + 500 | 30 | 69691.6666667 | 3 | 4.0000000 | 1.0000000 | -796.0000000 + 600 | 30 | 52930.0000000 | 3 | 5.0000000 | 1.0000000 | -796.0000000 + 700 | 40 | .0000000 | 4 | 1.0000000 | 3.0000000 | -696.0000000 + 800 | 40 | 5000.0000000 | 4 | 2.0000000 | 4.0000000 | -796.0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range unbounded preceding ); -- mvd 2->7; + qty | vn | cn | prc | dt | dt | to_char +------+----+----+------+------------+------------+------------------- + 1 | 10 | 1 | 0 | 1401-03-01 | 1401-03-01 | .0000000 + 1 | 20 | 1 | 0 | 1401-05-01 | 1401-05-01 | .0000000 + 12 | 30 | 3 | 5 | 1401-06-01 | 1401-06-01 | 36.3000000 + 1 | 30 | 1 | 0 | 1401-05-02 | 1401-05-02 | 36.3000000 + 12 | 30 | 1 | 5 | 1401-06-01 | 1401-06-01 | 36.3000000 + 12 | 30 | 3 | 5 | 1401-06-01 | 1401-06-01 | 36.3000000 + 1100 | 40 | 2 | 2400 | 1401-01-01 | 1401-01-01 | 120002.4000000 + 1 | 40 | 4 | 1 | 1401-06-01 | 1401-06-01 | 120002.4000000 + 1 | 40 | 4 | 1 | 1401-06-01 | 1401-06-01 | 120002.4000000 + 1 | 40 | 3 | 0 | 1401-04-01 | 1401-04-01 | 120002.4000000 + 1 | 50 | 2 | 0 | 1401-06-01 | 1401-06-01 | 100125.3333333 + 1 | 50 | 1 | 0 | 1401-06-01 | 1401-06-01 | 100125.3333333 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ), +win2 as (order by ow_sale.pn asc); -- mvd 7->6; 7->8; 3->9; + vn | prc | pn | vn | pn | to_char | cn | to_char | to_char +----+------+-----+----+-----+-------------------+----+-------------------+------------------- + 40 | 2400 | 100 | 40 | 100 | 171928.5714286 | 2 | .0000000 | 1.0000000 + 20 | 0 | 100 | 20 | 100 | 101401.5454545 | 1 | .0000000 | 1.0000000 + 10 | 0 | 200 | 10 | 200 | 101401.5454545 | 1 | .0000000 | 2.0000000 + 40 | 0 | 200 | 40 | 200 | .3000000 | 3 | .0000000 | 2.0000000 + 30 | 0 | 300 | 30 | 300 | 101401.5454545 | 1 | .0000000 | 3.0000000 + 50 | 0 | 400 | 50 | 400 | 171928.5714286 | 2 | .0000000 | 4.0000000 + 50 | 0 | 400 | 50 | 400 | 101401.5454545 | 1 | .0000000 | 4.0000000 + 30 | 5 | 500 | 30 | 500 | 101401.5454545 | 1 | .0000000 | 5.0000000 + 30 | 5 | 500 | 30 | 500 | .3000000 | 3 | .0000000 | 5.0000000 + 30 | 5 | 600 | 30 | 600 | .3000000 | 3 | .0000000 | 6.0000000 + 40 | 1 | 700 | 40 | 700 | .0000000 | 4 | 1.0000000 | 7.0000000 + 40 | 1 | 800 | 40 | 800 | .0000000 | 4 | 1.0000000 | 8.0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range 1 preceding ); -- mvd 3->2; + pn | to_char | cn +-----+-------------------+---- + 800 | 5000.0000000 | 4 + 700 | 5000.0000000 | 4 + 500 | 53000.0000000 | 3 + 200 | 53000.0000000 | 3 + 600 | 53000.0000000 | 3 + 400 | 43000.0000000 | 2 + 100 | 43000.0000000 | 2 + 300 | 24761.9047619 | 1 + 400 | 24761.9047619 | 1 + 500 | 24761.9047619 | 1 + 200 | 24761.9047619 | 1 + 100 | 24761.9047619 | 1 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range 4 preceding ), +win2 as (order by ow_sale.pn asc); -- mvd 3->5; 1->6; + pn | cn | vn | qty | to_char | to_char +-----+----+----+------+-------------------+------------------- + 100 | 1 | 20 | 1 | .0000000 | .0000000 + 100 | 2 | 40 | 1100 | .0000000 | .0000000 + 200 | 1 | 10 | 1 | .0000000 | .1818182 + 200 | 3 | 40 | 1 | .0000000 | .1818182 + 300 | 1 | 30 | 1 | .0000000 | .3636364 + 400 | 2 | 50 | 1 | .0000000 | .4545455 + 400 | 1 | 50 | 1 | .0000000 | .4545455 + 500 | 1 | 30 | 12 | .0000000 | .6363636 + 500 | 3 | 30 | 12 | .0000000 | .6363636 + 600 | 3 | 30 | 12 | .0000000 | .8181818 + 700 | 4 | 40 | 1 | .0000000 | .9090909 + 800 | 4 | 40 | 1 | .0000000 | 1.0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ); -- mvd 2->3; + vn | cn | to_char +----+----+------------------- + 40 | 4 | 5000.0000000 + 40 | 4 | 5000.0000000 + 30 | 3 | 43333.3333333 + 40 | 3 | 43333.3333333 + 30 | 3 | 43333.3333333 + 50 | 2 | 45000.0000000 + 40 | 2 | 45000.0000000 + 30 | 1 | 25000.0000000 + 50 | 1 | 25000.0000000 + 30 | 1 | 25000.0000000 + 10 | 1 | 25000.0000000 + 20 | 1 | 25000.0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range current row ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc); -- mvd 5->4; 5->6; 8,5,9,2->7; + prc | pn | cn | to_char | vn | to_char | to_char | dt | qty +------+-----+----+-------------------+----+-------------------+-------------------+------------+------ + 0 | 400 | 1 | .5000000 | 50 | 50.0000000 | .0000000 | 1401-06-01 | 1 + 0 | 400 | 2 | .5000000 | 50 | 50.0000000 | 50.0000000 | 1401-06-01 | 1 + 0 | 200 | 3 | .9166667 | 40 | 40.0000000 | .0000000 | 1401-04-01 | 1 + 1 | 800 | 4 | .9166667 | 40 | 40.0000000 | .0000000 | 1401-06-01 | 1 + 2400 | 100 | 2 | .9166667 | 40 | 40.0000000 | .0000000 | 1401-01-01 | 1100 + 1 | 700 | 4 | .9166667 | 40 | 40.0000000 | .0000000 | 1401-06-01 | 1 + 5 | 500 | 1 | 1.3333333 | 30 | 30.0000000 | .0000000 | 1401-06-01 | 12 + 5 | 500 | 3 | 1.3333333 | 30 | 30.0000000 | .0000000 | 1401-06-01 | 12 + 0 | 300 | 1 | 1.3333333 | 30 | 30.0000000 | .0000000 | 1401-05-02 | 1 + 5 | 600 | 3 | 1.3333333 | 30 | 30.0000000 | .0000000 | 1401-06-01 | 12 + 0 | 100 | 1 | .0000000 | 20 | 20.0000000 | .0000000 | 1401-05-01 | 1 + 0 | 200 | 1 | .0000000 | 10 | 10.0000000 | .0000000 | 1401-03-01 | 1 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.vn*ow_sale.qty) preceding ); -- mvd 2->4; + pn | cn | cn | to_char +-----+----+----+------------------- + 200 | 1 | 1 | .0000000 + 100 | 1 | 1 | .0000000 + 300 | 1 | 1 | .0000000 + 400 | 1 | 1 | .0000000 + 500 | 1 | 1 | .0000000 + 100 | 2 | 2 | .0000000 + 400 | 2 | 2 | .0000000 + 200 | 3 | 3 | .0000000 + 600 | 3 | 3 | .0000000 + 500 | 3 | 3 | .0000000 + 700 | 4 | 4 | .0000000 + 800 | 4 | 4 | .0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and 1 preceding ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.vn desc); -- mvd 3->2; 5->4; 5,3,1,7->6; 5,3,1,7->8; + qty | to_char | vn | to_char | cn | to_char | pn | to_char +------+-------------------+----+-------------------+----+-------------------+-----+------------------- + 1 | .0000000 | 40 | .0000000 | 4 | 1.0000000 | 800 | 1.0000000 + 1 | .0000000 | 40 | .0000000 | 4 | 1.0000000 | 700 | 1.0000000 + 12 | 201300.1666667 | 30 | .1818182 | 3 | 1.0000000 | 600 | 1.0000000 + 12 | 201300.1666667 | 30 | .1818182 | 3 | 1.0000000 | 500 | 1.0000000 + 1 | .0000000 | 40 | .1818182 | 3 | 1.0000000 | 200 | 1.0000000 + 1 | .0000000 | 50 | .4545455 | 2 | 1.0000000 | 400 | 1.0000000 + 1100 | .0000000 | 40 | .4545455 | 2 | 1.0000000 | 100 | 1.0000000 + 1 | 201300.1666667 | 30 | .6363636 | 1 | 1.0000000 | 300 | 1.0000000 + 12 | 201300.1666667 | 30 | .6363636 | 1 | 1.0000000 | 500 | 1.0000000 + 1 | .0000000 | 50 | .6363636 | 1 | 1.0000000 | 400 | 1.0000000 + 1 | 120002.4000000 | 20 | .6363636 | 1 | 1.0000000 | 100 | 1.0000000 + 1 | 109167.0909091 | 10 | .6363636 | 1 | 1.0000000 | 200 | 1.0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and current row ); -- mvd 7->6; + vn | cn | cn | qty | cn | to_char | pn +----+----+----+------+----+-------------------+----- + 20 | 1 | 1 | 1 | 1 | 603900.5000000 | 100 + 40 | 2 | 2 | 1100 | 2 | 603900.5000000 | 100 + 10 | 1 | 1 | 1 | 1 | 301950.2500000 | 200 + 40 | 3 | 3 | 1 | 3 | 301950.2500000 | 200 + 30 | 1 | 1 | 1 | 1 | 241560.2000000 | 300 + 50 | 1 | 1 | 1 | 1 | 172543.0000000 | 400 + 50 | 2 | 2 | 1 | 2 | 172543.0000000 | 400 + 30 | 1 | 1 | 12 | 1 | 133552.0277778 | 500 + 30 | 3 | 3 | 12 | 3 | 133552.0277778 | 500 + 30 | 3 | 3 | 12 | 3 | 120002.4000000 | 600 + 40 | 4 | 4 | 1 | 4 | 109167.0909091 | 700 + 40 | 4 | 4 | 1 | 4 | 100125.3333333 | 800 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(order by ow_sale.pn desc range between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and current row ); -- mvd 6->5; 6->7; + vn | qty | vn | cn | to_char | pn | to_char +----+------+----+----+-------------------+-----+------------------- + 40 | 1 | 40 | 4 | .0000000 | 800 | 4.0000000 + 40 | 1 | 40 | 4 | .0000000 | 700 | 4.0000000 + 30 | 12 | 30 | 3 | 40.3333333 | 600 | 4.0000000 + 30 | 12 | 30 | 1 | 41.5000000 | 500 | 4.0000000 + 30 | 12 | 30 | 3 | 41.5000000 | 500 | 4.0000000 + 50 | 1 | 50 | 1 | 77.8095238 | 400 | 4.0000000 + 50 | 1 | 50 | 2 | 77.8095238 | 400 | 4.0000000 + 30 | 1 | 30 | 1 | 79.5535714 | 300 | 4.0000000 + 10 | 1 | 10 | 1 | 148.2333333 | 200 | 4.0000000 + 40 | 1 | 40 | 3 | 148.2333333 | 200 | 4.0000000 + 20 | 1 | 20 | 1 | 146.4242424 | 100 | 4.0000000 + 40 | 1100 | 40 | 2 | 146.4242424 | 100 | 4.0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn/ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.prc) following ); -- mvd 3->4; + prc | qty | cn | to_char +------+------+----+------------------- + 1 | 1 | 4 | 133161.2000000 + 1 | 1 | 4 | 133161.2000000 + 5 | 12 | 3 | 69579.6969697 + 5 | 12 | 3 | 69579.6969697 + 0 | 1 | 3 | 133161.2000000 + 0 | 1 | 2 | 108066.3333333 + 2400 | 1100 | 2 | 69579.6969697 + 0 | 1 | 1 | 69579.6969697 + 5 | 12 | 1 | 69579.6969697 + 0 | 1 | 1 | 69579.6969697 + 0 | 1 | 1 | 69579.6969697 + 0 | 1 | 1 | 69579.6969697 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.qty) as int),cast (floor(ow_sale.pn+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and floor(ow_sale.prc) following ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 3->2; 3->4; 3->5; 3->6; 3->7; 9->8; + qty | to_char | pn | to_char | to_char | to_char | to_char | to_char | vn +------+-------------------+-----+-------------------+-------------------+-------------------+-------------------+-------------------+---- + 1100 | 100125.3333333 | 100 | 2.0000000 | 1.0000000 | 1.0000000 | 100.0000000 | .0000000 | 40 + 1 | 28.2333333 | 200 | 3.0000000 | 2.0000000 | 2.0000000 | 100.0000000 | .0000000 | 10 + 1 | 28.2333333 | 200 | 4.0000000 | 2.0000000 | 2.0000000 | 100.0000000 | .0000000 | 40 + 1 | 100125.3333333 | 100 | 1.0000000 | 1.0000000 | 1.0000000 | 100.0000000 | .0000000 | 20 + 1 | 32.4107143 | 300 | 5.0000000 | 3.0000000 | 3.0000000 | 100.0000000 | .0000000 | 30 + 1 | 34.5714286 | 400 | 6.0000000 | 4.0000000 | 4.0000000 | 100.0000000 | .0000000 | 50 + 1 | 34.5714286 | 400 | 7.0000000 | 4.0000000 | 4.0000000 | 100.0000000 | .0000000 | 50 + 12 | 36.3000000 | 500 | 8.0000000 | 5.0000000 | 5.0000000 | 100.0000000 | .0000000 | 30 + 12 | 36.3000000 | 500 | 9.0000000 | 5.0000000 | 5.0000000 | 100.0000000 | .0000000 | 30 + 12 | 40.3333333 | 600 | 10.0000000 | 6.0000000 | 6.0000000 | 100.0000000 | .0000000 | 30 + 1 | .0000000 | 700 | 11.0000000 | 7.0000000 | 7.0000000 | 100.0000000 | .0000000 | 40 + 1 | .0000000 | 800 | 12.0000000 | 8.0000000 | 8.0000000 | 100.0000000 | .0000000 | 40 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and unbounded following ); -- mvd 5->4; + dt | qty | prc | to_char | cn +------------+------+------+-------------------+---- + 1401-06-01 | 1 | 1 | 52727.2727273 | 4 + 1401-06-01 | 1 | 1 | 52727.2727273 | 4 + 1401-06-01 | 12 | 5 | 52727.2727273 | 3 + 1401-06-01 | 12 | 5 | 52727.2727273 | 3 + 1401-04-01 | 1 | 0 | 52727.2727273 | 3 + 1401-06-01 | 1 | 0 | 52727.2727273 | 2 + 1401-01-01 | 1100 | 2400 | 52727.2727273 | 2 + 1401-05-02 | 1 | 0 | 52727.2727273 | 1 + 1401-06-01 | 12 | 5 | 52727.2727273 | 1 + 1401-06-01 | 1 | 0 | 52727.2727273 | 1 + 1401-03-01 | 1 | 0 | 52727.2727273 | 1 + 1401-05-01 | 1 | 0 | 52727.2727273 | 1 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty*ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.dt,ow_sale.vn order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn order by ow_sale.pn desc); -- mvd 4->3; 4,6->5; 6,1,2->7; 4,6->8; 6,1,2->9; + vn | pn | to_char | cn | to_char | dt | to_char | to_char | to_char +----+-----+-------------------+----+-------------------+------------+-------------------+-------------------+------------------- + 40 | 700 | 100125.3333333 | 4 | .0000000 | 1401-06-01 | 2.0000000 | .8333333 | 2.0000000 + 40 | 800 | 100125.3333333 | 4 | .0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 1.0000000 + 30 | 500 | 100125.3333333 | 3 | .0000000 | 1401-06-01 | 2.0000000 | .5000000 | 2.0000000 + 30 | 600 | 100125.3333333 | 3 | .0000000 | 1401-06-01 | 1.0000000 | .6666667 | 1.0000000 + 40 | 200 | 100125.3333333 | 3 | .0000000 | 1401-04-01 | 1.0000000 | .0000000 | 1.0000000 + 40 | 100 | 100125.3333333 | 2 | .0000000 | 1401-01-01 | 1.0000000 | .0000000 | 1.0000000 + 50 | 400 | 100125.3333333 | 2 | .0000000 | 1401-06-01 | 1.0000000 | .1666667 | 1.0000000 + 30 | 500 | 100125.3333333 | 1 | .0000000 | 1401-06-01 | 2.0000000 | .3333333 | 3.0000000 + 30 | 300 | 100125.3333333 | 1 | .0000000 | 1401-05-02 | 1.0000000 | .0000000 | 1.0000000 + 50 | 400 | 100125.3333333 | 1 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 | 2.0000000 + 10 | 200 | 100125.3333333 | 1 | .0000000 | 1401-03-01 | 1.0000000 | .0000000 | 1.0000000 + 20 | 100 | 100125.3333333 | 1 | .0000000 | 1401-05-01 | 1.0000000 | .0000000 | 1.0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 1 preceding and 3 preceding ); -- mvd 4->5; + prc | dt | qty | cn | to_char +------+------------+------+----+------------------- + 0 | 1401-05-01 | 1 | 1 | .0000000 + 0 | 1401-03-01 | 1 | 1 | .0000000 + 0 | 1401-05-02 | 1 | 1 | .0000000 + 0 | 1401-06-01 | 1 | 1 | .0000000 + 5 | 1401-06-01 | 12 | 1 | .0000000 + 2400 | 1401-01-01 | 1100 | 2 | .0000000 + 0 | 1401-06-01 | 1 | 2 | .0000000 + 0 | 1401-04-01 | 1 | 3 | .0000000 + 5 | 1401-06-01 | 12 | 3 | .0000000 + 5 | 1401-06-01 | 12 | 3 | .0000000 + 1 | 1401-06-01 | 1 | 4 | .0000000 + 1 | 1401-06-01 | 1 | 4 | .0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.prc) preceding and floor(ow_sale.prc+ow_sale.qty) following ); -- mvd 3->4; + pn | qty | cn | to_char +-----+------+----+------------------- + 200 | 1 | 1 | 822289.2857143 + 100 | 1 | 1 | 822289.2857143 + 300 | 1 | 1 | 822289.2857143 + 400 | 1 | 1 | 822289.2857143 + 500 | 12 | 1 | 479386.6287879 + 100 | 1100 | 2 | 479386.6287879 + 400 | 1 | 2 | 1149607.5000000 + 200 | 1 | 3 | 5.8000000 + 600 | 12 | 3 | 479386.6287879 + 500 | 12 | 3 | 479386.6287879 + 700 | 1 | 4 | 5.8000000 + 800 | 1 | 4 | 5.8000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn/ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty-ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 0 preceding and floor(ow_sale.pn) following ), +win2 as (order by ow_sale.vn asc), +win3 as (order by ow_sale.ord, ow_sale.cn desc), +win4 as (partition by ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.cn desc); -- mvd 1->6; 4->7; 4->8; 10->9; 12,10,3->11; 4->13; + pn | pn | qty | vn | pn | to_char | to_char | to_char | to_char | cn | to_char | prc | to_char +-----+-----+------+----+-----+-------------------+-------------------+-------------------+-------------------+----+-------------------+------+------------------- + 100 | 100 | 1100 | 40 | 100 | .0000000 | 7.0000000 | .8333333 | .0000000 | 2 | .0000000 | 2400 | .5454545 + 200 | 200 | 1 | 10 | 200 | 3333.3333333 | 1.0000000 | .0833333 | 20.0000000 | 1 | -39.0000000 | 0 | .0000000 + 200 | 200 | 1 | 40 | 200 | 3333.3333333 | 7.0000000 | .8333333 | .0000000 | 3 | -19.0000000 | 0 | .5454545 + 100 | 100 | 1 | 20 | 100 | .0000000 | 2.0000000 | .1666667 | 13.0000000 | 1 | -29.0000000 | 0 | .0909091 + 300 | 300 | 1 | 30 | 300 | 7000.0000000 | 3.0000000 | .5000000 | 20.0000000 | 1 | -49.0000000 | 0 | .1818182 + 400 | 400 | 1 | 50 | 400 | 16190.4761905 | 11.0000000 | 1.0000000 | 30.0000000 | 1 | -49.0000000 | 0 | .9090909 + 400 | 400 | 1 | 50 | 400 | 16190.4761905 | 11.0000000 | 1.0000000 | 30.0000000 | 2 | .0000000 | 0 | .9090909 + 500 | 500 | 12 | 30 | 500 | 25000.0000000 | 3.0000000 | .5000000 | 25.0000000 | 1 | .0000000 | 5 | .1818182 + 500 | 500 | 12 | 30 | 500 | 25000.0000000 | 3.0000000 | .5000000 | 50.0000000 | 3 | .0000000 | 5 | .1818182 + 600 | 600 | 12 | 30 | 600 | 31222.2222222 | 3.0000000 | .5000000 | 25.0000000 | 3 | .0000000 | 5 | .1818182 + 700 | 700 | 1 | 40 | 700 | 40545.4545455 | 7.0000000 | .8333333 | 25.0000000 | 4 | -39.0000000 | 1 | .5454545 + 800 | 800 | 1 | 40 | 800 | 52727.2727273 | 7.0000000 | .8333333 | 30.0000000 | 4 | .0000000 | 1 | .5454545 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.cn) preceding and unbounded following ); -- mvd 3->2; + vn | to_char | cn +----+-------------------+---- + 40 | 52727.2727273 | 4 + 40 | 52727.2727273 | 4 + 30 | 52727.2727273 | 3 + 40 | 52727.2727273 | 3 + 30 | 52727.2727273 | 3 + 50 | 52727.2727273 | 2 + 40 | 52727.2727273 | 2 + 30 | 24761.9047619 | 1 + 50 | 24761.9047619 | 1 + 30 | 24761.9047619 | 1 + 20 | 24761.9047619 | 1 + 10 | 24761.9047619 | 1 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.qty/ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn+ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.pn) preceding and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc), +win4 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 8->7; 8->9; 8->10; 12,8,4,2->11; 2->13; + prc | pn | qty | vn | vn | qty | to_char | cn | to_char | to_char | to_char | dt | to_char +------+-----+------+----+----+------+-------------------+----+-------------------+-------------------+-------------------+------------+------------------- + 2400 | 100 | 1100 | 40 | 40 | 1100 | 127.6363636 | 2 | 100.0000000 | 6.0000000 | .0000000 | 1401-01-01 | .0000000 + 0 | 200 | 1 | 10 | 10 | 1 | 127.6363636 | 1 | 100.0000000 | 8.0000000 | .0000000 | 1401-03-01 | .0000000 + 0 | 200 | 1 | 40 | 40 | 1 | 127.6363636 | 3 | 100.0000000 | 3.0000000 | .0000000 | 1401-04-01 | .0000000 + 0 | 100 | 1 | 20 | 20 | 1 | 127.6363636 | 1 | 100.0000000 | 8.0000000 | .0000000 | 1401-05-01 | .0000000 + 0 | 300 | 1 | 30 | 30 | 1 | 127.6363636 | 1 | 100.0000000 | 8.0000000 | .0000000 | 1401-05-02 | .0000000 + 0 | 400 | 1 | 50 | 50 | 1 | 127.6363636 | 1 | 100.0000000 | 8.0000000 | .0000000 | 1401-06-01 | .0000000 + 0 | 400 | 1 | 50 | 50 | 1 | 127.6363636 | 2 | 100.0000000 | 6.0000000 | .0000000 | 1401-06-01 | .0000000 + 5 | 500 | 12 | 30 | 30 | 12 | 127.6363636 | 1 | 100.0000000 | 8.0000000 | .0000000 | 1401-06-01 | .0000000 + 5 | 500 | 12 | 30 | 30 | 12 | 127.6363636 | 3 | 100.0000000 | 3.0000000 | .0000000 | 1401-06-01 | .0000000 + 5 | 600 | 12 | 30 | 30 | 12 | 127.6363636 | 3 | 100.0000000 | 3.0000000 | .0000000 | 1401-06-01 | .0000000 + 1 | 700 | 1 | 40 | 40 | 1 | 127.6363636 | 4 | 100.0000000 | 1.0000000 | 1.0000000 | 1401-06-01 | .0000000 + 1 | 800 | 1 | 40 | 40 | 1 | 127.6363636 | 4 | 100.0000000 | 1.0000000 | 1.0000000 | 1401-06-01 | .0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and current row ); -- mvd 3->2; + prc | to_char | cn +------+-------------------+---- + 0 | 24.2000000 | 1 + 0 | 24.2000000 | 1 + 0 | 24.2000000 | 1 + 0 | 24.2000000 | 1 + 5 | 24.2000000 | 1 + 2400 | 603900.5000000 | 2 + 0 | 603900.5000000 | 2 + 0 | 40.3333333 | 3 + 5 | 40.3333333 | 3 + 5 | 40.3333333 | 3 + 1 | .0000000 | 4 + 1 | .0000000 | 4 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn+ow_sale.vn) as int),cast (floor(ow_sale.pn*ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.qty) as int),cast (floor(ow_sale.vn+ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and current row ), +win2 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.vn asc), +win4 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 4->3; 1,6->5; 8->7; 1->9; + cn | qty | to_char | pn | to_char | dt | to_char | vn | to_char +----+------+-------------------+-----+-------------------+------------+-------------------+----+------------------- + 1 | 1 | .0000000 | 200 | .0000000 | 1401-03-01 | 1.0000000 | 10 | .0000000 + 1 | 1 | 2880000.0000000 | 100 | .0000000 | 1401-05-01 | 2.0000000 | 20 | .0000000 + 3 | 12 | .0000000 | 500 | .0000000 | 1401-06-01 | 3.0000000 | 30 | .0000000 + 1 | 12 | .0000000 | 500 | .0000000 | 1401-06-01 | 3.0000000 | 30 | .0000000 + 1 | 1 | .0000000 | 300 | .0000000 | 1401-05-02 | 3.0000000 | 30 | .0000000 + 3 | 12 | .0000000 | 600 | .0000000 | 1401-06-01 | 3.0000000 | 30 | .0000000 + 2 | 1100 | 2880000.0000000 | 100 | .0000000 | 1401-01-01 | 4.0000000 | 40 | .0000000 + 3 | 1 | .0000000 | 200 | .0000000 | 1401-04-01 | 4.0000000 | 40 | .0000000 + 4 | 1 | .0000000 | 700 | .0000000 | 1401-06-01 | 4.0000000 | 40 | .0000000 + 4 | 1 | .0000000 | 800 | .0000000 | 1401-06-01 | 4.0000000 | 40 | .0000000 + 2 | 1 | .0000000 | 400 | .0000000 | 1401-06-01 | 5.0000000 | 50 | .0000000 + 1 | 1 | .0000000 | 400 | .0000000 | 1401-06-01 | 5.0000000 | 50 | .0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and 4 following ); -- mvd 2->4; + cn | pn | qty | to_char +----+-----+------+------------------- + 1 | 100 | 1 | .0000000 + 2 | 100 | 1100 | .0000000 + 1 | 200 | 1 | .0000000 + 3 | 200 | 1 | .0000000 + 1 | 300 | 1 | .0000000 + 1 | 400 | 1 | .0000000 + 2 | 400 | 1 | .0000000 + 1 | 500 | 12 | .0000000 + 3 | 500 | 12 | .0000000 + 3 | 600 | 12 | .0000000 + 4 | 700 | 1 | .0000000 + 4 | 800 | 1 | .0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and 1 following ), +win2 as (order by ow_sale.cn asc); -- mvd 1->3; 1->4; 1->5; + cn | cn | to_char | to_char | to_char +----+----+-------------------+-------------------+------------------- + 1 | 1 | 821718.5714286 | .4166667 | .4166667 + 1 | 1 | 821718.5714286 | .4166667 | .4166667 + 1 | 1 | 821718.5714286 | .4166667 | .4166667 + 1 | 1 | 821718.5714286 | .4166667 | .4166667 + 1 | 1 | 821718.5714286 | .4166667 | .4166667 + 2 | 2 | 1150325.8000000 | .5833333 | .5833333 + 2 | 2 | 1150325.8000000 | .5833333 | .5833333 + 3 | 3 | 7.5000000 | .8333333 | .8333333 + 3 | 3 | 7.5000000 | .8333333 | .8333333 + 3 | 3 | 7.5000000 | .8333333 | .8333333 + 4 | 4 | .0000000 | 1.0000000 | 1.0000000 + 4 | 4 | .0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and unbounded following ); -- mvd 6->5; + pn | dt | vn | vn | to_char | cn +-----+------------+----+----+-------------------+---- + 800 | 1401-06-01 | 40 | 40 | 100125.3333333 | 4 + 700 | 1401-06-01 | 40 | 40 | 100125.3333333 | 4 + 500 | 1401-06-01 | 30 | 30 | 120002.4000000 | 3 + 200 | 1401-04-01 | 40 | 40 | 120002.4000000 | 3 + 600 | 1401-06-01 | 30 | 30 | 120002.4000000 | 3 + 400 | 1401-06-01 | 50 | 50 | 171984.6190476 | 2 + 100 | 1401-01-01 | 40 | 40 | 171984.6190476 | 2 + 300 | 1401-05-02 | 30 | 30 | 24.2000000 | 1 + 400 | 1401-06-01 | 50 | 50 | 24.2000000 | 1 + 500 | 1401-06-01 | 30 | 30 | 24.2000000 | 1 + 200 | 1401-03-01 | 10 | 10 | 24.2000000 | 1 + 100 | 1401-05-01 | 20 | 20 | 24.2000000 | 1 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(order by ow_sale.pn desc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and unbounded following ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.cn asc); -- mvd 3->6; 1->7; 3->8; 10,1,3->9; 1->11; + vn | vn | pn | prc | vn | to_char | to_char | to_char | to_char | cn | to_char +----+----+-----+------+----+-------------------+-------------------+-------------------+-------------------+----+------------------- + 50 | 50 | 400 | 0 | 50 | 822857.1428571 | .1666667 | 100.0000000 | 1.0000000 | 2 | 20000.0000000 + 50 | 50 | 400 | 0 | 50 | 822857.1428571 | .1666667 | 100.0000000 | .5000000 | 1 | 20000.0000000 + 40 | 40 | 100 | 2400 | 40 | 2880000.0000000 | .5000000 | 100.0000000 | 1.0000000 | 2 | 4000.0000000 + 40 | 40 | 700 | 1 | 40 | 522943.4545455 | .5000000 | 100.0000000 | 1.0000000 | 4 | 4000.0000000 + 40 | 40 | 200 | 0 | 40 | 1440000.0000000 | .5000000 | 100.0000000 | 1.0000000 | 3 | 4000.0000000 + 40 | 40 | 800 | 1 | 40 | 479386.6287879 | .5000000 | 100.0000000 | 1.0000000 | 4 | 4000.0000000 + 30 | 30 | 600 | 5 | 30 | 575205.8333333 | .8333333 | 100.0000000 | 1.0000000 | 3 | 4000.0000000 + 30 | 30 | 300 | 0 | 30 | 1152000.0000000 | .8333333 | 100.0000000 | 1.0000000 | 1 | 4000.0000000 + 30 | 30 | 500 | 5 | 30 | 639338.1944444 | .8333333 | 100.0000000 | 1.0000000 | 3 | 4000.0000000 + 30 | 30 | 500 | 5 | 30 | 639338.1944444 | .8333333 | 100.0000000 | .5000000 | 1 | 4000.0000000 + 20 | 20 | 100 | 0 | 20 | 2880000.0000000 | .9166667 | 100.0000000 | 1.0000000 | 1 | 2000.0000000 + 10 | 10 | 200 | 0 | 10 | 1440000.0000000 | 1.0000000 | 100.0000000 | 1.0000000 | 1 | 2000.0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 4 following and floor(ow_sale.pn-ow_sale.pn) following ); -- mvd 4->5; + dt | qty | cn | pn | to_char +------------+------+----+-----+------------------- + 1401-05-01 | 1 | 1 | 100 | .0000000 + 1401-01-01 | 1100 | 2 | 100 | .0000000 + 1401-03-01 | 1 | 1 | 200 | .0000000 + 1401-04-01 | 1 | 3 | 200 | .0000000 + 1401-05-02 | 1 | 1 | 300 | .0000000 + 1401-06-01 | 1 | 1 | 400 | .0000000 + 1401-06-01 | 1 | 2 | 400 | .0000000 + 1401-06-01 | 12 | 1 | 500 | .0000000 + 1401-06-01 | 12 | 3 | 500 | .0000000 + 1401-06-01 | 12 | 3 | 600 | .0000000 + 1401-06-01 | 1 | 4 | 700 | .0000000 + 1401-06-01 | 1 | 4 | 800 | .0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 2 following and unbounded following ); -- mvd 2->6; + qty | vn | qty | qty | pn | to_char +------+----+------+------+-----+------------------- + 1 | 10 | 1 | 1 | 200 | 41.6727273 + 1 | 20 | 1 | 1 | 100 | 41.0666667 + 12 | 30 | 12 | 12 | 600 | 49.2000000 + 1 | 30 | 1 | 1 | 300 | 49.2000000 + 12 | 30 | 12 | 12 | 500 | 49.2000000 + 12 | 30 | 12 | 12 | 500 | 49.2000000 + 1100 | 40 | 1100 | 1100 | 100 | .0000000 + 1 | 40 | 1 | 1 | 700 | .0000000 + 1 | 40 | 1 | 1 | 200 | .0000000 + 1 | 40 | 1 | 1 | 800 | .0000000 + 1 | 50 | 1 | 1 | 400 | .0000000 + 1 | 50 | 1 | 1 | 400 | .0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 2 following and unbounded following ), +win2 as (order by ow_sale.vn desc); -- mvd 2->4; 2->5; + prc | vn | dt | to_char | to_char +------+----+------------+-------------------+------------------- + 0 | 50 | 1401-06-01 | .0000000 | 1.0000000 + 0 | 50 | 1401-06-01 | .0000000 | 1.0000000 + 2400 | 40 | 1401-01-01 | .0000000 | 3.0000000 + 1 | 40 | 1401-06-01 | .0000000 | 3.0000000 + 0 | 40 | 1401-04-01 | .0000000 | 3.0000000 + 1 | 40 | 1401-06-01 | .0000000 | 3.0000000 + 5 | 30 | 1401-06-01 | 281926.9666667 | 7.0000000 + 0 | 30 | 1401-05-02 | 281926.9666667 | 7.0000000 + 5 | 30 | 1401-06-01 | 281926.9666667 | 7.0000000 + 5 | 30 | 1401-06-01 | 281926.9666667 | 7.0000000 + 0 | 20 | 1401-05-01 | 169732.0555556 | 11.0000000 + 0 | 10 | 1401-03-01 | 154259.9636364 | 12.0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows unbounded preceding ); -- mvd 4,1->3; + pn | cn | to_char | vn +-----+----+-------------------+---- + 100 | 2 | .0000000 | 40 + 200 | 1 | 603900.5000000 | 10 + 200 | 3 | 402600.3333333 | 40 + 100 | 1 | 301950.2500000 | 20 + 300 | 1 | 241560.2000000 | 30 + 400 | 1 | 201300.1666667 | 50 + 400 | 2 | 172543.0000000 | 50 + 500 | 1 | 150558.5000000 | 30 + 500 | 3 | 133552.0277778 | 30 + 600 | 3 | 120002.4000000 | 30 + 700 | 4 | 109167.0909091 | 40 + 800 | 4 | 100125.3333333 | 40 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows unbounded preceding ), +win2 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc); -- mvd 4,5->3; 4,5->6; 8,9,1->7; + qty | prc | to_char | cn | pn | to_char | to_char | dt | vn +------+------+-------------------+----+-----+-------------------+-------------------+------------+---- + 1100 | 2400 | .0000000 | 2 | 100 | 1.0000000 | .0000000 | 1401-01-01 | 40 + 1 | 0 | 2450.0000000 | 1 | 200 | 2.0000000 | .0000000 | 1401-03-01 | 10 + 1 | 0 | 3100.0000000 | 3 | 200 | 3.0000000 | .0000000 | 1401-04-01 | 40 + 1 | 0 | 2691.6666667 | 1 | 100 | 4.0000000 | .0000000 | 1401-05-01 | 20 + 1 | 0 | 2170.0000000 | 1 | 300 | 5.0000000 | .0000000 | 1401-05-02 | 30 + 1 | 0 | 1736.6666667 | 1 | 400 | 6.0000000 | 400.0000000 | 1401-06-01 | 50 + 1 | 0 | 1780.9523810 | 2 | 400 | 7.0000000 | .0000000 | 1401-06-01 | 50 + 12 | 5 | 1628.5714286 | 1 | 500 | 8.0000000 | .0000000 | 1401-06-01 | 30 + 12 | 5 | 1561.1111111 | 3 | 500 | 9.0000000 | .0000000 | 1401-06-01 | 30 + 12 | 5 | 1484.4444444 | 3 | 600 | 10.0000000 | .0000000 | 1401-06-01 | 30 + 1 | 1 | 2209.0909091 | 4 | 700 | 11.0000000 | 800.0000000 | 1401-06-01 | 40 + 1 | 1 | 2669.6969697 | 4 | 800 | 12.0000000 | .0000000 | 1401-06-01 | 40 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc rows floor(ow_sale.vn+ow_sale.prc) preceding ); -- mvd 6,3->5; + cn | qty | pn | pn | to_char | vn +----+------+-----+-----+-------------------+---- + 2 | 1100 | 100 | 100 | .0000000 | 40 + 1 | 1 | 200 | 200 | 450.0000000 | 10 + 3 | 1 | 200 | 200 | 300.0000000 | 40 + 1 | 1 | 100 | 100 | 225.0000000 | 20 + 1 | 1 | 300 | 300 | 170.0000000 | 30 + 1 | 1 | 400 | 400 | 216.6666667 | 50 + 2 | 1 | 400 | 400 | 228.5714286 | 50 + 1 | 12 | 500 | 500 | 198.2142857 | 30 + 3 | 12 | 500 | 500 | 175.0000000 | 30 + 3 | 12 | 600 | 600 | 156.6666667 | 30 + 4 | 1 | 700 | 700 | 145.4545455 | 40 + 4 | 1 | 800 | 800 | 135.6060606 | 40 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows 0 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows 0 preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.pn asc), +win4 as (order by ow_sale.cn desc); -- mvd 5->4; 3->6; 5->7; 5->8; 10->9; + qty | prc | vn | to_char | pn | to_char | to_char | to_char | to_char | cn +------+------+----+-------------------+-----+-------------------+-------------------+-------------------+-------------------+---- + 1 | 1 | 40 | .0000000 | 700 | .5000000 | 8.0000000 | .9090909 | .0000000 | 4 + 1 | 1 | 40 | .0000000 | 800 | .5000000 | 8.0000000 | 1.0000000 | .0000000 | 4 + 1 | 0 | 40 | .0000000 | 200 | .5000000 | 6.0000000 | .1818182 | .1818182 | 3 + 12 | 5 | 30 | .0000000 | 500 | .8333333 | 6.0000000 | .6363636 | .1818182 | 3 + 12 | 5 | 30 | .0000000 | 600 | .8333333 | 6.0000000 | .8181818 | .1818182 | 3 + 1 | 0 | 50 | .0000000 | 400 | .1666667 | 4.0000000 | .4545455 | .4545455 | 2 + 1100 | 2400 | 40 | .0000000 | 100 | .5000000 | 4.0000000 | .0000000 | .4545455 | 2 + 1 | 0 | 10 | .0000000 | 200 | 1.0000000 | 2.0000000 | .1818182 | .6363636 | 1 + 1 | 0 | 50 | .0000000 | 400 | .1666667 | 2.0000000 | .4545455 | .6363636 | 1 + 12 | 5 | 30 | .0000000 | 500 | .8333333 | 2.0000000 | .6363636 | .6363636 | 1 + 1 | 0 | 30 | .0000000 | 300 | .8333333 | 2.0000000 | .3636364 | .6363636 | 1 + 1 | 0 | 20 | .0000000 | 100 | .9166667 | 2.0000000 | .0000000 | .6363636 | 1 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows current row ); -- mvd 4->3; + qty | pn | to_char | vn +------+-----+-------------------+---- + 1100 | 100 | .0000000 | 40 + 1 | 200 | .0000000 | 10 + 1 | 200 | .0000000 | 40 + 1 | 100 | .0000000 | 20 + 1 | 300 | .0000000 | 30 + 1 | 400 | .0000000 | 50 + 1 | 400 | .0000000 | 50 + 12 | 500 | .0000000 | 30 + 12 | 500 | .0000000 | 30 + 12 | 600 | .0000000 | 30 + 1 | 700 | .0000000 | 40 + 1 | 800 | .0000000 | 40 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn-ow_sale.vn) as int),cast (floor(ow_sale.qty/ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows current row ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.pn asc); -- mvd 3->4; 3->5; 7,8,9,1,3->6; 3->10; + vn | prc | pn | to_char | to_char | to_char | cn | dt | qty | to_char +----+------+-----+-------------------+-------------------+-------------------+----+------------+------+------------------- + 40 | 2400 | 100 | .0000000 | 2200.0000000 | .0000000 | 2 | 1401-01-01 | 1100 | 1.0000000 + 20 | 0 | 100 | .0000000 | 1.0000000 | .0000000 | 1 | 1401-05-01 | 1 | 2.0000000 + 10 | 0 | 200 | .0000000 | 1.0000000 | .0000000 | 1 | 1401-03-01 | 1 | 3.0000000 + 40 | 0 | 200 | .0000000 | 3.0000000 | -37.0000000 | 3 | 1401-04-01 | 1 | 4.0000000 + 30 | 0 | 300 | .0000000 | 1.0000000 | .0000000 | 1 | 1401-05-02 | 1 | 5.0000000 + 50 | 0 | 400 | .0000000 | 2.0000000 | -48.0000000 | 2 | 1401-06-01 | 1 | 6.0000000 + 50 | 0 | 400 | .0000000 | 1.0000000 | .0000000 | 1 | 1401-06-01 | 1 | 7.0000000 + 30 | 5 | 500 | .0000000 | 12.0000000 | .0000000 | 1 | 1401-06-01 | 12 | 8.0000000 + 30 | 5 | 500 | .0000000 | 36.0000000 | .0000000 | 3 | 1401-06-01 | 12 | 9.0000000 + 30 | 5 | 600 | .0000000 | 36.0000000 | .0000000 | 3 | 1401-06-01 | 12 | 10.0000000 + 40 | 1 | 700 | .0000000 | 4.0000000 | -36.0000000 | 4 | 1401-06-01 | 1 | 11.0000000 + 40 | 1 | 800 | .0000000 | 4.0000000 | -36.0000000 | 4 | 1401-06-01 | 1 | 12.0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and current row ); -- mvd 8,9->7; + dt | qty | prc | cn | cn | prc | to_char | vn | pn +------------+------+------+----+----+------+-------------------+----+----- + 1401-01-01 | 1100 | 2400 | 2 | 2 | 2400 | .0000000 | 40 | 100 + 1401-03-01 | 1 | 0 | 1 | 1 | 0 | .0000000 | 10 | 200 + 1401-04-01 | 1 | 0 | 3 | 3 | 0 | .0000000 | 40 | 200 + 1401-05-01 | 1 | 0 | 1 | 1 | 0 | .0000000 | 20 | 100 + 1401-05-02 | 1 | 0 | 1 | 1 | 0 | .0000000 | 30 | 300 + 1401-06-01 | 1 | 0 | 1 | 1 | 0 | .0000000 | 50 | 400 + 1401-06-01 | 1 | 0 | 2 | 2 | 0 | .0000000 | 50 | 400 + 1401-06-01 | 12 | 5 | 1 | 1 | 5 | .0000000 | 30 | 500 + 1401-06-01 | 12 | 5 | 3 | 3 | 5 | .0000000 | 30 | 500 + 1401-06-01 | 12 | 5 | 3 | 3 | 5 | .0000000 | 30 | 600 + 1401-06-01 | 1 | 1 | 4 | 4 | 1 | .0000000 | 40 | 700 + 1401-06-01 | 1 | 1 | 4 | 4 | 1 | .0000000 | 40 | 800 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.pn asc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.vn desc); -- mvd 7,4->6; 7,4->8; 10->9; + qty | prc | qty | pn | prc | to_char | cn | to_char | to_char | vn +------+------+------+-----+------+-------------------+----+-------------------+-------------------+---- + 1 | 0 | 1 | 400 | 0 | 16190.4761905 | 2 | 1.0000000 | .0000000 | 50 + 1 | 0 | 1 | 400 | 0 | 13666.6666667 | 1 | 1.0000000 | .0000000 | 50 + 1 | 1 | 1 | 800 | 1 | 52727.2727273 | 4 | 1.0000000 | .1818182 | 40 + 1 | 0 | 1 | 200 | 0 | 3333.3333333 | 3 | 1.0000000 | .1818182 | 40 + 1 | 1 | 1 | 700 | 1 | 40545.4545455 | 4 | 1.0000000 | .1818182 | 40 + 1100 | 2400 | 1100 | 100 | 2400 | .0000000 | 2 | 2.0000000 | .1818182 | 40 + 12 | 5 | 12 | 500 | 5 | 22142.8571429 | 1 | 1.0000000 | .5454545 | 30 + 12 | 5 | 12 | 500 | 5 | 25000.0000000 | 3 | 1.0000000 | .5454545 | 30 + 12 | 5 | 12 | 600 | 5 | 31222.2222222 | 3 | 1.0000000 | .5454545 | 30 + 1 | 0 | 1 | 300 | 0 | 7000.0000000 | 1 | 1.0000000 | .5454545 | 30 + 1 | 0 | 1 | 100 | 0 | 3333.3333333 | 1 | 1.0000000 | .9090909 | 20 + 1 | 0 | 1 | 200 | 0 | 5000.0000000 | 1 | 1.0000000 | 1.0000000 | 10 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and 6 following ); -- mvd 4->3; + qty | dt | to_char | cn +------+------------+-------------------+---- + 1100 | 1401-01-01 | .0000000 | 2 + 1 | 1401-03-01 | .0000000 | 1 + 1 | 1401-04-01 | .0000000 | 3 + 1 | 1401-05-01 | .0000000 | 1 + 1 | 1401-05-02 | .0000000 | 1 + 1 | 1401-06-01 | .0000000 | 1 + 1 | 1401-06-01 | .0000000 | 2 + 12 | 1401-06-01 | .0000000 | 1 + 12 | 1401-06-01 | .0000000 | 3 + 12 | 1401-06-01 | .0000000 | 3 + 1 | 1401-06-01 | .0000000 | 4 + 1 | 1401-06-01 | .0000000 | 4 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty-ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.cn) following ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 5->4; 1->6; 2->7; + pn | vn | qty | to_char | cn | to_char | to_char +-----+----+------+-------------------+----+-------------------+------------------- + 100 | 40 | 1100 | 402601.3333333 | 2 | 1.0000000 | .0000000 + 100 | 20 | 1 | 241341.2000000 | 1 | 1.0000000 | .0000000 + 200 | 10 | 1 | 402601.3333333 | 1 | 2.0000000 | .0000000 + 200 | 40 | 1 | 201081.0666667 | 3 | 2.0000000 | .0000000 + 300 | 30 | 1 | 201081.0666667 | 1 | 3.0000000 | .0000000 + 400 | 50 | 1 | 133459.3611111 | 2 | 4.0000000 | .0000000 + 400 | 50 | 1 | 172386.6190476 | 1 | 4.0000000 | .0000000 + 500 | 30 | 12 | 133459.3611111 | 1 | 5.0000000 | .0000000 + 500 | 30 | 12 | 100159.0606061 | 3 | 5.0000000 | .0000000 + 600 | 30 | 12 | 100159.0606061 | 3 | 6.0000000 | .0000000 + 700 | 40 | 1 | 100159.0606061 | 4 | 7.0000000 | .0000000 + 800 | 40 | 1 | 100159.0606061 | 4 | 8.0000000 | .0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and unbounded following ); -- mvd 6->7; + pn | prc | qty | prc | qty | cn | to_char +-----+------+------+------+------+----+------------------- + 100 | 2400 | 1100 | 2400 | 1100 | 2 | 101401.5454545 + 200 | 0 | 1 | 0 | 1 | 1 | 101401.5454545 + 200 | 0 | 1 | 0 | 1 | 3 | 101401.5454545 + 100 | 0 | 1 | 0 | 1 | 1 | 101401.5454545 + 300 | 0 | 1 | 0 | 1 | 1 | 101401.5454545 + 400 | 0 | 1 | 0 | 1 | 1 | 101401.5454545 + 400 | 0 | 1 | 0 | 1 | 2 | 101401.5454545 + 500 | 5 | 12 | 5 | 12 | 1 | 101401.5454545 + 500 | 5 | 12 | 5 | 12 | 3 | 101401.5454545 + 600 | 5 | 12 | 5 | 12 | 3 | 101401.5454545 + 700 | 1 | 1 | 1 | 1 | 4 | 101401.5454545 + 800 | 1 | 1 | 1 | 1 | 4 | 101401.5454545 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.qty+ow_sale.cn) preceding and 3 preceding ); -- mvd 3->2; + qty | to_char | pn +------+-------------------+----- + 1100 | .0000000 | 100 + 1 | .0000000 | 200 + 1 | .0000000 | 200 + 1 | .0000000 | 100 + 1 | .0000000 | 300 + 1 | .0000000 | 400 + 1 | .0000000 | 400 + 12 | ########.##### | 500 + 12 | ########.##### | 500 + 12 | ########.##### | 600 + 1 | 10453333.3333333 | 700 + 1 | 10453333.3333333 | 800 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.pn/ow_sale.qty) preceding and floor(ow_sale.qty) preceding ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.vn order by ow_sale.cn asc); -- mvd 1->2; 1,4,5,6,7->3; 1,4,5,6,7->8; + cn | to_char | to_char | dt | qty | vn | pn | to_char +----+-------------------+-------------------+------------+------+----+-----+------------------- + 2 | .0000000 | 1.0000000 | 1401-01-01 | 1100 | 40 | 100 | 1.0000000 + 1 | .0000000 | 1.0000000 | 1401-03-01 | 1 | 10 | 200 | 1.0000000 + 3 | ########.### | 1.0000000 | 1401-04-01 | 1 | 40 | 200 | 1.0000000 + 1 | ########.### | 1.0000000 | 1401-05-01 | 1 | 20 | 100 | 1.0000000 + 1 | ########.### | 1.0000000 | 1401-05-02 | 1 | 30 | 300 | 1.0000000 + 1 | ########.### | 1.0000000 | 1401-06-01 | 1 | 50 | 400 | 1.0000000 + 2 | ########.### | 2.0000000 | 1401-06-01 | 1 | 50 | 400 | 2.0000000 + 1 | .0000000 | 1.0000000 | 1401-06-01 | 12 | 30 | 500 | 1.0000000 + 3 | .0000000 | 2.0000000 | 1401-06-01 | 12 | 30 | 500 | 2.0000000 + 3 | .0000000 | 1.0000000 | 1401-06-01 | 12 | 30 | 600 | 1.0000000 + 4 | ########.### | 1.0000000 | 1401-06-01 | 1 | 40 | 700 | 1.0000000 + 4 | ########.### | 1.0000000 | 1401-06-01 | 1 | 40 | 800 | 1.0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows between 4 preceding and current row ); -- mvd 1->5; + pn | cn | prc | vn | to_char +-----+----+------+----+------------------- + 100 | 2 | 2400 | 40 | .0000000 + 200 | 1 | 0 | 10 | 5000.0000000 + 200 | 3 | 0 | 40 | 3333.3333333 + 100 | 1 | 0 | 20 | 3333.3333333 + 300 | 1 | 0 | 30 | 7000.0000000 + 400 | 1 | 0 | 50 | 13000.0000000 + 400 | 2 | 0 | 50 | 17000.0000000 + 500 | 1 | 5 | 30 | 23000.0000000 + 500 | 3 | 5 | 30 | 7000.0000000 + 600 | 3 | 5 | 30 | 7000.0000000 + 700 | 4 | 1 | 40 | 13000.0000000 + 800 | 4 | 1 | 40 | 17000.0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc rows between 2 preceding and current row ), +win2 as (order by ow_sale.pn desc); -- mvd 6->5; 6->7; 1->8; + pn | cn | prc | qty | to_char | vn | to_char | to_char +-----+----+------+------+-------------------+----+-------------------+------------------- + 800 | 4 | 1 | 1 | 11140.3333333 | 40 | 30.0000000 | 1.0000000 + 700 | 4 | 1 | 1 | 11140.3333333 | 40 | 30.0000000 | 2.0000000 + 600 | 3 | 5 | 12 | 3333.3333333 | 30 | 30.0000000 | 3.0000000 + 500 | 1 | 5 | 12 | 2640.3333333 | 30 | 30.0000000 | 4.0000000 + 500 | 3 | 5 | 12 | 2640.3333333 | 30 | 30.0000000 | 4.0000000 + 400 | 2 | 0 | 1 | 3333.3333333 | 50 | 30.0000000 | 6.0000000 + 400 | 1 | 0 | 1 | 23333.3333333 | 50 | 20.0000000 | 6.0000000 + 300 | 1 | 0 | 1 | 10000.0000000 | 30 | 20.0000000 | 8.0000000 + 200 | 3 | 0 | 1 | 479200.3333333 | 40 | 10.0000000 | 9.0000000 + 200 | 1 | 0 | 1 | 718800.5000000 | 10 | 10.0000000 | 9.0000000 + 100 | 2 | 2400 | 1100 | .0000000 | 40 | 40.0000000 | 11.0000000 + 100 | 1 | 0 | 1 | 3333.3333333 | 20 | 10.0000000 | 11.0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.pn asc rows between floor(ow_sale.cn+ow_sale.cn) preceding and floor(ow_sale.pn/ow_sale.cn) following ); -- mvd 2,3->4; + qty | cn | pn | to_char +------+----+-----+------------------- + 1100 | 2 | 100 | 479386.6287879 + 1 | 1 | 200 | 479386.6287879 + 1 | 3 | 200 | 479386.6287879 + 1 | 1 | 100 | 5.0727273 + 1 | 1 | 300 | 5.3444444 + 1 | 1 | 400 | 5.6111111 + 1 | 2 | 400 | 5.3444444 + 12 | 1 | 500 | 5.9523810 + 12 | 3 | 500 | 5.3444444 + 12 | 3 | 600 | 5.6111111 + 1 | 4 | 700 | 5.3444444 + 1 | 4 | 800 | 5.6111111 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty/ow_sale.vn) as int),cast (floor(ow_sale.prc-ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between 1 preceding and 4 following ), +win2 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc), +win4 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc); -- mvd 4->3; 4,6,1->5; 1->7; 4,6,1->8; 4,1,2->9; + vn | pn | to_char | cn | to_char | qty | to_char | to_char | to_char +----+-----+-------------------+----+-------------------+------+-------------------+-------------------+------------------- + 40 | 100 | 7070.0000000 | 2 | .0000000 | 1100 | 27.0000000 | 1.0000000 | 1.0000000 + 10 | 200 | 15416.6666667 | 1 | .0000000 | 1 | .0000000 | 1.0000000 | 1.0000000 + 40 | 200 | 18000.0000000 | 3 | .0000000 | 1 | .0000000 | 1.0000000 | 1.0000000 + 20 | 100 | 23546.6666667 | 1 | .0000000 | 1 | .0000000 | 1.0000000 | 1.0000000 + 30 | 300 | 24416.6666667 | 1 | .0000000 | 1 | .0000000 | 1.0000000 | 1.0000000 + 50 | 400 | 10306.6666667 | 1 | .0000000 | 1 | .0000000 | 1.0000000 | 1.0000000 + 50 | 400 | 12630.0000000 | 2 | .0000000 | 1 | .0000000 | 2.0000000 | 1.0000000 + 30 | 500 | 21600.0000000 | 1 | .0000000 | 12 | .0000000 | 1.0000000 | 1.0000000 + 30 | 500 | 18330.0000000 | 3 | .0000000 | 12 | .0000000 | 2.0000000 | 1.0000000 + 30 | 600 | 18033.3333333 | 3 | .0000000 | 12 | .0000000 | 3.0000000 | 1.0000000 + 40 | 700 | 11033.3333333 | 4 | .0000000 | 1 | .0000000 | 2.0000000 | 1.0000000 + 40 | 800 | 5000.0000000 | 4 | .0000000 | 1 | .0000000 | 3.0000000 | 1.0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between floor(ow_sale.vn) preceding and unbounded following ); -- mvd 1,2->3; + cn | vn | to_char +----+----+------------------- + 2 | 40 | 135.6060606 + 1 | 10 | 135.6060606 + 3 | 40 | 135.6060606 + 1 | 20 | 135.6060606 + 1 | 30 | 135.6060606 + 1 | 50 | 135.6060606 + 2 | 50 | 135.6060606 + 1 | 30 | 135.6060606 + 3 | 30 | 135.6060606 + 3 | 30 | 135.6060606 + 4 | 40 | 135.6060606 + 4 | 40 | 135.6060606 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc rows between 4 preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc rows between 4 preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc rows between 4 preceding and unbounded following ); -- mvd 3,4->2; 3,4->5; 3,4->6; + vn | to_char | cn | pn | to_char | to_char +----+-------------------+----+-----+-------------------+------------------- + 40 | 100125.3333333 | 2 | 100 | .0000000 | 10.0000000 + 10 | 100125.3333333 | 1 | 200 | .0000000 | 10.0000000 + 40 | 100125.3333333 | 3 | 200 | .0000000 | 10.0000000 + 20 | 100125.3333333 | 1 | 100 | .0000000 | 10.0000000 + 30 | 100125.3333333 | 1 | 300 | .0000000 | 10.0000000 + 50 | 26.4000000 | 1 | 400 | .0000000 | 10.0000000 + 50 | 28.2333333 | 2 | 400 | .0000000 | 20.0000000 + 30 | 30.2500000 | 1 | 500 | .0000000 | 20.0000000 + 30 | 32.4107143 | 3 | 500 | .0000000 | 30.0000000 + 30 | 34.5714286 | 3 | 600 | .0000000 | 30.0000000 + 40 | 36.3000000 | 4 | 700 | .0000000 | 30.0000000 + 40 | 36.3000000 | 4 | 800 | 1.0000000 | 30.0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between current row and current row ); -- mvd 3->2; + dt | to_char | vn +------------+-------------------+---- + 1401-01-01 | .0000000 | 40 + 1401-03-01 | .0000000 | 10 + 1401-04-01 | .0000000 | 40 + 1401-05-01 | .0000000 | 20 + 1401-05-02 | .0000000 | 30 + 1401-06-01 | .0000000 | 50 + 1401-06-01 | .0000000 | 50 + 1401-06-01 | .0000000 | 30 + 1401-06-01 | .0000000 | 30 + 1401-06-01 | .0000000 | 30 + 1401-06-01 | .0000000 | 40 + 1401-06-01 | .0000000 | 40 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between current row and current row ); -- mvd 2->4; 2->5; 2->6; + cn | pn | vn | to_char | to_char | to_char +----+-----+----+-------------------+-------------------+------------------- + 2 | 100 | 40 | .0000000 | 1.0000000 | 1100.0000000 + 1 | 200 | 10 | .0000000 | 1.0000000 | 1.0000000 + 3 | 200 | 40 | .0000000 | 1.0000000 | 1.0000000 + 1 | 100 | 20 | .0000000 | 1.0000000 | 1.0000000 + 1 | 300 | 30 | .0000000 | 1.0000000 | 1.0000000 + 1 | 400 | 50 | .0000000 | 1.0000000 | 1.0000000 + 2 | 400 | 50 | .0000000 | 1.0000000 | 1.0000000 + 1 | 500 | 30 | .0000000 | 1.0000000 | 12.0000000 + 3 | 500 | 30 | .0000000 | 1.0000000 | 12.0000000 + 3 | 600 | 30 | .0000000 | 1.0000000 | 12.0000000 + 4 | 700 | 40 | .0000000 | 1.0000000 | 1.0000000 + 4 | 800 | 40 | .0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between current row and 8 following ); -- mvd 2->6; + prc | vn | qty | vn | dt | to_char +------+----+------+----+------------+------------------- + 2400 | 40 | 1100 | 40 | 1401-01-01 | ########.##### + 0 | 10 | 1 | 10 | 1401-03-01 | 1798611.1111111 + 0 | 40 | 1 | 40 | 1401-04-01 | 1697500.0000000 + 0 | 20 | 1 | 20 | 1401-05-01 | 1575277.7777778 + 0 | 30 | 1 | 30 | 1401-05-02 | 1621250.0000000 + 0 | 50 | 1 | 50 | 1401-06-01 | 1622857.1428571 + 0 | 50 | 1 | 50 | 1401-06-01 | 1517666.6666667 + 5 | 30 | 12 | 30 | 1401-06-01 | 1145000.0000000 + 5 | 30 | 12 | 30 | 1401-06-01 | 1376666.6666667 + 5 | 30 | 12 | 30 | 1401-06-01 | 1690000.0000000 + 1 | 40 | 1 | 40 | 1401-06-01 | 5000.0000000 + 1 | 40 | 1 | 40 | 1401-06-01 | .0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.cn asc rows between current row and floor(ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.qty order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.cn asc rows between current row and floor(ow_sale.qty) following ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.qty order by ow_sale.vn desc); -- mvd 3,4->2; 3,4->5; 3,4->6; 3,1,4,8->7; 3,1,4,8->9; + dt | to_char | cn | vn | to_char | to_char | to_char | qty | to_char +------------+-------------------+----+----+-------------------+-------------------+-------------------+------+------------------- + 1401-01-01 | 135.6060606 | 2 | 40 | 12.0000000 | 12.0000000 | 1.0000000 | 1100 | 1200.0000000 + 1401-03-01 | 450.0000000 | 1 | 10 | 2.0000000 | 2.0000000 | 1.0000000 | 1 | 201.0000000 + 1401-04-01 | 200.0000000 | 3 | 40 | 2.0000000 | 2.0000000 | 1.0000000 | 1 | 201.0000000 + 1401-05-01 | 50.0000000 | 1 | 20 | 2.0000000 | 2.0000000 | 1.0000000 | 1 | 101.0000000 + 1401-05-02 | 200.0000000 | 1 | 30 | 2.0000000 | 2.0000000 | 1.0000000 | 1 | 301.0000000 + 1401-06-01 | .0000000 | 1 | 50 | 2.0000000 | 2.0000000 | 1.0000000 | 1 | 401.0000000 + 1401-06-01 | 200.0000000 | 2 | 50 | 2.0000000 | 2.0000000 | 1.0000000 | 1 | 401.0000000 + 1401-06-01 | 30.0000000 | 1 | 30 | 5.0000000 | 5.0000000 | 1.0000000 | 12 | 512.0000000 + 1401-06-01 | 33.3333333 | 3 | 30 | 4.0000000 | 4.0000000 | 1.0000000 | 12 | 512.0000000 + 1401-06-01 | 33.3333333 | 3 | 30 | 3.0000000 | 3.0000000 | 1.0000000 | 12 | 512.0000000 + 1401-06-01 | .0000000 | 4 | 40 | 2.0000000 | 2.0000000 | 1.0000000 | 1 | 701.0000000 + 1401-06-01 | .0000000 | 4 | 40 | 1.0000000 | 1.0000000 | 1.0000000 | 1 | 701.0000000 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ); -- mvd 4->3; + pn | pn | to_char | cn +-----+-----+-------------------+---- + 100 | 100 | 96083333.3333333 | 2 + 200 | 200 | 93854545.4545455 | 1 + 200 | 200 | 82455555.5555556 | 3 + 100 | 100 | 82250000.0000000 | 1 + 300 | 300 | 54553571.4285714 | 1 + 400 | 400 | 42142857.1428571 | 1 + 400 | 400 | 50266666.6666667 | 2 + 500 | 500 | 62300000.0000000 | 1 + 500 | 500 | 64916666.6666667 | 3 + 600 | 600 | 52000000.0000000 | 3 + 700 | 700 | 8000000.0000000 | 4 + 800 | 800 | .0000000 | 4 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.vn) as int),cast (floor(ow_sale.prc+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between current row and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 4->3; 6,4,2,7->5; + qty | vn | to_char | cn | to_char | prc | pn +------+----+-------------------+----+-------------------+------+----- + 1100 | 40 | 100125.3333333 | 2 | .0000000 | 2400 | 100 + 1 | 10 | 26.4000000 | 1 | .0000000 | 0 | 200 + 1 | 40 | 28.2333333 | 3 | .0000000 | 0 | 200 + 1 | 20 | 30.2500000 | 1 | .0000000 | 0 | 100 + 1 | 30 | 32.4107143 | 1 | .0000000 | 0 | 300 + 1 | 50 | 34.5714286 | 1 | .0000000 | 0 | 400 + 1 | 50 | 36.3000000 | 2 | .0000000 | 0 | 400 + 12 | 30 | 36.3000000 | 1 | .0000000 | 5 | 500 + 12 | 30 | 40.3333333 | 3 | .0000000 | 5 | 500 + 12 | 30 | 40.3333333 | 3 | .0000000 | 5 | 600 + 1 | 40 | .0000000 | 4 | .0000000 | 1 | 700 + 1 | 40 | .0000000 | 4 | .0000000 | 1 | 800 +(12 rows) + +-- VARIANCE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.cn) following and 2 following ); -- mvd 1->5; + pn | qty | cn | dt | to_char +-----+------+----+------------+------------------- + 100 | 1100 | 2 | 1401-01-01 | .0000000 + 200 | 1 | 1 | 1401-03-01 | 5000.0000000 + 200 | 1 | 3 | 1401-04-01 | .0000000 + 100 | 1 | 1 | 1401-05-01 | 5000.0000000 + 300 | 1 | 1 | 1401-05-02 | .0000000 + 400 | 1 | 1 | 1401-06-01 | 5000.0000000 + 400 | 1 | 2 | 1401-06-01 | .0000000 + 500 | 12 | 1 | 1401-06-01 | 5000.0000000 + 500 | 12 | 3 | 1401-06-01 | .0000000 + 600 | 12 | 3 | 1401-06-01 | .0000000 + 700 | 1 | 4 | 1401-06-01 | .0000000 + 800 | 1 | 4 | 1401-06-01 | .0000000 +(12 rows) + +-- VARIANCE() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.cn desc); -- mvd 1,2->3; + cn | pn | to_char +----+-----+------------------- + 1 | 300 | .0000000 + 2 | 400 | .0000000 + 1 | 400 | .0000000 + 3 | 500 | .0000000 + 1 | 500 | .0000000 + 4 | 800 | .0000000 + 2 | 100 | .0000000 + 1 | 100 | 200.0000000 + 3 | 200 | .0000000 + 1 | 200 | 450.0000000 + 3 | 600 | .0000000 + 4 | 700 | .0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.cn desc range unbounded preceding ); -- mvd 2,4,5,1->3; + pn | cn | to_char | dt | vn +-----+----+-------------------+------------+---- + 200 | 1 | .0000000 | 1401-03-01 | 10 + 600 | 3 | .0000000 | 1401-06-01 | 30 + 700 | 4 | .0000000 | 1401-06-01 | 40 + 100 | 2 | .0000000 | 1401-01-01 | 40 + 200 | 3 | .0000000 | 1401-04-01 | 40 + 100 | 1 | .0000000 | 1401-05-01 | 20 + 300 | 1 | .0000000 | 1401-05-02 | 30 + 400 | 2 | .0000000 | 1401-06-01 | 50 + 400 | 1 | .0000000 | 1401-06-01 | 50 + 500 | 3 | .0000000 | 1401-06-01 | 30 + 500 | 1 | .0000000 | 1401-06-01 | 30 + 800 | 4 | .0000000 | 1401-06-01 | 40 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn/ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc range floor(ow_sale.cn) preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 1,3,4,5->2; 7->6; 3->8; 3->9; 3->10; + prc | to_char | cn | vn | qty | to_char | pn | to_char | to_char | to_char +------+-------------------+----+----+------+-------------------+-----+-------------------+-------------------+------------------- + 2400 | .0000000 | 2 | 40 | 1100 | .9090909 | 100 | .0000000 | 1.0000000 | 100.0000000 + 0 | .0000000 | 1 | 10 | 1 | .7272727 | 200 | 1.0000000 | 2.0000000 | 200.0000000 + 0 | .0000000 | 3 | 40 | 1 | .7272727 | 200 | 3.0000000 | 3.0000000 | 200.0000000 + 0 | .0000000 | 1 | 20 | 1 | .9090909 | 100 | 1.0000000 | 4.0000000 | 200.0000000 + 0 | .0000000 | 1 | 30 | 1 | .6363636 | 300 | 1.0000000 | 5.0000000 | 300.0000000 + 0 | .0000000 | 1 | 50 | 1 | .4545455 | 400 | 1.0000000 | 6.0000000 | 400.0000000 + 0 | .0000000 | 2 | 50 | 1 | .4545455 | 400 | 2.0000000 | 7.0000000 | 400.0000000 + 5 | .0000000 | 1 | 30 | 12 | .2727273 | 500 | 3.0000000 | 8.0000000 | 500.0000000 + 5 | .0000000 | 3 | 30 | 12 | .2727273 | 500 | 1.0000000 | 9.0000000 | 500.0000000 + 5 | .0000000 | 3 | 30 | 12 | .1818182 | 600 | 1.0000000 | 10.0000000 | 600.0000000 + 1 | .0000000 | 4 | 40 | 1 | .0909091 | 700 | .0000000 | 11.0000000 | 700.0000000 + 1 | .0000000 | 4 | 40 | 1 | .0000000 | 800 | 4.0000000 | 12.0000000 | 800.0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc range current row ); -- mvd 1,4,5,2->3; + prc | vn | to_char | cn | dt +------+----+-------------------+----+------------ + 0 | 40 | .0000000 | 3 | 1401-04-01 + 0 | 20 | .0000000 | 1 | 1401-05-01 + 0 | 50 | .0000000 | 2 | 1401-06-01 + 0 | 10 | .0000000 | 1 | 1401-03-01 + 0 | 30 | .0000000 | 1 | 1401-05-02 + 0 | 50 | .0000000 | 1 | 1401-06-01 + 1 | 40 | 5000.0000000 | 4 | 1401-06-01 + 1 | 40 | 5000.0000000 | 4 | 1401-06-01 + 5 | 30 | .0000000 | 1 | 1401-06-01 + 5 | 30 | 125000.0000000 | 3 | 1401-06-01 + 5 | 30 | 125000.0000000 | 3 | 1401-06-01 + 2400 | 40 | .0000000 | 2 | 1401-01-01 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.pn desc range current row ), +win2 as (order by ow_sale.cn desc); -- mvd 6,1,2,7->5; 1->8; 1->9; 6,1,2,7->10; + cn | vn | vn | vn | to_char | prc | pn | to_char | to_char | to_char +----+----+----+----+-------------------+------+-----+-------------------+-------------------+------------------- + 4 | 40 | 40 | 40 | .0000000 | 1 | 800 | 1.0000000 | 1.0000000 | 1.0000000 + 4 | 40 | 40 | 40 | .0000000 | 1 | 700 | 2.0000000 | 2.0000000 | 1.0000000 + 3 | 30 | 30 | 30 | .0000000 | 5 | 500 | 3.0000000 | 3.0000000 | 1.0000000 + 3 | 40 | 40 | 40 | .0000000 | 0 | 200 | 4.0000000 | 4.0000000 | 1.0000000 + 3 | 30 | 30 | 30 | .0000000 | 5 | 600 | 5.0000000 | 5.0000000 | 1.0000000 + 2 | 50 | 50 | 50 | .0000000 | 0 | 400 | 6.0000000 | 6.0000000 | 1.0000000 + 2 | 40 | 40 | 40 | .0000000 | 2400 | 100 | 7.0000000 | 7.0000000 | 1.0000000 + 1 | 30 | 30 | 30 | .0000000 | 0 | 300 | 8.0000000 | 8.0000000 | 1.0000000 + 1 | 50 | 50 | 50 | .0000000 | 0 | 400 | 9.0000000 | 9.0000000 | 1.0000000 + 1 | 30 | 30 | 30 | .0000000 | 5 | 500 | 10.0000000 | 10.0000000 | 1.0000000 + 1 | 10 | 10 | 10 | .0000000 | 0 | 200 | 11.0000000 | 11.0000000 | 1.0000000 + 1 | 20 | 20 | 20 | .0000000 | 0 | 100 | 12.0000000 | 12.0000000 | 1.0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.qty order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.prc+ow_sale.qty) preceding ); -- mvd 8,4,9,5,1->7; + pn | pn | dt | cn | vn | dt | to_char | prc | qty +-----+-----+------------+----+----+------------+-------------------+------+------ + 200 | 200 | 1401-03-01 | 1 | 10 | 1401-03-01 | .0000000 | 0 | 1 + 100 | 100 | 1401-05-01 | 1 | 20 | 1401-05-01 | .0000000 | 0 | 1 + 500 | 500 | 1401-06-01 | 1 | 30 | 1401-06-01 | .0000000 | 5 | 12 + 500 | 500 | 1401-06-01 | 3 | 30 | 1401-06-01 | .0000000 | 5 | 12 + 200 | 200 | 1401-04-01 | 3 | 40 | 1401-04-01 | .0000000 | 0 | 1 + 800 | 800 | 1401-06-01 | 4 | 40 | 1401-06-01 | .0000000 | 1 | 1 + 300 | 300 | 1401-05-02 | 1 | 30 | 1401-05-02 | .0000000 | 0 | 1 + 600 | 600 | 1401-06-01 | 3 | 30 | 1401-06-01 | .0000000 | 5 | 12 + 700 | 700 | 1401-06-01 | 4 | 40 | 1401-06-01 | .0000000 | 1 | 1 + 100 | 100 | 1401-01-01 | 2 | 40 | 1401-01-01 | .0000000 | 2400 | 1100 + 400 | 400 | 1401-06-01 | 1 | 50 | 1401-06-01 | .0000000 | 0 | 1 + 400 | 400 | 1401-06-01 | 2 | 50 | 1401-06-01 | .0000000 | 0 | 1 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.pn)) OVER(partition by ow_sale.prc,ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn) preceding ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.cn desc), +win3 as (order by ow_sale.vn desc), +win4 as (order by ow_sale.cn desc); -- mvd 4,5->3; 4,5->6; 5,2,1->7; 9->8; 5->10; 4,5->11; + pn | qty | to_char | prc | cn | to_char | to_char | to_char | vn | to_char | to_char +-----+------+-------------------+------+----+-------------------+-------------------+-------------------+----+-------------------+------------------- + 400 | 1 | .0000000 | 0 | 1 | .0000000 | 1.0000000 | .1666667 | 50 | 1.0000000 | .0000000 + 400 | 1 | .0000000 | 0 | 2 | .0000000 | .5000000 | .1666667 | 50 | .5833333 | .0000000 + 200 | 1 | .0000000 | 0 | 3 | .0000000 | .5000000 | .5000000 | 40 | .4166667 | .0000000 + 800 | 1 | .0000000 | 1 | 4 | .0000000 | 1.0000000 | .5000000 | 40 | .1666667 | .0000000 + 700 | 1 | .0000000 | 1 | 4 | .0000000 | 1.0000000 | .5000000 | 40 | .1666667 | .0000000 + 100 | 1100 | .0000000 | 2400 | 2 | .0000000 | 1.0000000 | .5000000 | 40 | .5833333 | .0000000 + 300 | 1 | .0000000 | 0 | 1 | .0000000 | 1.0000000 | .8333333 | 30 | 1.0000000 | .0000000 + 500 | 12 | .0000000 | 5 | 1 | .0000000 | 1.0000000 | .8333333 | 30 | 1.0000000 | .0000000 + 500 | 12 | .0000000 | 5 | 3 | .0000000 | .5000000 | .8333333 | 30 | .4166667 | .0000000 + 600 | 12 | .0000000 | 5 | 3 | .0000000 | 1.0000000 | .8333333 | 30 | .4166667 | .0000000 + 100 | 1 | .0000000 | 0 | 1 | .0000000 | 1.0000000 | .9166667 | 20 | 1.0000000 | .0000000 + 200 | 1 | .0000000 | 0 | 1 | .0000000 | 1.0000000 | 1.0000000 | 10 | 1.0000000 | .0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.vn order by ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 4,5,2->3; + dt | vn | to_char | prc | cn +------------+----+-------------------+------+---- + 1401-06-01 | 40 | 5000.0000000 | 1 | 4 + 1401-06-01 | 40 | 5000.0000000 | 1 | 4 + 1401-03-01 | 10 | .0000000 | 0 | 1 + 1401-05-01 | 20 | .0000000 | 0 | 1 + 1401-05-02 | 30 | .0000000 | 0 | 1 + 1401-04-01 | 40 | .0000000 | 0 | 3 + 1401-06-01 | 50 | .0000000 | 0 | 2 + 1401-06-01 | 50 | .0000000 | 0 | 1 + 1401-06-01 | 30 | 5000.0000000 | 5 | 3 + 1401-06-01 | 30 | 5000.0000000 | 5 | 3 + 1401-06-01 | 30 | 3333.3333333 | 5 | 1 + 1401-01-01 | 40 | .0000000 | 2400 | 2 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.vn)) OVER(partition by ow_sale.pn order by ow_sale.pn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(partition by ow_sale.pn order by ow_sale.pn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.pn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.cn desc); -- mvd 2->7; 2->8; 2->9; 1->10; 2->11; 1->12; + cn | pn | pn | vn | prc | pn | to_char | to_char | to_char | to_char | to_char | to_char +----+-----+-----+----+------+-----+-------------------+-------------------+-------------------+-------------------+-------------------+------------------- + 4 | 800 | 800 | 40 | 1 | 800 | .0000000 | 80.0000000 | 1.0000000 | 1.0000000 | 40.0000000 | 1.0000000 + 4 | 700 | 700 | 40 | 1 | 700 | .0000000 | 80.0000000 | 1.0000000 | 1.0000000 | 40.0000000 | 1.0000000 + 3 | 200 | 200 | 40 | 0 | 200 | 2.0000000 | 80.0000000 | 1.0000000 | 2.0000000 | 10.0000000 | 2.0000000 + 3 | 600 | 600 | 30 | 5 | 600 | .0000000 | 60.0000000 | 12.0000000 | 2.0000000 | 30.0000000 | 2.0000000 + 3 | 500 | 500 | 30 | 5 | 500 | 2.0000000 | 60.0000000 | 12.0000000 | 2.0000000 | 30.0000000 | 2.0000000 + 2 | 400 | 400 | 50 | 0 | 400 | .5000000 | 100.0000000 | 1.0000000 | 3.0000000 | 50.0000000 | 3.0000000 + 2 | 100 | 100 | 40 | 2400 | 100 | 2882400.5000000 | 80.0000000 | 1.0000000 | 3.0000000 | 20.0000000 | 3.0000000 + 1 | 100 | 100 | 20 | 0 | 100 | 2882400.5000000 | 80.0000000 | 1.0000000 | 4.0000000 | 20.0000000 | 4.0000000 + 1 | 200 | 200 | 10 | 0 | 200 | 2.0000000 | 80.0000000 | 1.0000000 | 4.0000000 | 10.0000000 | 4.0000000 + 1 | 300 | 300 | 30 | 0 | 300 | .0000000 | 60.0000000 | 1.0000000 | 4.0000000 | 30.0000000 | 4.0000000 + 1 | 400 | 400 | 50 | 0 | 400 | .5000000 | 100.0000000 | 1.0000000 | 4.0000000 | 50.0000000 | 4.0000000 + 1 | 500 | 500 | 30 | 5 | 500 | 2.0000000 | 60.0000000 | 12.0000000 | 4.0000000 | 30.0000000 | 4.0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.dt order by ow_sale.pn asc range between unbounded preceding and 1 following ); -- mvd 3,1,4,5,6->2; + dt | to_char | prc | cn | vn | pn +------------+-------------------+------+----+----+----- + 1401-05-01 | .0000000 | 0 | 1 | 20 | 100 + 1401-03-01 | .0000000 | 0 | 1 | 10 | 200 + 1401-06-01 | .0000000 | 0 | 2 | 50 | 400 + 1401-04-01 | .0000000 | 0 | 3 | 40 | 200 + 1401-06-01 | .0000000 | 5 | 3 | 30 | 600 + 1401-06-01 | .0000000 | 1 | 4 | 40 | 800 + 1401-05-02 | .0000000 | 0 | 1 | 30 | 300 + 1401-06-01 | .0000000 | 0 | 1 | 50 | 400 + 1401-06-01 | .0000000 | 5 | 1 | 30 | 500 + 1401-01-01 | .0000000 | 2400 | 2 | 40 | 100 + 1401-06-01 | .0000000 | 5 | 3 | 30 | 500 + 1401-06-01 | .0000000 | 1 | 4 | 40 | 700 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn) following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.pn asc); -- mvd 5,2,6,1,7,8->4; 2->9; 8->10; + vn | cn | cn | to_char | prc | dt | qty | pn | to_char | to_char +----+----+----+-------------------+------+------------+------+-----+-------------------+------------------- + 40 | 2 | 2 | .0000000 | 2400 | 1401-01-01 | 1100 | 100 | .0000000 | .0000000 + 10 | 1 | 1 | .0000000 | 0 | 1401-03-01 | 1 | 200 | .0000000 | .1818182 + 40 | 3 | 3 | .0000000 | 0 | 1401-04-01 | 1 | 200 | 1100.0000000 | .1818182 + 20 | 1 | 1 | .0000000 | 0 | 1401-05-01 | 1 | 100 | 1.0000000 | .0000000 + 30 | 1 | 1 | .0000000 | 0 | 1401-05-02 | 1 | 300 | 1.0000000 | .3636364 + 50 | 1 | 1 | .0000000 | 0 | 1401-06-01 | 1 | 400 | 1.0000000 | .4545455 + 50 | 2 | 2 | .0000000 | 0 | 1401-06-01 | 1 | 400 | 1.0000000 | .4545455 + 30 | 1 | 1 | .0000000 | 5 | 1401-06-01 | 12 | 500 | .0000000 | .6363636 + 30 | 3 | 3 | .0000000 | 5 | 1401-06-01 | 12 | 500 | .0000000 | .6363636 + 30 | 3 | 3 | .0000000 | 5 | 1401-06-01 | 12 | 600 | .0000000 | .8181818 + 40 | 4 | 4 | .0000000 | 1 | 1401-06-01 | 1 | 700 | 12.0000000 | .9090909 + 40 | 4 | 4 | .0000000 | 1 | 1401-06-01 | 1 | 800 | 12.0000000 | 1.0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.vn order by ow_sale.cn asc range between unbounded preceding and unbounded following ); -- mvd 4,5,6->3; + pn | pn | to_char | prc | cn | vn +-----+-----+-------------------+------+----+---- + 800 | 800 | .0000000 | 1 | 4 | 40 + 700 | 700 | .0000000 | 1 | 4 | 40 + 200 | 200 | .0000000 | 0 | 1 | 10 + 100 | 100 | .0000000 | 0 | 1 | 20 + 300 | 300 | .0000000 | 0 | 1 | 30 + 500 | 500 | .0000000 | 5 | 1 | 30 + 500 | 500 | .0000000 | 5 | 3 | 30 + 600 | 600 | .0000000 | 5 | 3 | 30 + 200 | 200 | .0000000 | 0 | 3 | 40 + 100 | 100 | .0000000 | 2400 | 2 | 40 + 400 | 400 | .0000000 | 0 | 1 | 50 + 400 | 400 | .0000000 | 0 | 2 | 50 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty*ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.vn asc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn asc); -- mvd 4->7; 2,3->8; + prc | cn | pn | vn | prc | prc | to_char | to_char +------+----+-----+----+------+------+-------------------+------------------- + 0 | 1 | 200 | 10 | 0 | 0 | .0000000 | .0000000 + 0 | 1 | 100 | 20 | 0 | 0 | .0000000 | 40.0000000 + 5 | 3 | 600 | 30 | 5 | 5 | 15833.3333333 | .0000000 + 5 | 1 | 500 | 30 | 5 | 5 | 15833.3333333 | .0000000 + 5 | 3 | 500 | 30 | 5 | 5 | 15833.3333333 | .0000000 + 0 | 1 | 300 | 30 | 0 | 0 | 15833.3333333 | .0000000 + 1 | 4 | 700 | 40 | 1 | 1 | 123333.3333333 | .0000000 + 1 | 4 | 800 | 40 | 1 | 1 | 123333.3333333 | .0000000 + 2400 | 2 | 100 | 40 | 2400 | 2400 | 123333.3333333 | .0000000 + 0 | 3 | 200 | 40 | 0 | 0 | 123333.3333333 | 10.0000000 + 0 | 2 | 400 | 50 | 0 | 0 | .0000000 | 50.0000000 + 0 | 1 | 400 | 50 | 0 | 0 | .0000000 | .0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.vn order by ow_sale.pn desc range between floor(ow_sale.cn) preceding and 4 preceding ); -- mvd 4,7,8,9->6; + prc | cn | prc | dt | prc | to_char | vn | qty | pn +------+----+------+------------+------+-------------------+----+------+----- + 0 | 3 | 0 | 1401-04-01 | 0 | .0000000 | 40 | 1 | 200 + 0 | 1 | 0 | 1401-05-01 | 0 | .0000000 | 20 | 1 | 100 + 5 | 3 | 5 | 1401-06-01 | 5 | .0000000 | 30 | 12 | 600 + 5 | 1 | 5 | 1401-06-01 | 5 | .0000000 | 30 | 12 | 500 + 5 | 3 | 5 | 1401-06-01 | 5 | .0000000 | 30 | 12 | 500 + 2400 | 2 | 2400 | 1401-01-01 | 2400 | .0000000 | 40 | 1100 | 100 + 0 | 1 | 0 | 1401-03-01 | 0 | .0000000 | 10 | 1 | 200 + 0 | 1 | 0 | 1401-05-02 | 0 | .0000000 | 30 | 1 | 300 + 1 | 4 | 1 | 1401-06-01 | 1 | .0000000 | 40 | 1 | 800 + 1 | 4 | 1 | 1401-06-01 | 1 | .0000000 | 40 | 1 | 700 + 0 | 2 | 0 | 1401-06-01 | 0 | .0000000 | 50 | 1 | 400 + 0 | 1 | 0 | 1401-06-01 | 0 | .0000000 | 50 | 1 | 400 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.pn desc range between floor(ow_sale.vn/ow_sale.vn) preceding and current row ); -- mvd 3,4,5->2; + prc | to_char | cn | vn | pn +------+-------------------+----+----+----- + 0 | .0000000 | 1 | 10 | 200 + 0 | .0000000 | 1 | 20 | 100 + 5 | .0000000 | 1 | 30 | 500 + 0 | .0000000 | 1 | 30 | 300 + 0 | .0000000 | 1 | 50 | 400 + 5 | .0000000 | 3 | 30 | 600 + 5 | .0000000 | 3 | 30 | 500 + 0 | .0000000 | 3 | 40 | 200 + 2400 | .0000000 | 2 | 40 | 100 + 0 | .0000000 | 2 | 50 | 400 + 1 | .0000000 | 4 | 40 | 800 + 1 | .0000000 | 4 | 40 | 700 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.qty order by ow_sale.cn asc range between floor(ow_sale.cn) preceding and current row ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.vn asc), +win4 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 6,1,7,4->5; 1->8; 1->9; 7->10; 7->11; + cn | cn | pn | qty | to_char | dt | vn | to_char | to_char | to_char | to_char +----+----+-----+------+-------------------+------------+----+-------------------+-------------------+-------------------+------------------- + 2 | 2 | 100 | 1100 | .0000000 | 1401-01-01 | 40 | 6.0000000 | 1.0000000 | .5454545 | .0000000 + 1 | 1 | 200 | 1 | .0000000 | 1401-03-01 | 10 | 1.0000000 | 1.0000000 | .0000000 | 1.0000000 + 3 | 3 | 200 | 1 | .0000000 | 1401-04-01 | 40 | 8.0000000 | 1.0000000 | .5454545 | 1.0000000 + 1 | 1 | 100 | 1 | .0000000 | 1401-05-01 | 20 | 1.0000000 | 1.0000000 | .0909091 | 1.0000000 + 1 | 1 | 300 | 1 | .0000000 | 1401-05-02 | 30 | 1.0000000 | 1.0000000 | .1818182 | 1.0000000 + 1 | 1 | 400 | 1 | .0000000 | 1401-06-01 | 50 | 1.0000000 | 1.0000000 | .9090909 | 1.0000000 + 2 | 2 | 400 | 1 | .0000000 | 1401-06-01 | 50 | 6.0000000 | 1.0000000 | .9090909 | 12.0000000 + 1 | 1 | 500 | 12 | .0000000 | 1401-06-01 | 30 | 1.0000000 | 1.0000000 | .1818182 | .0000000 + 3 | 3 | 500 | 12 | .0000000 | 1401-06-01 | 30 | 8.0000000 | 1.0000000 | .1818182 | .0000000 + 3 | 3 | 600 | 12 | .0000000 | 1401-06-01 | 30 | 8.0000000 | 1.0000000 | .1818182 | .0000000 + 4 | 4 | 700 | 1 | .0000000 | 1401-06-01 | 40 | 11.0000000 | 1.0000000 | .5454545 | 1.0000000 + 4 | 4 | 800 | 1 | .0000000 | 1401-06-01 | 40 | 11.0000000 | 1.0000000 | .5454545 | .0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc order by ow_sale.cn asc range between 4 preceding and 0 following ); -- mvd 4,2,5->3; + pn | cn | to_char | prc | dt +-----+----+-------------------+------+------------ + 200 | 1 | .0000000 | 0 | 1401-03-01 + 300 | 1 | .0000000 | 0 | 1401-05-02 + 400 | 1 | .0000000 | 0 | 1401-06-01 + 400 | 2 | .5000000 | 0 | 1401-06-01 + 500 | 1 | .0000000 | 5 | 1401-06-01 + 600 | 3 | .0000000 | 5 | 1401-06-01 + 500 | 3 | .0000000 | 5 | 1401-06-01 + 100 | 2 | .0000000 | 2400 | 1401-01-01 + 200 | 3 | .0000000 | 0 | 1401-04-01 + 100 | 1 | .0000000 | 0 | 1401-05-01 + 800 | 4 | .0000000 | 1 | 1401-06-01 + 700 | 4 | .0000000 | 1 | 1401-06-01 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.cn)) OVER(partition by ow_sale.vn order by ow_sale.cn desc range between floor(ow_sale.vn+ow_sale.qty) preceding and 0 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn desc range between floor(ow_sale.vn+ow_sale.qty) preceding and 0 following ), +win2 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.qty order by ow_sale.pn desc); -- mvd 6,1->5; 8,6,2,1,4->7; 6,1->9; + vn | qty | vn | pn | to_char | cn | to_char | prc | to_char +----+------+----+-----+-------------------+----+-------------------+------+------------------- + 10 | 1 | 10 | 200 | .0000000 | 1 | .0000000 | 0 | 1.0000000 + 20 | 1 | 20 | 100 | .0000000 | 1 | .0000000 | 0 | 1.0000000 + 30 | 12 | 30 | 600 | .0000000 | 3 | .0000000 | 5 | 2.0000000 + 30 | 12 | 30 | 500 | .0000000 | 3 | 1.0000000 | 5 | 2.0000000 + 30 | 12 | 30 | 500 | 30.2500000 | 1 | .0000000 | 5 | 4.0000000 + 30 | 1 | 30 | 300 | 30.2500000 | 1 | .0000000 | 0 | 4.0000000 + 40 | 1 | 40 | 800 | .0000000 | 4 | .0000000 | 1 | 2.0000000 + 40 | 1 | 40 | 700 | .0000000 | 4 | 1.0000000 | 1 | 2.0000000 + 40 | 1 | 40 | 200 | .0000000 | 3 | .0000000 | 0 | 3.0000000 + 40 | 1100 | 40 | 100 | 301950.2500000 | 2 | .0000000 | 2400 | 4.0000000 + 50 | 1 | 50 | 400 | .0000000 | 2 | .0000000 | 0 | 1.0000000 + 50 | 1 | 50 | 400 | .0000000 | 1 | .0000000 | 0 | 2.0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn asc range between 4 preceding and unbounded following ); -- mvd 1,2->6; + cn | vn | vn | dt | dt | to_char +----+----+----+------------+------------+------------------- + 1 | 10 | 10 | 1401-03-01 | 1401-03-01 | .0000000 + 1 | 20 | 20 | 1401-05-01 | 1401-05-01 | .0000000 + 1 | 30 | 30 | 1401-05-02 | 1401-05-02 | 6.2500000 + 1 | 30 | 30 | 1401-06-01 | 1401-06-01 | 6.2500000 + 3 | 30 | 30 | 1401-06-01 | 1401-06-01 | 6.2500000 + 3 | 30 | 30 | 1401-06-01 | 1401-06-01 | 6.2500000 + 2 | 40 | 40 | 1401-01-01 | 1401-01-01 | 1439200.3333333 + 3 | 40 | 40 | 1401-04-01 | 1401-04-01 | 1439200.3333333 + 4 | 40 | 40 | 1401-06-01 | 1401-06-01 | 1439200.3333333 + 4 | 40 | 40 | 1401-06-01 | 1401-06-01 | 1439200.3333333 + 1 | 50 | 50 | 1401-06-01 | 1401-06-01 | .0000000 + 2 | 50 | 50 | 1401-06-01 | 1401-06-01 | .0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn/ow_sale.vn)) OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.cn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.cn asc range between 1 preceding and unbounded following ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.cn order by ow_sale.pn desc); -- mvd 3,4,5,6->2; 6->7; 6->8; 3,6->9; 3,6->10; 3,6->11; + prc | to_char | cn | vn | qty | pn | to_char | to_char | to_char | to_char | to_char +------+-------------------+----+----+------+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | .0000000 | 4 | 40 | 1 | 800 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 1 | .0000000 | 4 | 40 | 1 | 700 | .0909091 | 1.0000000 | 1.0000000 | 2.0000000 | 2.0000000 + 5 | .0000000 | 3 | 30 | 12 | 600 | .1818182 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 5 | .0000000 | 3 | 30 | 12 | 500 | .2727273 | 1.0000000 | .5000000 | 2.0000000 | 2.0000000 + 5 | .0000000 | 1 | 30 | 12 | 500 | .2727273 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 0 | .0000000 | 1 | 50 | 1 | 400 | .4545455 | 1.0000000 | .2500000 | 2.0000000 | 2.0000000 + 0 | .0000000 | 2 | 50 | 1 | 400 | .4545455 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 0 | .0000000 | 1 | 30 | 1 | 300 | .6363636 | 1.0000000 | .5000000 | 3.0000000 | 3.0000000 + 0 | .0000000 | 3 | 40 | 1 | 200 | .7272727 | 1.0000000 | 1.0000000 | 3.0000000 | 3.0000000 + 0 | .0000000 | 1 | 10 | 1 | 200 | .7272727 | 1.0000000 | .7500000 | 4.0000000 | 4.0000000 + 0 | .0000000 | 1 | 20 | 1 | 100 | .9090909 | 1.0000000 | 1.0000000 | 5.0000000 | 5.0000000 + 2400 | .0000000 | 2 | 40 | 1100 | 100 | .9090909 | 1.0000000 | 1.0000000 | 2.0000000 | 2.0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.cn desc range between current row and current row ); -- mvd 4,3,8->7; + prc | qty | dt | cn | dt | cn | to_char | pn +------+------+------------+----+------------+----+-------------------+----- + 0 | 1 | 1401-03-01 | 1 | 1401-03-01 | 1 | .0000000 | 200 + 5 | 12 | 1401-06-01 | 3 | 1401-06-01 | 3 | .0000000 | 600 + 1 | 1 | 1401-06-01 | 4 | 1401-06-01 | 4 | .0000000 | 700 + 2400 | 1100 | 1401-01-01 | 2 | 1401-01-01 | 2 | .0000000 | 100 + 0 | 1 | 1401-04-01 | 3 | 1401-04-01 | 3 | .0000000 | 200 + 0 | 1 | 1401-05-01 | 1 | 1401-05-01 | 1 | .0000000 | 100 + 0 | 1 | 1401-05-02 | 1 | 1401-05-02 | 1 | .0000000 | 300 + 0 | 1 | 1401-06-01 | 2 | 1401-06-01 | 2 | .0000000 | 400 + 0 | 1 | 1401-06-01 | 1 | 1401-06-01 | 1 | .0000000 | 400 + 5 | 12 | 1401-06-01 | 3 | 1401-06-01 | 3 | .0000000 | 500 + 5 | 12 | 1401-06-01 | 1 | 1401-06-01 | 1 | .0000000 | 500 + 1 | 1 | 1401-06-01 | 4 | 1401-06-01 | 4 | .0000000 | 800 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.vn) as int),cast (floor(ow_sale.pn+ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc+ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.pn desc range between current row and current row ), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc), +win4 as (partition by ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,4->2; 1,4->5; 1,4->6; 8,1,3,9,4->7; 8,1,3->10; + cn | to_char | vn | pn | to_char | to_char | to_char | prc | qty | to_char +----+-------------------+----+-----+-------------------+-------------------+-------------------+------+------+------------------- + 1 | .0000000 | 30 | 300 | .0000000 | 1.0000000 | .0000000 | 0 | 1 | .0000000 + 2 | .0000000 | 50 | 400 | .0000000 | 1.0000000 | .0000000 | 0 | 1 | .0000000 + 1 | .0000000 | 50 | 400 | .0000000 | 1.0000000 | .0000000 | 0 | 1 | .0000000 + 1 | .0000000 | 30 | 500 | .0000000 | 1.0000000 | .0000000 | 5 | 12 | .0000000 + 3 | .0000000 | 30 | 500 | .0000000 | 1.0000000 | .0000000 | 5 | 12 | .0000000 + 4 | .0000000 | 40 | 800 | .0000000 | 1.0000000 | .0000000 | 1 | 1 | .0000000 + 1 | .0000000 | 20 | 100 | .0000000 | 1.0000000 | .0000000 | 0 | 1 | .0000000 + 2 | .0000000 | 40 | 100 | .0000000 | 1.0000000 | .0000000 | 2400 | 1100 | .0000000 + 1 | .0000000 | 10 | 200 | .0000000 | 1.0000000 | .0000000 | 0 | 1 | .0000000 + 3 | .0000000 | 40 | 200 | .0000000 | 1.0000000 | .0000000 | 0 | 1 | .0000000 + 3 | .0000000 | 30 | 600 | .0000000 | 1.0000000 | .0000000 | 5 | 12 | .0000000 + 4 | .0000000 | 40 | 700 | .0000000 | 1.0000000 | .0000000 | 1 | 1 | .0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.prc order by ow_sale.pn asc range between current row and 3 following ); -- mvd 3,4,5->2; + vn | to_char | prc | cn | pn +----+-------------------+------+----+----- + 20 | .0000000 | 0 | 1 | 100 + 10 | .0000000 | 0 | 1 | 200 + 30 | .0000000 | 0 | 1 | 300 + 50 | .0000000 | 0 | 1 | 400 + 40 | .0000000 | 0 | 3 | 200 + 40 | .0000000 | 1 | 4 | 700 + 40 | .0000000 | 1 | 4 | 800 + 30 | .0000000 | 5 | 1 | 500 + 30 | .0000000 | 5 | 3 | 500 + 30 | .0000000 | 5 | 3 | 600 + 50 | .0000000 | 0 | 2 | 400 + 40 | .0000000 | 2400 | 2 | 100 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.pn desc range between current row and floor(ow_sale.prc) following ), +win2 as (order by ow_sale.cn asc); -- mvd 3,4->2; 3->5; + vn | to_char | cn | pn | to_char +----+-------------------+----+-----+------------------- + 30 | .0000000 | 1 | 500 | 1.0000000 + 50 | .0000000 | 1 | 400 | 2.0000000 + 30 | .0000000 | 1 | 300 | 3.0000000 + 10 | .0000000 | 1 | 200 | 4.0000000 + 20 | .0000000 | 1 | 100 | 5.0000000 + 50 | .0000000 | 2 | 400 | 6.0000000 + 40 | .0000000 | 2 | 100 | 7.0000000 + 30 | .0000000 | 3 | 600 | 8.0000000 + 30 | .0000000 | 3 | 500 | 9.0000000 + 40 | .0000000 | 3 | 200 | 10.0000000 + 40 | .0000000 | 4 | 800 | 11.0000000 + 40 | .0000000 | 4 | 700 | 12.0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.pn desc range between current row and unbounded following ); -- mvd 3,1,4->2; + dt | to_char | cn | pn +------------+-------------------+----+----- + 1401-01-01 | .0000000 | 2 | 100 + 1401-03-01 | .0000000 | 1 | 200 + 1401-06-01 | .0000000 | 2 | 400 + 1401-06-01 | .0000000 | 3 | 600 + 1401-06-01 | .0000000 | 4 | 800 + 1401-04-01 | .0000000 | 3 | 200 + 1401-05-01 | .0000000 | 1 | 100 + 1401-05-02 | .0000000 | 1 | 300 + 1401-06-01 | .0000000 | 1 | 400 + 1401-06-01 | .0000000 | 1 | 500 + 1401-06-01 | .0000000 | 3 | 500 + 1401-06-01 | .0000000 | 4 | 700 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.cn,ow_sale.qty order by ow_sale.cn asc range between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn asc), +win3 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.qty order by ow_sale.vn asc); -- mvd 7,1,8,2,3->6; 3->9; 1,8,3,2->10; 3->11; + cn | qty | vn | pn | cn | to_char | prc | dt | to_char | to_char | to_char +----+------+----+-----+----+-------------------+------+------------+-------------------+-------------------+------------------- + 2 | 1100 | 40 | 100 | 2 | .0000000 | 2400 | 1401-01-01 | .0000000 | .0000000 | 1.0000000 + 1 | 1 | 10 | 200 | 1 | .0000000 | 0 | 1401-03-01 | 1.0000000 | .0000000 | 2.0000000 + 3 | 1 | 40 | 200 | 3 | .0000000 | 0 | 1401-04-01 | 1.0000000 | .0000000 | 3.0000000 + 1 | 1 | 20 | 100 | 1 | .0000000 | 0 | 1401-05-01 | 1.0000000 | .0000000 | 4.0000000 + 1 | 1 | 30 | 300 | 1 | .0000000 | 0 | 1401-05-02 | 1.0000000 | .0000000 | 5.0000000 + 1 | 1 | 50 | 400 | 1 | .0000000 | 0 | 1401-06-01 | 1.0000000 | .0000000 | 6.0000000 + 2 | 1 | 50 | 400 | 2 | .0000000 | 0 | 1401-06-01 | 1.0000000 | .0000000 | 7.0000000 + 1 | 12 | 30 | 500 | 1 | .0000000 | 5 | 1401-06-01 | .0000000 | .0000000 | 8.0000000 + 3 | 12 | 30 | 500 | 3 | .0000000 | 5 | 1401-06-01 | .0000000 | .0000000 | 9.0000000 + 3 | 12 | 30 | 600 | 3 | .0000000 | 5 | 1401-06-01 | .0000000 | .0000000 | 10.0000000 + 4 | 1 | 40 | 700 | 4 | .0000000 | 1 | 1401-06-01 | 1.0000000 | .0000000 | 11.0000000 + 4 | 1 | 40 | 800 | 4 | .0000000 | 1 | 1401-06-01 | .0000000 | .0000000 | 12.0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.vn desc range between 0 following and floor(ow_sale.prc) following ); -- mvd 1,3,4,5->2; + cn | to_char | dt | vn | pn +----+-------------------+------------+----+----- + 3 | .0000000 | 1401-04-01 | 40 | 200 + 1 | .0000000 | 1401-05-01 | 20 | 100 + 1 | .0000000 | 1401-05-02 | 30 | 300 + 1 | .0000000 | 1401-06-01 | 50 | 400 + 1 | .0000000 | 1401-06-01 | 30 | 500 + 3 | .0000000 | 1401-06-01 | 30 | 500 + 4 | .0000000 | 1401-06-01 | 40 | 700 + 2 | .0000000 | 1401-01-01 | 40 | 100 + 1 | .0000000 | 1401-03-01 | 10 | 200 + 2 | .0000000 | 1401-06-01 | 50 | 400 + 3 | .0000000 | 1401-06-01 | 30 | 600 + 4 | .0000000 | 1401-06-01 | 40 | 800 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.pn desc range between floor(ow_sale.qty) following and 3 following ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc); -- mvd 3,4,5,1,6->2; 3,4,5,1,6->7; 3,4,5,1,6->8; + qty | to_char | dt | cn | vn | pn | to_char | to_char +------+-------------------+------------+----+----+-----+-------------------+------------------- + 1 | .0000000 | 1401-03-01 | 1 | 10 | 200 | -1.0000000 | .0000000 + 1 | .0000000 | 1401-05-02 | 1 | 30 | 300 | -1.0000000 | .0000000 + 1 | .0000000 | 1401-06-01 | 1 | 50 | 400 | -1.0000000 | .0000000 + 1 | .0000000 | 1401-05-01 | 1 | 20 | 100 | -1.0000000 | .0000000 + 1 | .0000000 | 1401-04-01 | 3 | 40 | 200 | -1.0000000 | .0000000 + 1 | .0000000 | 1401-06-01 | 4 | 40 | 800 | .0000000 | .0000000 + 1 | .0000000 | 1401-06-01 | 4 | 40 | 700 | .0000000 | .0000000 + 1 | .0000000 | 1401-06-01 | 2 | 50 | 400 | -1.0000000 | .0000000 + 12 | .0000000 | 1401-06-01 | 1 | 30 | 500 | .0000000 | .0000000 + 12 | .0000000 | 1401-06-01 | 3 | 30 | 600 | .0000000 | .0000000 + 12 | .0000000 | 1401-06-01 | 3 | 30 | 500 | .0000000 | .0000000 + 1100 | .0000000 | 1401-01-01 | 2 | 40 | 100 | .0000000 | .0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.pn asc range between floor(ow_sale.vn) following and unbounded following ); -- mvd 3,4,5,1->2; + pn | to_char | cn | qty | vn +-----+-------------------+----+------+---- + 500 | .0000000 | 1 | 12 | 30 + 500 | .0000000 | 3 | 12 | 30 + 600 | .0000000 | 3 | 12 | 30 + 700 | .0000000 | 4 | 1 | 40 + 800 | .0000000 | 4 | 1 | 40 + 400 | .0000000 | 2 | 1 | 50 + 200 | .0000000 | 1 | 1 | 10 + 100 | .0000000 | 1 | 1 | 20 + 300 | .0000000 | 1 | 1 | 30 + 200 | .0000000 | 3 | 1 | 40 + 100 | .0000000 | 2 | 1100 | 40 + 400 | .0000000 | 1 | 1 | 50 +(12 rows) + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn/ow_sale.vn) as int),cast (floor(ow_sale.qty*ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn/ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.pn asc range between floor(ow_sale.prc) following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 6,2->5; 2->7; 1->8; 2->9; 1->10; 2->11; + cn | pn | cn | pn | to_char | dt | to_char | to_char | to_char | to_char | to_char +----+-----+----+-----+-------------------+------------+-------------------+-------------------+-------------------+-------------------+------------------- + 2 | 100 | 2 | 100 | .0000000 | 1401-01-01 | .0000000 | .0000000 | 2.0000000 | .0000000 | 1.0000000 + 1 | 200 | 1 | 200 | .0000000 | 1401-03-01 | 1.0000000 | 20.0000000 | 2.0000000 | .0909091 | 1.0000000 + 3 | 200 | 3 | 200 | .0000000 | 1401-04-01 | 3.0000000 | .0000000 | 3.0000000 | .1818182 | 1.0000000 + 1 | 100 | 1 | 100 | .0000000 | 1401-05-01 | 1.0000000 | .0000000 | 3.0000000 | .2727273 | 1.0000000 + 1 | 300 | 1 | 300 | .0000000 | 1401-05-02 | 1.0000000 | .0000000 | 3.0000000 | .3636364 | 1.0000000 + 1 | 400 | 1 | 400 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 | 3.0000000 | .4545455 | 1.0000000 + 2 | 400 | 2 | 400 | .0000000 | 1401-06-01 | 2.0000000 | .0000000 | 3.0000000 | .5454545 | 1.0000000 + 1 | 500 | 1 | 500 | .0000000 | 1401-06-01 | 3.0000000 | .0000000 | 3.0000000 | .6363636 | 1.0000000 + 3 | 500 | 3 | 500 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 | 3.0000000 | .7272727 | 1.0000000 + 3 | 600 | 3 | 600 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 | 3.0000000 | .8181818 | 1.0000000 + 4 | 700 | 4 | 700 | .0000000 | 1401-06-01 | 3.0000000 | .0000000 | 4.0000000 | .9090909 | 1.0000000 + 4 | 800 | 4 | 800 | .0000000 | 1401-06-01 | 4.0000000 | .0000000 | 4.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc rows unbounded preceding ); -- mvd 6,7,1->5; + pn | dt | qty | cn | to_char | prc | vn +-----+------------+------+----+-------------------+------+---- + 300 | 1401-05-02 | 1 | 1 | .0000000 | 0 | 30 + 400 | 1401-06-01 | 1 | 1 | .0000000 | 0 | 50 + 400 | 1401-06-01 | 1 | 2 | .0000000 | 0 | 50 + 500 | 1401-06-01 | 12 | 1 | .0000000 | 5 | 30 + 500 | 1401-06-01 | 12 | 3 | .0000000 | 5 | 30 + 700 | 1401-06-01 | 1 | 4 | .0000000 | 1 | 40 + 100 | 1401-05-01 | 1 | 1 | .0000000 | 0 | 20 + 100 | 1401-01-01 | 1100 | 2 | .0000000 | 2400 | 40 + 200 | 1401-03-01 | 1 | 1 | .0000000 | 0 | 10 + 200 | 1401-04-01 | 1 | 3 | .0000000 | 0 | 40 + 600 | 1401-06-01 | 12 | 3 | .0000000 | 5 | 30 + 800 | 1401-06-01 | 1 | 4 | .0000000 | 1 | 40 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.qty order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.pn)) OVER(partition by ow_sale.qty order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.qty order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.cn desc rows unbounded preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.vn asc); -- mvd 2,4,1,5->3; 5->6; 1,8->7; 1,8->9; 1,8->10; 1,8->11; + vn | cn | to_char | dt | pn | to_char | to_char | qty | to_char | to_char | to_char +----+----+-------------------+------------+-----+-------------------+-------------------+------+-------------------+-------------------+------------------- + 40 | 4 | .0000000 | 1401-06-01 | 800 | 1.0000000 | 44.0000000 | 1 | 8.0000000 | -99.0000000 | 4.0000000 + 40 | 4 | .0000000 | 1401-06-01 | 700 | 2.0000000 | 52.0000000 | 1 | 7.0000000 | -99.0000000 | 4.0000000 + 30 | 3 | .0000000 | 1401-06-01 | 600 | 3.0000000 | .0000000 | 12 | 3.0000000 | -497.0000000 | 3.0000000 + 30 | 1 | .0000000 | 1401-06-01 | 500 | 4.0000000 | .0000000 | 12 | 1.0000000 | -499.0000000 | 1.0000000 + 30 | 3 | .0000000 | 1401-06-01 | 500 | 4.0000000 | .0000000 | 12 | 2.0000000 | -497.0000000 | 3.0000000 + 50 | 1 | .0000000 | 1401-06-01 | 400 | 5.0000000 | 31.0000000 | 1 | 5.0000000 | -99.0000000 | 3.0000000 + 50 | 2 | .0000000 | 1401-06-01 | 400 | 5.0000000 | 51.0000000 | 1 | 6.0000000 | -99.0000000 | 3.0000000 + 30 | 1 | .0000000 | 1401-05-02 | 300 | 6.0000000 | 21.0000000 | 1 | 4.0000000 | -99.0000000 | 3.0000000 + 10 | 1 | .0000000 | 1401-03-01 | 200 | 7.0000000 | .0000000 | 1 | 1.0000000 | -199.0000000 | 1.0000000 + 40 | 3 | .0000000 | 1401-04-01 | 200 | 7.0000000 | 11.0000000 | 1 | 2.0000000 | -197.0000000 | 3.0000000 + 20 | 1 | .0000000 | 1401-05-01 | 100 | 8.0000000 | 43.0000000 | 1 | 3.0000000 | -99.0000000 | 3.0000000 + 40 | 2 | .0000000 | 1401-01-01 | 100 | 8.0000000 | .0000000 | 1100 | 1.0000000 | -98.0000000 | 2.0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows 2 preceding ); -- mvd 4,1,5->3; + vn | qty | to_char | dt | pn +----+------+-------------------+------------+----- + 10 | 1 | .0000000 | 1401-03-01 | 200 + 30 | 12 | .0000000 | 1401-06-01 | 600 + 40 | 1 | .0000000 | 1401-06-01 | 700 + 40 | 1100 | .0000000 | 1401-01-01 | 100 + 40 | 1 | .0000000 | 1401-04-01 | 200 + 20 | 1 | .0000000 | 1401-05-01 | 100 + 30 | 1 | .0000000 | 1401-05-02 | 300 + 50 | 1 | .0000000 | 1401-06-01 | 400 + 50 | 1 | .0000000 | 1401-06-01 | 400 + 30 | 12 | .0000000 | 1401-06-01 | 500 + 30 | 12 | .0000000 | 1401-06-01 | 500 + 40 | 1 | .0000000 | 1401-06-01 | 800 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.vn) as int),cast (floor(ow_sale.vn+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows 2 preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc); -- mvd 5,6,7,2->4; 2->8; 6,7,2->9; + qty | pn | pn | to_char | cn | dt | vn | to_char | to_char +------+-----+-----+-------------------+----+------------+----+-------------------+------------------- + 1 | 800 | 800 | .0000000 | 4 | 1401-06-01 | 40 | .0000000 | .0000000 + 1 | 700 | 700 | .0000000 | 4 | 1401-06-01 | 40 | .0909091 | .0000000 + 12 | 600 | 600 | .0000000 | 3 | 1401-06-01 | 30 | .1818182 | .0000000 + 12 | 500 | 500 | .0000000 | 1 | 1401-06-01 | 30 | .2727273 | .0000000 + 12 | 500 | 500 | .0000000 | 3 | 1401-06-01 | 30 | .2727273 | .0000000 + 1 | 400 | 400 | .0000000 | 2 | 1401-06-01 | 50 | .4545455 | .0000000 + 1 | 400 | 400 | .0000000 | 1 | 1401-06-01 | 50 | .4545455 | .0000000 + 1 | 300 | 300 | .0000000 | 1 | 1401-05-02 | 30 | .6363636 | .0000000 + 1 | 200 | 200 | .0000000 | 3 | 1401-04-01 | 40 | .7272727 | .0000000 + 1 | 200 | 200 | .0000000 | 1 | 1401-03-01 | 10 | .7272727 | .0000000 + 1 | 100 | 100 | .0000000 | 1 | 1401-05-01 | 20 | .9090909 | .0000000 + 1100 | 100 | 100 | .0000000 | 2 | 1401-01-01 | 40 | .9090909 | .0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.pn asc rows current row ); -- mvd 6,4,7,1->5; + pn | cn | pn | dt | to_char | prc | vn +-----+----+-----+------------+-------------------+------+---- + 200 | 1 | 200 | 1401-03-01 | .0000000 | 0 | 10 + 800 | 4 | 800 | 1401-06-01 | .0000000 | 1 | 40 + 600 | 3 | 600 | 1401-06-01 | .0000000 | 5 | 30 + 100 | 1 | 100 | 1401-05-01 | .0000000 | 0 | 20 + 300 | 1 | 300 | 1401-05-02 | .0000000 | 0 | 30 + 200 | 3 | 200 | 1401-04-01 | .0000000 | 0 | 40 + 400 | 1 | 400 | 1401-06-01 | .0000000 | 0 | 50 + 400 | 2 | 400 | 1401-06-01 | .0000000 | 0 | 50 + 700 | 4 | 700 | 1401-06-01 | .0000000 | 1 | 40 + 500 | 1 | 500 | 1401-06-01 | .0000000 | 5 | 30 + 500 | 3 | 500 | 1401-06-01 | .0000000 | 5 | 30 + 100 | 2 | 100 | 1401-01-01 | .0000000 | 2400 | 40 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.vn,ow_sale.cn order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows current row ), +win2 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.cn asc); -- mvd 3,4,5->2; 3,4->6; 3,4->7; + qty | to_char | cn | vn | pn | to_char | to_char +------+-------------------+----+----+-----+-------------------+------------------- + 1 | .0000000 | 1 | 30 | 300 | .0000000 | 1.0000000 + 1 | .0000000 | 1 | 50 | 400 | .0000000 | 1.0000000 + 1 | .0000000 | 2 | 50 | 400 | .0000000 | 1.0000000 + 12 | .0000000 | 1 | 30 | 500 | .0000000 | 1.0000000 + 12 | .0000000 | 3 | 30 | 500 | .0000000 | 1.0000000 + 1 | .0000000 | 4 | 40 | 800 | .0000000 | 1.0000000 + 1 | .0000000 | 1 | 20 | 100 | .0000000 | 1.0000000 + 1100 | .0000000 | 2 | 40 | 100 | .0000000 | 1.0000000 + 1 | .0000000 | 1 | 10 | 200 | .0000000 | 1.0000000 + 1 | .0000000 | 3 | 40 | 200 | .0000000 | 1.0000000 + 12 | .0000000 | 3 | 30 | 600 | .0000000 | 1.0000000 + 1 | .0000000 | 4 | 40 | 700 | .0000000 | 1.0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and 1 preceding ); -- mvd 6,7,8,1->5; + vn | pn | qty | pn | to_char | prc | cn | dt +----+-----+------+-----+-------------------+------+----+------------ + 20 | 100 | 1 | 100 | .0000000 | 0 | 1 | 1401-05-01 + 40 | 200 | 1 | 200 | .0000000 | 0 | 3 | 1401-04-01 + 50 | 400 | 1 | 400 | .0000000 | 0 | 2 | 1401-06-01 + 10 | 200 | 1 | 200 | .0000000 | 0 | 1 | 1401-03-01 + 30 | 300 | 1 | 300 | .0000000 | 0 | 1 | 1401-05-02 + 30 | 500 | 12 | 500 | .0000000 | 5 | 1 | 1401-06-01 + 30 | 500 | 12 | 500 | .0000000 | 5 | 3 | 1401-06-01 + 30 | 600 | 12 | 600 | .0000000 | 5 | 3 | 1401-06-01 + 40 | 700 | 1 | 700 | .0000000 | 1 | 4 | 1401-06-01 + 40 | 800 | 1 | 800 | .0000000 | 1 | 4 | 1401-06-01 + 40 | 100 | 1100 | 100 | .0000000 | 2400 | 2 | 1401-01-01 + 50 | 400 | 1 | 400 | .0000000 | 0 | 1 | 1401-06-01 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc,ow_sale.vn asc rows between unbounded preceding and current row ); -- mvd 6,1,7->5; + vn | qty | qty | dt | to_char | cn | pn +----+------+------+------------+-------------------+----+----- + 10 | 1 | 1 | 1401-03-01 | .0000000 | 1 | 200 + 20 | 1 | 1 | 1401-05-01 | .0000000 | 1 | 100 + 50 | 1 | 1 | 1401-06-01 | .0000000 | 2 | 400 + 30 | 12 | 12 | 1401-06-01 | .0000000 | 3 | 600 + 40 | 1 | 1 | 1401-04-01 | .0000000 | 3 | 200 + 40 | 1 | 1 | 1401-06-01 | .0000000 | 4 | 800 + 30 | 1 | 1 | 1401-05-02 | .0000000 | 1 | 300 + 30 | 12 | 12 | 1401-06-01 | .0000000 | 1 | 500 + 50 | 1 | 1 | 1401-06-01 | .0000000 | 1 | 400 + 40 | 1100 | 1100 | 1401-01-01 | .0000000 | 2 | 100 + 30 | 12 | 12 | 1401-06-01 | .0000000 | 3 | 500 + 40 | 1 | 1 | 1401-06-01 | .0000000 | 4 | 700 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.vn asc); -- mvd 1,2->5; 3->6; + cn | pn | vn | pn | to_char | to_char +----+-----+----+-----+-------------------+------------------- + 1 | 200 | 10 | 200 | .0000000 | .0000000 + 1 | 100 | 20 | 100 | 6121500.5000000 | .0909091 + 3 | 600 | 30 | 600 | .0000000 | .1818182 + 1 | 300 | 30 | 300 | .0000000 | .1818182 + 1 | 500 | 30 | 500 | .0000000 | .1818182 + 3 | 500 | 30 | 500 | .0000000 | .1818182 + 4 | 800 | 40 | 800 | .0000000 | .5454545 + 2 | 100 | 40 | 100 | .0000000 | .5454545 + 3 | 200 | 40 | 200 | .0000000 | .5454545 + 4 | 700 | 40 | 700 | .0000000 | .5454545 + 1 | 400 | 50 | 400 | .0000000 | .9090909 + 2 | 400 | 50 | 400 | .0000000 | .9090909 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.cn+ow_sale.pn) following ); -- mvd 1,6,3,8->7; + cn | pn | vn | vn | prc | dt | to_char | qty +----+-----+----+----+------+------------+-------------------+------ + 1 | 200 | 10 | 10 | 0 | 1401-03-01 | .0000000 | 1 + 1 | 300 | 30 | 30 | 0 | 1401-05-02 | .0000000 | 1 + 1 | 400 | 50 | 50 | 0 | 1401-06-01 | .0000000 | 1 + 3 | 200 | 40 | 40 | 0 | 1401-04-01 | .0000000 | 1 + 1 | 100 | 20 | 20 | 0 | 1401-05-01 | .0000000 | 1 + 2 | 400 | 50 | 50 | 0 | 1401-06-01 | .0000000 | 1 + 4 | 700 | 40 | 40 | 1 | 1401-06-01 | .0000000 | 1 + 4 | 800 | 40 | 40 | 1 | 1401-06-01 | .0000000 | 1 + 1 | 500 | 30 | 30 | 5 | 1401-06-01 | .0000000 | 12 + 3 | 500 | 30 | 30 | 5 | 1401-06-01 | .0000000 | 12 + 3 | 600 | 30 | 30 | 5 | 1401-06-01 | .0000000 | 12 + 2 | 100 | 40 | 40 | 2400 | 1401-01-01 | .0000000 | 1100 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc/ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between unbounded preceding and 0 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between unbounded preceding and 0 following ), +win2 as (order by ow_sale.vn asc); -- mvd 4,5,2->3; 4,5,2->6; 2->7; + qty | vn | to_char | cn | dt | to_char | to_char +------+----+-------------------+----+------------+-------------------+------------------- + 1 | 10 | .0000000 | 1 | 1401-03-01 | 1.0000000 | 1.0000000 + 1 | 20 | .0000000 | 1 | 1401-05-01 | 1.0000000 | 2.0000000 + 1 | 30 | .0000000 | 1 | 1401-05-02 | 1.0000000 | 3.0000000 + 12 | 30 | .0000000 | 1 | 1401-06-01 | 1.0000000 | 3.0000000 + 12 | 30 | .0000000 | 3 | 1401-06-01 | 2.0000000 | 3.0000000 + 12 | 30 | .0000000 | 3 | 1401-06-01 | 3.0000000 | 3.0000000 + 1 | 40 | .0000000 | 4 | 1401-06-01 | 1.0000000 | 4.0000000 + 1 | 40 | .0000000 | 4 | 1401-06-01 | 2.0000000 | 4.0000000 + 1100 | 40 | .0000000 | 2 | 1401-01-01 | 1.0000000 | 4.0000000 + 1 | 40 | .0000000 | 3 | 1401-04-01 | 1.0000000 | 4.0000000 + 1 | 50 | .0000000 | 1 | 1401-06-01 | 1.0000000 | 5.0000000 + 1 | 50 | .0000000 | 2 | 1401-06-01 | 2.0000000 | 5.0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.vn desc rows between unbounded preceding and unbounded following ); -- mvd 3,7,1->6; + pn | dt | cn | dt | pn | to_char | vn +-----+------------+----+------------+-----+-------------------+---- + 200 | 1401-03-01 | 1 | 1401-03-01 | 200 | 220.0000000 | 10 + 100 | 1401-05-01 | 1 | 1401-05-01 | 100 | 220.0000000 | 20 + 300 | 1401-05-02 | 1 | 1401-05-02 | 300 | 220.0000000 | 30 + 400 | 1401-06-01 | 1 | 1401-06-01 | 400 | 220.0000000 | 50 + 500 | 1401-06-01 | 1 | 1401-06-01 | 500 | 220.0000000 | 30 + 200 | 1401-04-01 | 3 | 1401-04-01 | 200 | 33.3333333 | 40 + 500 | 1401-06-01 | 3 | 1401-06-01 | 500 | 33.3333333 | 30 + 600 | 1401-06-01 | 3 | 1401-06-01 | 600 | 33.3333333 | 30 + 100 | 1401-01-01 | 2 | 1401-01-01 | 100 | 50.0000000 | 40 + 400 | 1401-06-01 | 2 | 1401-06-01 | 400 | 50.0000000 | 50 + 700 | 1401-06-01 | 4 | 1401-06-01 | 700 | .0000000 | 40 + 800 | 1401-06-01 | 4 | 1401-06-01 | 800 | .0000000 | 40 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn/ow_sale.vn)) OVER(partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn order by ow_sale.pn desc); -- mvd 2,5->4; 2,5->6; 2,5->7; + qty | vn | vn | to_char | pn | to_char | to_char +------+----+----+-------------------+-----+-------------------+------------------- + 1 | 10 | 10 | .0000000 | 200 | 20.0000000 | 1.0000000 + 1 | 20 | 20 | .0000000 | 100 | 5.0000000 | 1.0000000 + 1 | 30 | 30 | 6.2500000 | 300 | 20.0000000 | 1.0000000 + 12 | 30 | 30 | 6.2500000 | 500 | 20.0000000 | 1.0000000 + 12 | 30 | 30 | 6.2500000 | 500 | 20.0000000 | 1.0000000 + 12 | 30 | 30 | 6.2500000 | 600 | 20.0000000 | 1.0000000 + 1100 | 40 | 40 | 1439200.3333333 | 100 | 20.0000000 | 1.0000000 + 1 | 40 | 40 | 1439200.3333333 | 200 | 20.0000000 | 1.0000000 + 1 | 40 | 40 | 1439200.3333333 | 700 | 20.0000000 | 1.0000000 + 1 | 40 | 40 | 1439200.3333333 | 800 | 20.0000000 | 1.0000000 + 1 | 50 | 50 | .0000000 | 400 | 8.0000000 | 1.0000000 + 1 | 50 | 50 | .0000000 | 400 | 8.0000000 | 1.0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc rows between floor(ow_sale.pn) preceding and 7 preceding ); -- mvd 3,4,5->2; + qty | to_char | prc | vn | pn +------+-------------------+------+----+----- + 1 | .0000000 | 0 | 20 | 100 + 1100 | .0000000 | 2400 | 40 | 100 + 1 | .0000000 | 0 | 10 | 200 + 1 | .0000000 | 0 | 40 | 200 + 12 | .0000000 | 5 | 30 | 600 + 1 | .0000000 | 1 | 40 | 800 + 1 | .0000000 | 0 | 30 | 300 + 1 | .0000000 | 0 | 50 | 400 + 1 | .0000000 | 0 | 50 | 400 + 12 | .0000000 | 5 | 30 | 500 + 12 | .0000000 | 5 | 30 | 500 + 1 | .0000000 | 1 | 40 | 700 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between 1 preceding and floor(ow_sale.qty/ow_sale.vn) preceding ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.pn order by ow_sale.cn desc); -- mvd 1,4,2->3; 2->5; 1,2->6; + cn | pn | to_char | dt | to_char | to_char +----+-----+-------------------+------------+-------------------+------------------- + 2 | 100 | .0000000 | 1401-01-01 | 1.0000000 | .5000000 + 1 | 100 | .0000000 | 1401-05-01 | 1.0000000 | 1.0000000 + 3 | 200 | .0000000 | 1401-04-01 | 2.0000000 | .5000000 + 1 | 200 | .0000000 | 1401-03-01 | 2.0000000 | 1.0000000 + 1 | 300 | .0000000 | 1401-05-02 | 3.0000000 | 1.0000000 + 2 | 400 | .0000000 | 1401-06-01 | 4.0000000 | .5000000 + 1 | 400 | .0000000 | 1401-06-01 | 4.0000000 | 1.0000000 + 3 | 500 | .0000000 | 1401-06-01 | 5.0000000 | .5000000 + 1 | 500 | .0000000 | 1401-06-01 | 5.0000000 | 1.0000000 + 3 | 600 | .0000000 | 1401-06-01 | 6.0000000 | 1.0000000 + 4 | 700 | .0000000 | 1401-06-01 | 7.0000000 | 1.0000000 + 4 | 800 | .0000000 | 1401-06-01 | 8.0000000 | 1.0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows between floor(ow_sale.prc) preceding and current row ); -- mvd 2,5->6; + vn | cn | vn | prc | pn | to_char +----+----+----+------+-----+------------------- + 20 | 1 | 20 | 0 | 100 | .0000000 + 10 | 1 | 10 | 0 | 200 | .0000000 + 50 | 2 | 50 | 0 | 400 | .0000000 + 40 | 3 | 40 | 0 | 200 | .0000000 + 30 | 3 | 30 | 5 | 600 | .0000000 + 40 | 4 | 40 | 1 | 800 | .0000000 + 30 | 1 | 30 | 0 | 300 | .0000000 + 50 | 1 | 50 | 0 | 400 | .0000000 + 30 | 1 | 30 | 5 | 500 | .0000000 + 40 | 2 | 40 | 2400 | 100 | .0000000 + 30 | 3 | 30 | 5 | 500 | .0000000 + 40 | 4 | 40 | 1 | 700 | .0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc,ow_sale.cn asc rows between 2 preceding and current row ), +win2 as (order by ow_sale.cn desc); -- mvd 1,4,5,6,7->3; 1->8; 1->9; 1->10; 1->11; + cn | cn | to_char | dt | vn | qty | pn | to_char | to_char | to_char | to_char +----+----+-------------------+------------+----+------+-----+-------------------+-------------------+-------------------+------------------- + 4 | 4 | .0000000 | 1401-06-01 | 40 | 1 | 800 | .1666667 | .0000000 | 1.0000000 | 1.0000000 + 4 | 4 | .0000000 | 1401-06-01 | 40 | 1 | 700 | .1666667 | .0000000 | 1.0000000 | 1.0000000 + 3 | 3 | 2.0000000 | 1401-06-01 | 30 | 12 | 500 | .4166667 | .1818182 | 3.0000000 | 2.0000000 + 3 | 3 | .0000000 | 1401-06-01 | 30 | 12 | 600 | .4166667 | .1818182 | 3.0000000 | 2.0000000 + 3 | 3 | .0000000 | 1401-04-01 | 40 | 1 | 200 | .4166667 | .1818182 | 3.0000000 | 2.0000000 + 2 | 2 | .5000000 | 1401-06-01 | 50 | 1 | 400 | .5833333 | .4545455 | 6.0000000 | 3.0000000 + 2 | 2 | .0000000 | 1401-01-01 | 40 | 1100 | 100 | .5833333 | .4545455 | 6.0000000 | 3.0000000 + 1 | 1 | .0000000 | 1401-03-01 | 10 | 1 | 200 | 1.0000000 | .6363636 | 8.0000000 | 4.0000000 + 1 | 1 | .0000000 | 1401-06-01 | 30 | 12 | 500 | 1.0000000 | .6363636 | 8.0000000 | 4.0000000 + 1 | 1 | .0000000 | 1401-06-01 | 50 | 1 | 400 | 1.0000000 | .6363636 | 8.0000000 | 4.0000000 + 1 | 1 | .0000000 | 1401-05-01 | 20 | 1 | 100 | 1.0000000 | .6363636 | 8.0000000 | 4.0000000 + 1 | 1 | .0000000 | 1401-05-02 | 30 | 1 | 300 | 1.0000000 | .6363636 | 8.0000000 | 4.0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc rows between 1 preceding and 5 following ); -- mvd 6,7,2->5; + prc | pn | prc | prc | to_char | dt | qty +------+-----+------+------+-------------------+------------+------ + 0 | 200 | 0 | 0 | .0000000 | 1401-04-01 | 1 + 0 | 100 | 0 | 0 | .0000000 | 1401-05-01 | 1 + 0 | 300 | 0 | 0 | .0000000 | 1401-05-02 | 1 + 0 | 400 | 0 | 0 | .0000000 | 1401-06-01 | 1 + 0 | 400 | 0 | 0 | .0000000 | 1401-06-01 | 1 + 1 | 800 | 1 | 1 | .0000000 | 1401-06-01 | 1 + 5 | 600 | 5 | 5 | .0000000 | 1401-06-01 | 12 + 0 | 200 | 0 | 0 | .0000000 | 1401-03-01 | 1 + 1 | 700 | 1 | 1 | .0000000 | 1401-06-01 | 1 + 5 | 500 | 5 | 5 | .0000000 | 1401-06-01 | 12 + 5 | 500 | 5 | 5 | .0000000 | 1401-06-01 | 12 + 2400 | 100 | 2400 | 2400 | .0000000 | 1401-01-01 | 1100 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between 2 preceding and 0 following ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.cn desc), +win3 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.cn desc), +win4 as (order by ow_sale.vn desc); -- mvd 2,1->4; 6,2,3,1,7->5; 6,2,3,1,7->8; 1->9; 1->10; + vn | cn | dt | to_char | to_char | prc | pn | to_char | to_char | to_char +----+----+------------+-------------------+-------------------+------+-----+-------------------+-------------------+------------------- + 50 | 1 | 1401-06-01 | .0000000 | 1.0000000 | 0 | 400 | 1.0000000 | 1.0000000 | 1.0000000 + 50 | 2 | 1401-06-01 | 1250.0000000 | .5000000 | 0 | 400 | .0000000 | 1.0000000 | 1.0000000 + 40 | 2 | 1401-01-01 | .0000000 | 1.0000000 | 2400 | 100 | .0000000 | 2.0000000 | 2.0000000 + 40 | 3 | 1401-04-01 | 800.0000000 | 1.0000000 | 0 | 200 | .0000000 | 2.0000000 | 2.0000000 + 40 | 4 | 1401-06-01 | 1600.0000000 | 1.0000000 | 1 | 700 | .0000000 | 2.0000000 | 2.0000000 + 40 | 4 | 1401-06-01 | 533.3333333 | 1.0000000 | 1 | 800 | .0000000 | 2.0000000 | 2.0000000 + 30 | 1 | 1401-05-02 | .0000000 | 1.0000000 | 0 | 300 | .0000000 | 3.0000000 | 3.0000000 + 30 | 1 | 1401-06-01 | .0000000 | 1.0000000 | 5 | 500 | 12.0000000 | 3.0000000 | 3.0000000 + 30 | 3 | 1401-06-01 | 1200.0000000 | .5000000 | 5 | 500 | .0000000 | 3.0000000 | 3.0000000 + 30 | 3 | 1401-06-01 | 1200.0000000 | 1.0000000 | 5 | 600 | .0000000 | 3.0000000 | 3.0000000 + 20 | 1 | 1401-05-01 | .0000000 | 1.0000000 | 0 | 100 | .0000000 | 4.0000000 | 4.0000000 + 10 | 1 | 1401-03-01 | .0000000 | 1.0000000 | 0 | 200 | .0000000 | 5.0000000 | 5.0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(partition by ow_sale.vn,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows between 1 preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows between 1 preceding and unbounded following ); -- mvd 1,4,5,6->3; 1,4,5,6->7; + prc | qty | to_char | cn | dt | vn | to_char +------+------+-------------------+----+------------+----+------------------- + 0 | 1 | .0000000 | 1 | 1401-03-01 | 10 | 1.0000000 + 0 | 1 | .0000000 | 1 | 1401-05-02 | 30 | 1.0000000 + 5 | 12 | .0000000 | 1 | 1401-06-01 | 30 | 3.0000000 + 5 | 12 | .0000000 | 3 | 1401-06-01 | 30 | 3.0000000 + 5 | 12 | .0000000 | 3 | 1401-06-01 | 30 | 2.0000000 + 0 | 1 | .0000000 | 1 | 1401-06-01 | 50 | 2.0000000 + 0 | 1 | .0000000 | 2 | 1401-06-01 | 50 | 2.0000000 + 0 | 1 | .0000000 | 1 | 1401-05-01 | 20 | 1.0000000 + 0 | 1 | .0000000 | 3 | 1401-04-01 | 40 | 1.0000000 + 1 | 1 | .0000000 | 4 | 1401-06-01 | 40 | 2.0000000 + 1 | 1 | .0000000 | 4 | 1401-06-01 | 40 | 2.0000000 + 2400 | 1100 | .0000000 | 2 | 1401-01-01 | 40 | 1.0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.cn desc rows between current row and current row ); -- mvd 3,4,1,5->2; + vn | to_char | prc | cn | pn +----+-------------------+------+----+----- + 20 | .0000000 | 0 | 1 | 100 + 10 | .0000000 | 0 | 1 | 200 + 50 | .0000000 | 0 | 2 | 400 + 40 | .0000000 | 0 | 3 | 200 + 30 | .0000000 | 5 | 3 | 600 + 40 | .0000000 | 1 | 4 | 700 + 30 | .0000000 | 0 | 1 | 300 + 50 | .0000000 | 0 | 1 | 400 + 30 | .0000000 | 5 | 1 | 500 + 40 | .0000000 | 2400 | 2 | 100 + 30 | .0000000 | 5 | 3 | 500 + 40 | .0000000 | 1 | 4 | 800 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.pn desc rows between current row and current row ), +win2 as (order by ow_sale.vn desc); -- mvd 8,4,2,3->7; 1->9; + vn | cn | pn | dt | dt | qty | to_char | prc | to_char +----+----+-----+------------+------------+------+-------------------+------+------------------- + 50 | 1 | 400 | 1401-06-01 | 1401-06-01 | 1 | .0000000 | 0 | .0000000 + 50 | 2 | 400 | 1401-06-01 | 1401-06-01 | 1 | .0000000 | 0 | .0000000 + 40 | 2 | 100 | 1401-01-01 | 1401-01-01 | 1100 | .0000000 | 2400 | .1818182 + 40 | 4 | 700 | 1401-06-01 | 1401-06-01 | 1 | .0000000 | 1 | .1818182 + 40 | 4 | 800 | 1401-06-01 | 1401-06-01 | 1 | .0000000 | 1 | .1818182 + 40 | 3 | 200 | 1401-04-01 | 1401-04-01 | 1 | .0000000 | 0 | .1818182 + 30 | 1 | 500 | 1401-06-01 | 1401-06-01 | 12 | .0000000 | 5 | .5454545 + 30 | 1 | 300 | 1401-05-02 | 1401-05-02 | 1 | .0000000 | 0 | .5454545 + 30 | 3 | 500 | 1401-06-01 | 1401-06-01 | 12 | .0000000 | 5 | .5454545 + 30 | 3 | 600 | 1401-06-01 | 1401-06-01 | 12 | .0000000 | 5 | .5454545 + 20 | 1 | 100 | 1401-05-01 | 1401-05-01 | 1 | .0000000 | 0 | .9090909 + 10 | 1 | 200 | 1401-03-01 | 1401-03-01 | 1 | .0000000 | 0 | 1.0000000 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc rows between current row and 1 following ); -- mvd 2,5,6,1->4; + vn | cn | cn | to_char | dt | qty +----+----+----+-------------------+------------+------ + 10 | 1 | 1 | .0000000 | 1401-03-01 | 1 + 30 | 1 | 1 | .0000000 | 1401-05-02 | 1 + 50 | 1 | 1 | .0000000 | 1401-06-01 | 1 + 40 | 2 | 2 | .0000000 | 1401-01-01 | 1100 + 40 | 3 | 3 | .0000000 | 1401-04-01 | 1 + 20 | 1 | 1 | .0000000 | 1401-05-01 | 1 + 30 | 1 | 1 | .0000000 | 1401-06-01 | 12 + 50 | 2 | 2 | .0000000 | 1401-06-01 | 1 + 30 | 3 | 3 | .0000000 | 1401-06-01 | 12 + 30 | 3 | 3 | .0000000 | 1401-06-01 | 12 + 40 | 4 | 4 | .0000000 | 1401-06-01 | 1 + 40 | 4 | 4 | .0000000 | 1401-06-01 | 1 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.vn asc rows between current row and unbounded following ); -- mvd 6,7,8->5; + qty | qty | qty | dt | to_char | prc | vn | pn +------+------+------+------------+-------------------+------+----+----- + 1 | 1 | 1 | 1401-06-01 | 5000.0000000 | 1 | 40 | 700 + 1 | 1 | 1 | 1401-06-01 | .0000000 | 1 | 40 | 800 + 1 | 1 | 1 | 1401-03-01 | 14666.6666667 | 0 | 10 | 200 + 1 | 1 | 1 | 1401-04-01 | 17000.0000000 | 0 | 40 | 200 + 1 | 1 | 1 | 1401-05-01 | 20000.0000000 | 0 | 20 | 100 + 1 | 1 | 1 | 1401-05-02 | 3333.3333333 | 0 | 30 | 300 + 1 | 1 | 1 | 1401-06-01 | .0000000 | 0 | 50 | 400 + 1 | 1 | 1 | 1401-06-01 | .0000000 | 0 | 50 | 400 + 12 | 12 | 12 | 1401-06-01 | 3333.3333333 | 5 | 30 | 500 + 12 | 12 | 12 | 1401-06-01 | 5000.0000000 | 5 | 30 | 500 + 12 | 12 | 12 | 1401-06-01 | .0000000 | 5 | 30 | 600 + 1100 | 1100 | 1100 | 1401-01-01 | .0000000 | 2400 | 40 | 100 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.vn)) OVER(partition by ow_sale.dt order by ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.prc) as int),cast (floor(ow_sale.pn+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.cn desc), +win3 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc); -- mvd 5,3->4; 5,3->6; 8,5->7; 8,5->9; 5,3->10; 12,8,1->11; + vn | qty | pn | to_char | dt | to_char | to_char | cn | to_char | to_char | to_char | prc +----+------+-----+-------------------+------------+-------------------+-------------------+----+-------------------+-------------------+-------------------+------ + 10 | 1 | 200 | .0000000 | 1401-03-01 | 1.0000000 | 1.0000000 | 1 | .0000000 | 10.0000000 | .0000000 | 0 + 30 | 1 | 300 | .0000000 | 1401-05-02 | 1.0000000 | 1.0000000 | 1 | .0000000 | 30.0000000 | .0000000 | 0 + 50 | 1 | 400 | 80.9523810 | 1401-06-01 | 1.0000000 | 1.0000000 | 1 | 5.0000000 | 40.0000000 | .0000000 | 0 + 50 | 1 | 400 | 66.6666667 | 1401-06-01 | 2.0000000 | 1.0000000 | 2 | .0000000 | 40.0000000 | .0000000 | 0 + 30 | 12 | 500 | 30.0000000 | 1401-06-01 | 4.0000000 | 1.0000000 | 1 | 5.0000000 | 40.0000000 | .0000000 | 5 + 30 | 12 | 500 | 33.3333333 | 1401-06-01 | 4.0000000 | 1.0000000 | 3 | 5.0000000 | 40.0000000 | .0000000 | 5 + 30 | 12 | 600 | 33.3333333 | 1401-06-01 | 4.0000000 | 1.0000000 | 3 | 5.0000000 | 40.0000000 | .0000000 | 5 + 40 | 1 | 700 | .0000000 | 1401-06-01 | 4.0000000 | 1.0000000 | 4 | 1.0000000 | 40.0000000 | .0000000 | 1 + 40 | 1 | 800 | .0000000 | 1401-06-01 | 4.0000000 | 1.0000000 | 4 | 1.0000000 | 40.0000000 | .0000000 | 1 + 40 | 1100 | 100 | .0000000 | 1401-01-01 | 2200.0000000 | 1.0000000 | 2 | 2400.0000000 | 44000.0000000 | .0000000 | 2400 + 40 | 1 | 200 | .0000000 | 1401-04-01 | 3.0000000 | 1.0000000 | 3 | .0000000 | 40.0000000 | .0000000 | 0 + 20 | 1 | 100 | .0000000 | 1401-05-01 | 1.0000000 | 1.0000000 | 1 | .0000000 | 20.0000000 | .0000000 | 0 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.cn) following and floor(ow_sale.qty) following ); -- mvd 7,4,8->6; + cn | qty | cn | vn | cn | to_char | dt | pn +----+------+----+----+----+-------------------+------------+----- + 1 | 1 | 1 | 10 | 1 | .0000000 | 1401-03-01 | 200 + 1 | 1 | 1 | 30 | 1 | .0000000 | 1401-05-02 | 300 + 1 | 12 | 1 | 30 | 1 | .0000000 | 1401-06-01 | 500 + 3 | 12 | 3 | 30 | 3 | .0000000 | 1401-06-01 | 500 + 3 | 12 | 3 | 30 | 3 | .0000000 | 1401-06-01 | 600 + 4 | 1 | 4 | 40 | 4 | .0000000 | 1401-06-01 | 700 + 4 | 1 | 4 | 40 | 4 | .0000000 | 1401-06-01 | 800 + 1 | 1 | 1 | 50 | 1 | .0000000 | 1401-06-01 | 400 + 2 | 1 | 2 | 50 | 2 | .0000000 | 1401-06-01 | 400 + 2 | 1100 | 2 | 40 | 2 | .0000000 | 1401-01-01 | 100 + 3 | 1 | 3 | 40 | 3 | .0000000 | 1401-04-01 | 200 + 1 | 1 | 1 | 20 | 1 | .0000000 | 1401-05-01 | 100 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.vn) following and unbounded following ); -- mvd 4,5,6,7->3; + qty | vn | to_char | prc | dt | cn | pn +------+----+-------------------+------+------------+----+----- + 1 | 20 | .0000000 | 0 | 1401-05-01 | 1 | 100 + 1 | 30 | .0000000 | 0 | 1401-05-02 | 1 | 300 + 1 | 50 | .0000000 | 0 | 1401-06-01 | 1 | 400 + 1 | 40 | .0000000 | 0 | 1401-04-01 | 3 | 200 + 1 | 40 | .0000000 | 1 | 1401-06-01 | 4 | 800 + 12 | 30 | .0000000 | 5 | 1401-06-01 | 1 | 500 + 12 | 30 | .0000000 | 5 | 1401-06-01 | 3 | 500 + 1 | 10 | .0000000 | 0 | 1401-03-01 | 1 | 200 + 1 | 50 | .0000000 | 0 | 1401-06-01 | 2 | 400 + 1 | 40 | .0000000 | 1 | 1401-06-01 | 4 | 700 + 12 | 30 | .0000000 | 5 | 1401-06-01 | 3 | 600 + 1100 | 40 | .0000000 | 2400 | 1401-01-01 | 2 | 100 +(12 rows) + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn*ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc rows between floor(ow_sale.cn/ow_sale.cn) following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,6,4->5; 1->7; 1->8; + cn | qty | dt | pn | to_char | vn | to_char | to_char +----+------+------------+-----+-------------------+----+-------------------+------------------- + 2 | 1100 | 1401-01-01 | 100 | .0000000 | 40 | .0000000 | 1.0000000 + 1 | 1 | 1401-03-01 | 200 | .0000000 | 10 | 240000.0000000 | 2.0000000 + 3 | 1 | 1401-04-01 | 200 | .0000000 | 40 | .0000000 | 3.0000000 + 1 | 1 | 1401-05-01 | 100 | .0000000 | 20 | .0000000 | 4.0000000 + 1 | 1 | 1401-05-02 | 300 | .0000000 | 30 | .0000000 | 5.0000000 + 1 | 1 | 1401-06-01 | 400 | 1146666.6666667 | 50 | .0000000 | 6.0000000 + 2 | 1 | 1401-06-01 | 400 | 1153000.0000000 | 50 | .0000000 | 7.0000000 + 1 | 12 | 1401-06-01 | 500 | 649166.6666667 | 30 | .0000000 | 8.0000000 + 3 | 12 | 1401-06-01 | 500 | 520000.0000000 | 30 | .0000000 | 9.0000000 + 3 | 12 | 1401-06-01 | 600 | 80000.0000000 | 30 | .0000000 | 10.0000000 + 4 | 1 | 1401-06-01 | 700 | .0000000 | 40 | 3000.0000000 | 11.0000000 + 4 | 1 | 1401-06-01 | 800 | .0000000 | 40 | 700.0000000 | 12.0000000 +(12 rows) + +-- CORR() function with NULL OVER() clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc),floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (); -- mvd 2->2; + qty | to_char +------+------------------- + 1 | .7259333 + 1 | .7259333 + 1 | .7259333 + 1 | .7259333 + 12 | .7259333 + 1 | .7259333 + 1100 | .7259333 + 1 | .7259333 + 1 | .7259333 + 12 | .7259333 + 12 | .7259333 + 1 | .7259333 +(12 rows) + +-- CORR() function with NULL OVER() clause in combination with other window functions -- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc+ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (), +win2 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc); -- mvd 3->3; 5,6,7,1->4; 5,6,7,1->8; + pn | pn | to_char | to_char | dt | cn | vn | to_char +-----+-----+-------------------+-------------------+------------+----+----+------------------- + 200 | 200 | -.0450498 | .0000000 | 1401-03-01 | 1 | 10 | 1.0000000 + 100 | 100 | -.0450498 | .0000000 | 1401-05-01 | 1 | 20 | 1.0000000 + 400 | 400 | -.0450498 | .0000000 | 1401-06-01 | 2 | 50 | 1.0000000 + 600 | 600 | -.0450498 | .0000000 | 1401-06-01 | 3 | 30 | 1.0000000 + 200 | 200 | -.0450498 | .0000000 | 1401-04-01 | 3 | 40 | 1.0000000 + 800 | 800 | -.0450498 | .0000000 | 1401-06-01 | 4 | 40 | 1.0000000 + 300 | 300 | -.0450498 | .0000000 | 1401-05-02 | 1 | 30 | 1.0000000 + 500 | 500 | -.0450498 | .0000000 | 1401-06-01 | 1 | 30 | 1.0000000 + 400 | 400 | -.0450498 | .0000000 | 1401-06-01 | 1 | 50 | 1.0000000 + 100 | 100 | -.0450498 | .0000000 | 1401-01-01 | 2 | 40 | 1.0000000 + 500 | 500 | -.0450498 | .0000000 | 1401-06-01 | 3 | 30 | 1.0000000 + 700 | 700 | -.0450498 | .0000000 | 1401-06-01 | 4 | 40 | 1.0000000 +(12 rows) + +-- CORR() function with OVER() clause having ONLY PARTITION BY -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.prc); -- mvd 6,1,3,4->5; + cn | pn | dt | qty | to_char | prc +----+-----+------------+------+-------------------+------ + 1 | 200 | 1401-03-01 | 1 | .0000000 | 0 + 1 | 300 | 1401-05-02 | 1 | .0000000 | 0 + 1 | 400 | 1401-06-01 | 1 | .0000000 | 0 + 4 | 800 | 1401-06-01 | 1 | .0000000 | 1 + 4 | 700 | 1401-06-01 | 1 | .0000000 | 1 + 2 | 100 | 1401-01-01 | 1100 | .0000000 | 2400 + 3 | 200 | 1401-04-01 | 1 | .0000000 | 0 + 1 | 100 | 1401-05-01 | 1 | .0000000 | 0 + 1 | 500 | 1401-06-01 | 12 | .0000000 | 5 + 2 | 400 | 1401-06-01 | 1 | .0000000 | 0 + 3 | 500 | 1401-06-01 | 12 | .0000000 | 5 + 3 | 600 | 1401-06-01 | 12 | .0000000 | 5 +(12 rows) + +-- CORR() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn/ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.dt), +win2 as (order by ow_sale.cn asc); -- mvd 5,3->4; 5,3->6; 8->7; 8->9; 8->10; + pn | vn | dt | to_char | prc | to_char | to_char | cn | to_char | to_char +-----+----+------------+-------------------+------+-------------------+-------------------+----+-------------------+------------------- + 400 | 50 | 1401-06-01 | .0000000 | 0 | 2.0000000 | 1.0000000 | 1 | 1.0000000 | 99.0000000 + 300 | 30 | 1401-05-02 | .0000000 | 0 | 1.0000000 | 1.0000000 | 1 | 1.0000000 | 99.0000000 + 200 | 10 | 1401-03-01 | .0000000 | 0 | 1.0000000 | 1.0000000 | 1 | 1.0000000 | 99.0000000 + 500 | 30 | 1401-06-01 | .0000000 | 5 | 3.0000000 | 1.0000000 | 1 | 1.0000000 | 99.0000000 + 100 | 20 | 1401-05-01 | .0000000 | 0 | 1.0000000 | 1.0000000 | 1 | 1.0000000 | 99.0000000 + 100 | 40 | 1401-01-01 | .0000000 | 2400 | 1.0000000 | 6.0000000 | 2 | 2.0000000 | 98.0000000 + 400 | 50 | 1401-06-01 | .0000000 | 0 | 2.0000000 | 6.0000000 | 2 | 2.0000000 | 98.0000000 + 600 | 30 | 1401-06-01 | .0000000 | 5 | 3.0000000 | 8.0000000 | 3 | 3.0000000 | 98.0000000 + 500 | 30 | 1401-06-01 | .0000000 | 5 | 3.0000000 | 8.0000000 | 3 | 3.0000000 | 98.0000000 + 200 | 40 | 1401-04-01 | .0000000 | 0 | 1.0000000 | 8.0000000 | 3 | 3.0000000 | 98.0000000 + 800 | 40 | 1401-06-01 | .0000000 | 1 | 2.0000000 | 11.0000000 | 4 | 4.0000000 | 98.0000000 + 700 | 40 | 1401-06-01 | .0000000 | 1 | 2.0000000 | 11.0000000 | 4 | 4.0000000 | 98.0000000 +(12 rows) + +-- CORR() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty*ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc); -- mvd 3->5; + dt | cn | pn | pn | to_char +------------+----+-----+-----+------------------- + 1401-05-01 | 1 | 100 | 100 | 1.0000000 + 1401-01-01 | 2 | 100 | 100 | 1.0000000 + 1401-03-01 | 1 | 200 | 200 | .9999996 + 1401-04-01 | 3 | 200 | 200 | .9999996 + 1401-05-02 | 1 | 300 | 300 | .9999996 + 1401-06-01 | 1 | 400 | 400 | .9999996 + 1401-06-01 | 2 | 400 | 400 | .9999996 + 1401-06-01 | 1 | 500 | 500 | .9999095 + 1401-06-01 | 3 | 500 | 500 | .9999095 + 1401-06-01 | 3 | 600 | 600 | .9998437 + 1401-06-01 | 4 | 700 | 700 | .9998419 + 1401-06-01 | 4 | 800 | 800 | .9998406 +(12 rows) + +-- CORR() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.prc,ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc*ow_sale.vn),floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.qty)) OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc); -- mvd 7->6; 7->8; 7->9; 7,3->10; 7,3->11; + prc | dt | pn | pn | qty | to_char | vn | to_char | to_char | to_char | to_char +------+------------+-----+-----+------+-------------------+----+-------------------+-------------------+-------------------+------------------- + 0 | 1401-03-01 | 200 | 200 | 1 | .0000000 | 10 | 1.0000000 | 11.0000000 | -10.0000000 | 1.0000000 + 0 | 1401-05-01 | 100 | 100 | 1 | .0000000 | 20 | 2.0000000 | 21.0000000 | -20.0000000 | 1.0000000 + 5 | 1401-06-01 | 600 | 600 | 12 | -.9282777 | 30 | 3.0000000 | 42.0000000 | .0000000 | 1.0000000 + 0 | 1401-05-02 | 300 | 300 | 1 | -.9282777 | 30 | 3.0000000 | 42.0000000 | -30.0000000 | 1.0000000 + 5 | 1401-06-01 | 500 | 500 | 12 | -.9282777 | 30 | 3.0000000 | 42.0000000 | .0000000 | 1.0000000 + 5 | 1401-06-01 | 500 | 500 | 12 | -.9282777 | 30 | 3.0000000 | 42.0000000 | .0000000 | 2.0000000 + 1 | 1401-06-01 | 800 | 800 | 1 | .4152277 | 40 | 4.0000000 | 1140.0000000 | .0000000 | 1.0000000 + 2400 | 1401-01-01 | 100 | 100 | 1100 | .4152277 | 40 | 4.0000000 | 1140.0000000 | .0000000 | 1.0000000 + 0 | 1401-04-01 | 200 | 200 | 1 | .4152277 | 40 | 4.0000000 | 1140.0000000 | -40.0000000 | 1.0000000 + 1 | 1401-06-01 | 700 | 700 | 1 | .4152277 | 40 | 4.0000000 | 1140.0000000 | .0000000 | 1.0000000 + 0 | 1401-06-01 | 400 | 400 | 1 | .4115736 | 50 | 5.0000000 | 1140.0000000 | -50.0000000 | 1.0000000 + 0 | 1401-06-01 | 400 | 400 | 1 | .4115736 | 50 | 5.0000000 | 1140.0000000 | -50.0000000 | 2.0000000 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn+ow_sale.vn),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range unbounded preceding ); -- mvd 4->3; + vn | cn | to_char | pn +----+----+-------------------+----- + 20 | 1 | .0000000 | 100 + 40 | 2 | .0000000 | 100 + 10 | 1 | .0000000 | 200 + 40 | 3 | .0000000 | 200 + 30 | 1 | .0000000 | 300 + 50 | 1 | .0000000 | 400 + 50 | 2 | .0000000 | 400 + 30 | 1 | .0000000 | 500 + 30 | 3 | .0000000 | 500 + 30 | 3 | .0000000 | 600 + 40 | 4 | .0000000 | 700 + 40 | 4 | .0000000 | 800 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range 2 preceding ); -- mvd 5->4; + cn | prc | qty | to_char | vn +----+------+------+-------------------+---- + 1 | 0 | 1 | .0000000 | 10 + 1 | 0 | 1 | .0000000 | 20 + 3 | 5 | 12 | .0000000 | 30 + 1 | 0 | 1 | .0000000 | 30 + 1 | 5 | 12 | .0000000 | 30 + 3 | 5 | 12 | .0000000 | 30 + 2 | 2400 | 1100 | .0000000 | 40 + 4 | 1 | 1 | .0000000 | 40 + 3 | 0 | 1 | .0000000 | 40 + 4 | 1 | 1 | .0000000 | 40 + 2 | 0 | 1 | .0000000 | 50 + 1 | 0 | 1 | .0000000 | 50 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn+ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.pn) as int),cast (floor(ow_sale.prc*ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range floor(ow_sale.vn*ow_sale.vn) preceding ), +win2 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 4->3; 6,4,7->5; 4->8; 6,4,7->9; + qty | qty | to_char | vn | to_char | cn | pn | to_char | to_char +------+------+-------------------+----+-------------------+----+-----+-------------------+------------------- + 1 | 1 | .0000000 | 50 | 401.0000000 | 1 | 400 | 2.0000000 | 1.0000000 + 1 | 1 | .0000000 | 50 | 402.0000000 | 2 | 400 | 2.0000000 | 2.0000000 + 1 | 1 | 1.0000000 | 40 | .0000000 | 4 | 800 | 6.0000000 | 1.0000000 + 1100 | 1100 | 1.0000000 | 40 | .0000000 | 2 | 100 | 6.0000000 | 1.0000000 + 1 | 1 | 1.0000000 | 40 | 203.0000000 | 3 | 200 | 6.0000000 | 1.0000000 + 1 | 1 | 1.0000000 | 40 | .0000000 | 4 | 700 | 6.0000000 | 1.0000000 + 12 | 12 | 1.0000000 | 30 | .0000000 | 3 | 600 | 10.0000000 | 1.0000000 + 1 | 1 | 1.0000000 | 30 | 301.0000000 | 1 | 300 | 10.0000000 | 1.0000000 + 12 | 12 | 1.0000000 | 30 | .0000000 | 1 | 500 | 10.0000000 | 1.0000000 + 12 | 12 | 1.0000000 | 30 | .0000000 | 3 | 500 | 10.0000000 | 2.0000000 + 1 | 1 | 1.0000000 | 20 | 101.0000000 | 1 | 100 | 11.0000000 | 1.0000000 + 1 | 1 | 1.0000000 | 10 | 201.0000000 | 1 | 200 | 12.0000000 | 1.0000000 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn+ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range current row ); -- mvd 5->4; + pn | cn | pn | to_char | vn +-----+----+-----+-------------------+---- + 200 | 1 | 200 | .0000000 | 10 + 100 | 1 | 100 | .0000000 | 20 + 600 | 3 | 600 | .0000000 | 30 + 300 | 1 | 300 | .0000000 | 30 + 500 | 1 | 500 | .0000000 | 30 + 500 | 3 | 500 | .0000000 | 30 + 100 | 2 | 100 | .0000000 | 40 + 700 | 4 | 700 | .0000000 | 40 + 800 | 4 | 800 | .0000000 | 40 + 200 | 3 | 200 | .0000000 | 40 + 400 | 2 | 400 | .0000000 | 50 + 400 | 1 | 400 | .0000000 | 50 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn*ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range current row ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc); -- mvd 4->3; 1->5; 4->6; 1->7; 9,1,10->8; + cn | dt | to_char | pn | to_char | to_char | to_char | to_char | prc | vn +----+------------+-------------------+-----+-------------------+-------------------+-------------------+-------------------+------+---- + 1 | 1401-06-01 | .0000000 | 400 | .0000000 | .0000000 | 1.0000000 | .0000000 | 0 | 50 + 1 | 1401-05-01 | 1.0000000 | 100 | .0000000 | 2400.0000000 | 2.0000000 | .0000000 | 0 | 20 + 1 | 1401-03-01 | .0000000 | 200 | .0000000 | .0000000 | 3.0000000 | .0000000 | 0 | 10 + 1 | 1401-06-01 | .0000000 | 500 | .0000000 | 5.0000000 | 4.0000000 | .0000000 | 5 | 30 + 1 | 1401-05-02 | .0000000 | 300 | .0000000 | .0000000 | 5.0000000 | .0000000 | 0 | 30 + 2 | 1401-01-01 | 1.0000000 | 100 | .4545455 | 2400.0000000 | 6.0000000 | .0000000 | 2400 | 40 + 2 | 1401-06-01 | .0000000 | 400 | .4545455 | .0000000 | 7.0000000 | .0000000 | 0 | 50 + 3 | 1401-04-01 | .0000000 | 200 | .6363636 | .0000000 | 8.0000000 | .0000000 | 0 | 40 + 3 | 1401-06-01 | .0000000 | 500 | .6363636 | 5.0000000 | 9.0000000 | .0000000 | 5 | 30 + 3 | 1401-06-01 | .0000000 | 600 | .6363636 | 5.0000000 | 10.0000000 | .0000000 | 5 | 30 + 4 | 1401-06-01 | .0000000 | 700 | .9090909 | 1.0000000 | 11.0000000 | .0000000 | 1 | 40 + 4 | 1401-06-01 | .0000000 | 800 | .9090909 | 1.0000000 | 12.0000000 | .0000000 | 1 | 40 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn/ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and floor(ow_sale.prc) preceding ); -- mvd 3->2; + vn | to_char | pn +----+-------------------+----- + 40 | .0000000 | 800 + 40 | .0000000 | 700 + 30 | .0000000 | 600 + 30 | .0000000 | 500 + 30 | .0000000 | 500 + 50 | .0000000 | 400 + 50 | .0000000 | 400 + 30 | .0000000 | 300 + 10 | .0000000 | 200 + 40 | .0000000 | 200 + 20 | .0000000 | 100 + 40 | .0000000 | 100 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn/ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.prc) as int),cast (floor(ow_sale.vn/ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and 3 preceding ), +win2 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc); -- mvd 7->6; 9,7,10->8; + qty | qty | qty | cn | cn | to_char | vn | to_char | dt | pn +------+------+------+----+----+-------------------+----+-------------------+------------+----- + 1 | 1 | 1 | 1 | 1 | .0000000 | 50 | .0000000 | 1401-06-01 | 400 + 1 | 1 | 1 | 2 | 2 | .0000000 | 50 | .0000000 | 1401-06-01 | 400 + 1100 | 1100 | 1100 | 2 | 2 | .0000000 | 40 | .0000000 | 1401-01-01 | 100 + 1 | 1 | 1 | 3 | 3 | .0000000 | 40 | .0000000 | 1401-04-01 | 200 + 1 | 1 | 1 | 4 | 4 | .0000000 | 40 | .0000000 | 1401-06-01 | 800 + 1 | 1 | 1 | 4 | 4 | .0000000 | 40 | .0000000 | 1401-06-01 | 700 + 12 | 12 | 12 | 3 | 3 | .0000000 | 30 | .0000000 | 1401-06-01 | 600 + 12 | 12 | 12 | 1 | 1 | .0000000 | 30 | .0000000 | 1401-06-01 | 500 + 1 | 1 | 1 | 1 | 1 | .0000000 | 30 | .0000000 | 1401-05-02 | 300 + 12 | 12 | 12 | 3 | 3 | .0000000 | 30 | .0000000 | 1401-06-01 | 500 + 1 | 1 | 1 | 1 | 1 | .0000000 | 20 | .0000000 | 1401-05-01 | 100 + 1 | 1 | 1 | 1 | 1 | .0000000 | 10 | .0000000 | 1401-03-01 | 200 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and current row ); -- mvd 2->4; + prc | pn | prc | to_char +------+-----+------+------------------- + 0 | 100 | 0 | 1.0000000 + 2400 | 100 | 2400 | 1.0000000 + 0 | 200 | 0 | .8703883 + 0 | 200 | 0 | .8703883 + 0 | 300 | 0 | .7717436 + 0 | 400 | 0 | .4603684 + 0 | 400 | 0 | .4603684 + 5 | 500 | 5 | .3273268 + 5 | 500 | 5 | .3273268 + 5 | 600 | 5 | .2511638 + 1 | 700 | 1 | .3027650 + 1 | 800 | 1 | .3379763 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn+ow_sale.prc),floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and floor(ow_sale.qty+ow_sale.qty) following ); -- mvd 3->2; + vn | to_char | pn +----+-------------------+----- + 40 | .0000000 | 800 + 40 | .0000000 | 700 + 30 | .8600744 | 600 + 30 | .9200655 | 500 + 30 | .9200655 | 500 + 50 | -.1978391 | 400 + 50 | -.1978391 | 400 + 30 | .0688953 | 300 + 10 | .3369040 | 200 + 40 | .3369040 | 200 + 20 | .2910704 | 100 + 40 | .2910704 | 100 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn*ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and floor(ow_sale.qty+ow_sale.cn) following ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn asc); -- mvd 8->7; 2->9; 2->10; 4,8->11; + dt | vn | vn | cn | vn | dt | to_char | pn | to_char | to_char | to_char +------------+----+----+----+----+------------+-------------------+-----+-------------------+-------------------+------------------- + 1401-06-01 | 50 | 50 | 2 | 50 | 1401-06-01 | .9999996 | 400 | .0000000 | 2.0000000 | .0000000 + 1401-06-01 | 50 | 50 | 1 | 50 | 1401-06-01 | .9999996 | 400 | .0000000 | 2.0000000 | 1.0000000 + 1401-04-01 | 40 | 40 | 3 | 40 | 1401-04-01 | .9999996 | 200 | .1818182 | 4.0000000 | .0000000 + 1401-06-01 | 40 | 40 | 4 | 40 | 1401-06-01 | .9998406 | 800 | .1818182 | 4.0000000 | .0000000 + 1401-01-01 | 40 | 40 | 2 | 40 | 1401-01-01 | .9998406 | 100 | .1818182 | 4.0000000 | .0000000 + 1401-06-01 | 40 | 40 | 4 | 40 | 1401-06-01 | .9998419 | 700 | .1818182 | 4.0000000 | .0000000 + 1401-06-01 | 30 | 30 | 1 | 30 | 1401-06-01 | .9999095 | 500 | .5454545 | 4.0000000 | .0000000 + 1401-06-01 | 30 | 30 | 3 | 30 | 1401-06-01 | .9999095 | 500 | .5454545 | 4.0000000 | .0000000 + 1401-06-01 | 30 | 30 | 3 | 30 | 1401-06-01 | .9998437 | 600 | .5454545 | 4.0000000 | .0000000 + 1401-05-02 | 30 | 30 | 1 | 30 | 1401-05-02 | .9999996 | 300 | .5454545 | 4.0000000 | 1.0000000 + 1401-05-01 | 20 | 20 | 1 | 20 | 1401-05-01 | 1.0000000 | 100 | .9090909 | 4.0000000 | 1.0000000 + 1401-03-01 | 10 | 10 | 1 | 10 | 1401-03-01 | .9999996 | 200 | 1.0000000 | 4.0000000 | 1.0000000 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 3->2; + prc | to_char | vn +------+-------------------+---- + 0 | -.3861596 | 10 + 0 | -.3861596 | 20 + 5 | -.3861596 | 30 + 0 | -.3861596 | 30 + 5 | -.3861596 | 30 + 5 | -.3861596 | 30 + 2400 | -.3861596 | 40 + 1 | -.3861596 | 40 + 1 | -.3861596 | 40 + 0 | -.3861596 | 40 + 0 | -.3861596 | 50 + 0 | -.3861596 | 50 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc); -- mvd 4->5; 7,2->6; + prc | vn | vn | pn | to_char | to_char | qty +------+----+----+-----+-------------------+-------------------+------ + 1 | 40 | 40 | 800 | 1.0000000 | .0000000 | 1 + 1 | 40 | 40 | 700 | 1.0000000 | 40.0000000 | 1 + 5 | 30 | 30 | 600 | 1.0000000 | .0000000 | 12 + 5 | 30 | 30 | 500 | 1.0000000 | .0000000 | 12 + 5 | 30 | 30 | 500 | 1.0000000 | .0000000 | 12 + 0 | 50 | 50 | 400 | 1.0000000 | .0000000 | 1 + 0 | 50 | 50 | 400 | 1.0000000 | 50.0000000 | 1 + 0 | 30 | 30 | 300 | 1.0000000 | .0000000 | 1 + 0 | 10 | 10 | 200 | 1.0000000 | .0000000 | 1 + 0 | 40 | 40 | 200 | 1.0000000 | 40.0000000 | 1 + 0 | 20 | 20 | 100 | 1.0000000 | .0000000 | 1 + 2400 | 40 | 40 | 100 | 1.0000000 | .0000000 | 1100 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 2 preceding and 1 preceding ); -- mvd 3->2; + qty | to_char | cn +------+-------------------+---- + 1 | .0000000 | 4 + 1 | .0000000 | 4 + 12 | .0000000 | 3 + 1 | .0000000 | 3 + 12 | .0000000 | 3 + 1 | -1.0000000 | 2 + 1100 | -1.0000000 | 2 + 1 | .1235409 | 1 + 1 | .1235409 | 1 + 12 | .1235409 | 1 + 1 | .1235409 | 1 + 1 | .1235409 | 1 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.cn-ow_sale.cn) preceding and floor(ow_sale.prc-ow_sale.prc) preceding ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.vn asc); -- mvd 3->2; 3->4; 3->5; 7->6; + pn | to_char | cn | to_char | to_char | to_char | vn +-----+-------------------+----+-------------------+-------------------+-------------------+---- + 200 | .7071068 | 1 | .4166667 | -49.0000000 | 1.0000000 | 10 + 100 | .7071068 | 1 | .4166667 | -49.0000000 | 2.0000000 | 20 + 500 | .9707253 | 3 | .8333333 | -37.0000000 | 3.0000000 | 30 + 500 | .7071068 | 1 | .4166667 | -49.0000000 | 3.0000000 | 30 + 300 | .7071068 | 1 | .4166667 | -49.0000000 | 3.0000000 | 30 + 600 | .9707253 | 3 | .8333333 | -37.0000000 | 3.0000000 | 30 + 100 | -1.0000000 | 2 | .5833333 | -48.0000000 | 4.0000000 | 40 + 700 | .0000000 | 4 | 1.0000000 | -36.0000000 | 4.0000000 | 40 + 200 | .9707253 | 3 | .8333333 | -37.0000000 | 4.0000000 | 40 + 800 | .0000000 | 4 | 1.0000000 | -36.0000000 | 4.0000000 | 40 + 400 | .7071068 | 1 | .4166667 | -49.0000000 | 5.0000000 | 50 + 400 | -1.0000000 | 2 | .5833333 | -48.0000000 | 5.0000000 | 50 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 0 preceding and current row ); -- mvd 4->7; + qty | qty | qty | cn | dt | cn | to_char +------+------+------+----+------------+----+------------------- + 1 | 1 | 1 | 1 | 1401-03-01 | 1 | .0000000 + 1 | 1 | 1 | 1 | 1401-05-01 | 1 | .0000000 + 1 | 1 | 1 | 1 | 1401-05-02 | 1 | .0000000 + 1 | 1 | 1 | 1 | 1401-06-01 | 1 | .0000000 + 12 | 12 | 12 | 1 | 1401-06-01 | 1 | .0000000 + 1100 | 1100 | 1100 | 2 | 1401-01-01 | 2 | .0000000 + 1 | 1 | 1 | 2 | 1401-06-01 | 2 | .0000000 + 1 | 1 | 1 | 3 | 1401-04-01 | 3 | .0000000 + 12 | 12 | 12 | 3 | 1401-06-01 | 3 | .0000000 + 12 | 12 | 12 | 3 | 1401-06-01 | 3 | .0000000 + 1 | 1 | 1 | 4 | 1401-06-01 | 4 | .0000000 + 1 | 1 | 1 | 4 | 1401-06-01 | 4 | .0000000 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn*ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.qty,ow_sale.cn order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.pn,ow_sale.qty,ow_sale.cn order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 3 preceding and current row ), +win2 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.cn order by ow_sale.vn desc); -- mvd 7->6; 1,7,3,4->8; 1,7,3,4->9; 1,7,3,4->10; 1,7,3,4->11; + cn | cn | qty | pn | cn | to_char | vn | to_char | to_char | to_char | to_char +----+----+------+-----+----+-------------------+----+-------------------+-------------------+-------------------+------------------- + 1 | 1 | 1 | 200 | 1 | .0000000 | 10 | .0000000 | 10.0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 1 | 100 | 1 | .0000000 | 20 | .0000000 | 20.0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 12 | 500 | 1 | .0000000 | 30 | .0000000 | 30.0000000 | 1.0000000 | 1.0000000 + 3 | 3 | 12 | 500 | 3 | .0000000 | 30 | .0000000 | 30.0000000 | 9.0000000 | 1.0000000 + 1 | 1 | 1 | 300 | 1 | .0000000 | 30 | .0000000 | 30.0000000 | 1.0000000 | 1.0000000 + 3 | 3 | 12 | 600 | 3 | .0000000 | 30 | .0000000 | 30.0000000 | 9.0000000 | 1.0000000 + 4 | 4 | 1 | 700 | 4 | .0000000 | 40 | .0000000 | 40.0000000 | 16.0000000 | 1.0000000 + 4 | 4 | 1 | 800 | 4 | .0000000 | 40 | .0000000 | 40.0000000 | 16.0000000 | 1.0000000 + 2 | 2 | 1100 | 100 | 2 | .0000000 | 40 | .0000000 | 40.0000000 | 4.0000000 | 1.0000000 + 3 | 3 | 1 | 200 | 3 | .0000000 | 40 | .0000000 | 40.0000000 | 9.0000000 | 1.0000000 + 2 | 2 | 1 | 400 | 2 | .0000000 | 50 | .0000000 | 50.0000000 | 4.0000000 | 1.0000000 + 1 | 1 | 1 | 400 | 1 | .0000000 | 50 | .0000000 | 50.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 2 preceding and 3 following ); -- mvd 4->3; + dt | dt | to_char | cn +------------+------------+-------------------+---- + 1401-03-01 | 1401-03-01 | .8867829 | 1 + 1401-05-01 | 1401-05-01 | .8867829 | 1 + 1401-05-02 | 1401-05-02 | .8867829 | 1 + 1401-06-01 | 1401-06-01 | .8867829 | 1 + 1401-06-01 | 1401-06-01 | .8867829 | 1 + 1401-01-01 | 1401-01-01 | .8867829 | 2 + 1401-06-01 | 1401-06-01 | .8867829 | 2 + 1401-06-01 | 1401-06-01 | .8867829 | 3 + 1401-04-01 | 1401-04-01 | .8867829 | 3 + 1401-06-01 | 1401-06-01 | .8867829 | 3 + 1401-06-01 | 1401-06-01 | .9046374 | 4 + 1401-06-01 | 1401-06-01 | .9046374 | 4 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.pn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn/ow_sale.cn)) OVER(order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 0 preceding and floor(ow_sale.vn) following ), +win2 as (order by ow_sale.pn desc); -- mvd 7->6; 7->8; 5->9; 5->10; + prc | qty | vn | vn | pn | to_char | cn | to_char | to_char | to_char +------+------+----+----+-----+-------------------+----+-------------------+-------------------+------------------- + 1 | 1 | 40 | 40 | 800 | .0000000 | 4 | 704.0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 40 | 40 | 700 | .0000000 | 4 | 704.0000000 | 2.0000000 | 2.0000000 + 5 | 12 | 30 | 30 | 600 | -.7492453 | 3 | 203.0000000 | 3.0000000 | 3.0000000 + 5 | 12 | 30 | 30 | 500 | -.7492453 | 3 | 203.0000000 | 4.0000000 | 5.0000000 + 5 | 12 | 30 | 30 | 500 | -.3310223 | 1 | 101.0000000 | 5.0000000 | 5.0000000 + 0 | 1 | 50 | 50 | 400 | -.4249646 | 2 | 102.0000000 | 6.0000000 | 7.0000000 + 0 | 1 | 50 | 50 | 400 | -.3310223 | 1 | 101.0000000 | 7.0000000 | 7.0000000 + 0 | 1 | 30 | 30 | 300 | -.3310223 | 1 | 101.0000000 | 8.0000000 | 8.0000000 + 0 | 1 | 40 | 40 | 200 | -.7492453 | 3 | 203.0000000 | 9.0000000 | 10.0000000 + 0 | 1 | 10 | 10 | 200 | -.3310223 | 1 | 101.0000000 | 10.0000000 | 10.0000000 + 0 | 1 | 20 | 20 | 100 | -.3310223 | 1 | 101.0000000 | 11.0000000 | 12.0000000 + 2400 | 1100 | 40 | 40 | 100 | -.4249646 | 2 | 102.0000000 | 12.0000000 | 12.0000000 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 0 preceding and unbounded following ); -- mvd 3->2; + cn | to_char | vn +----+-------------------+---- + 1 | -.9999452 | 10 + 1 | -.9999466 | 20 + 3 | -.9999484 | 30 + 1 | -.9999484 | 30 + 1 | -.9999484 | 30 + 3 | -.9999484 | 30 + 2 | -.9999999 | 40 + 4 | -.9999999 | 40 + 3 | -.9999999 | 40 + 4 | -.9999999 | 40 + 2 | .0000000 | 50 + 1 | .0000000 | 50 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 0 preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.cn desc); -- mvd 2->4; 2,6,7->5; + prc | cn | dt | to_char | to_char | vn | pn +------+----+------------+-------------------+-------------------+----+----- + 0 | 1 | 1401-05-02 | -.0427710 | .0000000 | 30 | 300 + 5 | 1 | 1401-06-01 | -.0427710 | 1.0000000 | 30 | 500 + 0 | 1 | 1401-06-01 | -.0427710 | 1.0000000 | 50 | 400 + 0 | 1 | 1401-03-01 | -.0427710 | .0000000 | 10 | 200 + 0 | 1 | 1401-05-01 | -.0427710 | .0000000 | 20 | 100 + 2400 | 2 | 1401-01-01 | -.5418271 | .0000000 | 40 | 100 + 0 | 2 | 1401-06-01 | -.5418271 | .0000000 | 50 | 400 + 5 | 3 | 1401-06-01 | -.6666667 | .0000000 | 30 | 500 + 5 | 3 | 1401-06-01 | -.6666667 | .0000000 | 30 | 600 + 0 | 3 | 1401-04-01 | -.6666667 | .0000000 | 40 | 200 + 1 | 4 | 1401-06-01 | .0000000 | .0000000 | 40 | 700 + 1 | 4 | 1401-06-01 | .0000000 | .0000000 | 40 | 800 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and current row ); -- mvd 3->2; + qty | to_char | vn +------+-------------------+---- + 1 | .0000000 | 50 + 1 | .0000000 | 50 + 1100 | 1.0000000 | 40 + 1 | 1.0000000 | 40 + 1 | 1.0000000 | 40 + 1 | 1.0000000 | 40 + 12 | 1.0000000 | 30 + 1 | 1.0000000 | 30 + 12 | 1.0000000 | 30 + 12 | 1.0000000 | 30 + 1 | .0000000 | 20 + 1 | .0000000 | 10 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn/ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and current row ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 2->6; 2->7; 3->8; 3->9; 1->10; + cn | vn | pn | vn | vn | to_char | to_char | to_char | to_char | to_char +----+----+-----+----+----+-------------------+-------------------+-------------------+-------------------+------------------- + 2 | 40 | 100 | 40 | 40 | -.3590309 | 4.0000000 | 8.0000000 | 11.0000000 | 1100.0000000 + 1 | 10 | 200 | 10 | 10 | .0000000 | 1.0000000 | 7.0000000 | 9.0000000 | .0000000 + 3 | 40 | 200 | 40 | 40 | -.3590309 | 4.0000000 | 7.0000000 | 9.0000000 | .0000000 + 1 | 20 | 100 | 20 | 20 | .0000000 | 1.0000000 | 8.0000000 | 11.0000000 | .0000000 + 1 | 30 | 300 | 30 | 30 | .6856094 | 4.0000000 | 6.0000000 | 8.0000000 | .0000000 + 1 | 50 | 400 | 50 | 50 | .0000000 | 2.0000000 | 5.0000000 | 6.0000000 | .0000000 + 2 | 50 | 400 | 50 | 50 | .0000000 | 2.0000000 | 5.0000000 | 6.0000000 | .0000000 + 1 | 30 | 500 | 30 | 30 | .6856094 | 4.0000000 | 4.0000000 | 4.0000000 | .0000000 + 3 | 30 | 500 | 30 | 30 | .6856094 | 4.0000000 | 4.0000000 | 4.0000000 | .0000000 + 3 | 30 | 600 | 30 | 30 | .6856094 | 4.0000000 | 3.0000000 | 3.0000000 | .0000000 + 4 | 40 | 700 | 40 | 40 | -.3590309 | 4.0000000 | 2.0000000 | 2.0000000 | .0000000 + 4 | 40 | 800 | 40 | 40 | -.3590309 | 4.0000000 | 1.0000000 | 1.0000000 | .0000000 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn/ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and 2 following ); -- mvd 3->4; + qty | prc | cn | to_char +------+------+----+------------------- + 1 | 1 | 4 | .6874695 + 1 | 1 | 4 | .6874695 + 12 | 5 | 3 | -.0023282 + 12 | 5 | 3 | -.0023282 + 1 | 0 | 3 | -.0023282 + 1 | 0 | 2 | .4392734 + 1100 | 2400 | 2 | .4392734 + 1 | 0 | 1 | .0889704 + 12 | 5 | 1 | .0889704 + 1 | 0 | 1 | .0889704 + 1 | 0 | 1 | .0889704 + 1 | 0 | 1 | .0889704 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn*ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.pn)) OVER(order by ow_sale.pn desc range between current row and 2 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.prc*ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and 2 following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.vn desc), +win4 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc); -- mvd 1->3; 1->4; 6->5; 6,8->7; 6,10,1->9; + pn | qty | to_char | to_char | to_char | cn | to_char | vn | to_char | dt +-----+------+-------------------+-------------------+-------------------+----+-------------------+----+-------------------+------------ + 100 | 1100 | .0000000 | -80.0000000 | .0000000 | 2 | .0000000 | 40 | .0000000 | 1401-01-01 + 200 | 1 | .0000000 | -190.0000000 | 1100.0000000 | 1 | .0000000 | 10 | .0000000 | 1401-03-01 + 200 | 1 | .0000000 | -190.0000000 | .0000000 | 3 | .0000000 | 40 | .0000000 | 1401-04-01 + 100 | 1 | .0000000 | -80.0000000 | 1.0000000 | 1 | .0000000 | 20 | .0000000 | 1401-05-01 + 300 | 1 | .0000000 | -270.0000000 | 1.0000000 | 1 | .0000000 | 30 | .0000000 | 1401-05-02 + 400 | 1 | .0000000 | -350.0000000 | 1.0000000 | 1 | .0000000 | 50 | .0000000 | 1401-06-01 + 400 | 1 | .0000000 | -350.0000000 | 1.0000000 | 2 | .0000000 | 50 | .0000000 | 1401-06-01 + 500 | 12 | .0000000 | -470.0000000 | 1.0000000 | 1 | .0000000 | 30 | .0000000 | 1401-06-01 + 500 | 12 | .0000000 | -470.0000000 | 1.0000000 | 3 | .0000000 | 30 | .0000000 | 1401-06-01 + 600 | 12 | .0000000 | -570.0000000 | 1.0000000 | 3 | .0000000 | 30 | .0000000 | 1401-06-01 + 700 | 1 | .0000000 | -660.0000000 | 1.0000000 | 4 | .0000000 | 40 | .0000000 | 1401-06-01 + 800 | 1 | .0000000 | -760.0000000 | 12.0000000 | 4 | .0000000 | 40 | .0000000 | 1401-06-01 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty*ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and unbounded following ); -- mvd 5->4; + prc | pn | pn | to_char | vn +------+-----+-----+-------------------+---- + 0 | 200 | 200 | .1439154 | 10 + 0 | 100 | 100 | .0966311 | 20 + 5 | 600 | 600 | .0317800 | 30 + 0 | 300 | 300 | .0317800 | 30 + 5 | 500 | 500 | .0317800 | 30 + 5 | 500 | 500 | .0317800 | 30 + 2400 | 100 | 100 | -.3179567 | 40 + 1 | 700 | 700 | -.3179567 | 40 + 0 | 200 | 200 | -.3179567 | 40 + 1 | 800 | 800 | -.3179567 | 40 + 0 | 400 | 400 | .0000000 | 50 + 0 | 400 | 400 | .0000000 | 50 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc*ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(order by ow_sale.cn asc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.qty) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and unbounded following ), +win2 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc); -- mvd 3->6; 3->7; 3->8; 3->9; 3,11,12,4->10; + dt | prc | cn | pn | pn | to_char | to_char | to_char | to_char | to_char | vn | qty +------------+------+----+-----+-----+-------------------+-------------------+-------------------+-------------------+-------------------+----+------ + 1401-05-02 | 0 | 1 | 300 | 300 | -.4035176 | 1.0000000 | 100.0000000 | 4.0000000 | .0000000 | 30 | 1 + 1401-06-01 | 0 | 1 | 400 | 400 | -.4035176 | 1.0000000 | 100.0000000 | 4.0000000 | .0000000 | 50 | 1 + 1401-05-01 | 0 | 1 | 100 | 100 | -.4035176 | 1.0000000 | 100.0000000 | 4.0000000 | .0000000 | 20 | 1 + 1401-03-01 | 0 | 1 | 200 | 200 | -.4035176 | 1.0000000 | 100.0000000 | 4.0000000 | .0000000 | 10 | 1 + 1401-06-01 | 5 | 1 | 500 | 500 | -.4035176 | 1.0000000 | 100.0000000 | 4.0000000 | .0000000 | 30 | 12 + 1401-06-01 | 0 | 2 | 400 | 400 | -.6356447 | 1.0000000 | 100.0000000 | 4.0000000 | .0000000 | 50 | 1 + 1401-01-01 | 2400 | 2 | 100 | 100 | -.6356447 | 1.0000000 | 100.0000000 | 4.0000000 | .0000000 | 40 | 1100 + 1401-04-01 | 0 | 3 | 200 | 200 | .2201367 | 1.0000000 | 200.0000000 | 4.0000000 | .0000000 | 40 | 1 + 1401-06-01 | 5 | 3 | 500 | 500 | .2201367 | 1.0000000 | 200.0000000 | 4.0000000 | .0000000 | 30 | 12 + 1401-06-01 | 5 | 3 | 600 | 600 | .2201367 | 1.0000000 | 200.0000000 | 4.0000000 | .0000000 | 30 | 12 + 1401-06-01 | 1 | 4 | 700 | 700 | 1.0000000 | 1.0000000 | 700.0000000 | 4.0000000 | .0000000 | 40 | 1 + 1401-06-01 | 1 | 4 | 800 | 800 | 1.0000000 | 1.0000000 | 700.0000000 | 4.0000000 | .0000000 | 40 | 1 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.vn+ow_sale.qty) following and floor(ow_sale.vn+ow_sale.pn) following ); -- mvd 1->5; + vn | qty | vn | prc | to_char +----+------+----+------+------------------- + 50 | 1 | 50 | 0 | .0000000 + 50 | 1 | 50 | 0 | .0000000 + 40 | 1100 | 40 | 2400 | .0000000 + 40 | 1 | 40 | 1 | .0000000 + 40 | 1 | 40 | 1 | .0000000 + 40 | 1 | 40 | 0 | .0000000 + 30 | 12 | 30 | 5 | .0000000 + 30 | 1 | 30 | 0 | .0000000 + 30 | 12 | 30 | 5 | .0000000 + 30 | 12 | 30 | 5 | .0000000 + 20 | 1 | 20 | 0 | .0000000 + 10 | 1 | 10 | 0 | .0000000 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.cn order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 4 following and floor(ow_sale.vn) following ), +win2 as (partition by ow_sale.cn order by ow_sale.pn desc); -- mvd 5->4; 5,1->6; 5,1->7; + pn | pn | vn | to_char | cn | to_char | to_char +-----+-----+----+-------------------+----+-------------------+------------------- + 800 | 800 | 40 | .0000000 | 4 | 1.0000000 | 1.0000000 + 700 | 700 | 40 | .0000000 | 4 | 2.0000000 | 2.0000000 + 600 | 600 | 30 | .0000000 | 3 | 1.0000000 | 1.0000000 + 500 | 500 | 30 | .0000000 | 3 | 2.0000000 | 2.0000000 + 200 | 200 | 40 | .0000000 | 3 | 3.0000000 | 3.0000000 + 400 | 400 | 50 | .0000000 | 2 | 1.0000000 | 1.0000000 + 100 | 100 | 40 | .0000000 | 2 | 2.0000000 | 2.0000000 + 200 | 200 | 10 | .0000000 | 1 | 4.0000000 | 4.0000000 + 500 | 500 | 30 | .0000000 | 1 | 1.0000000 | 1.0000000 + 100 | 100 | 20 | .0000000 | 1 | 5.0000000 | 5.0000000 + 400 | 400 | 50 | .0000000 | 1 | 2.0000000 | 2.0000000 + 300 | 300 | 30 | .0000000 | 1 | 3.0000000 | 3.0000000 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 0 following and unbounded following ); -- mvd 3->4; + dt | dt | vn | to_char +------------+------------+----+------------------- + 1401-06-01 | 1401-06-01 | 50 | .3980391 + 1401-06-01 | 1401-06-01 | 50 | .3980391 + 1401-01-01 | 1401-01-01 | 40 | .3975559 + 1401-06-01 | 1401-06-01 | 40 | .3975559 + 1401-04-01 | 1401-04-01 | 40 | .3975559 + 1401-06-01 | 1401-06-01 | 40 | .3975559 + 1401-06-01 | 1401-06-01 | 30 | .9271757 + 1401-05-02 | 1401-05-02 | 30 | .9271757 + 1401-06-01 | 1401-06-01 | 30 | .9271757 + 1401-06-01 | 1401-06-01 | 30 | .9271757 + 1401-05-01 | 1401-05-01 | 20 | .0000000 + 1401-03-01 | 1401-03-01 | 10 | .0000000 +(12 rows) + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc+ow_sale.qty),floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn/ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.cn) following and unbounded following ), +win2 as (order by ow_sale.pn desc); -- mvd 6->5; 8->7; 8->9; + prc | qty | qty | qty | to_char | cn | to_char | pn | to_char +------+------+------+------+-------------------+----+-------------------+-----+------------------- + 1 | 1 | 1 | 1 | .0000000 | 4 | 1.0000000 | 800 | 1.0000000 + 1 | 1 | 1 | 1 | .0000000 | 4 | 2.0000000 | 700 | 2.0000000 + 5 | 12 | 12 | 12 | .0000000 | 3 | 3.0000000 | 600 | 3.0000000 + 5 | 12 | 12 | 12 | .0000000 | 1 | 4.0000000 | 500 | 5.0000000 + 5 | 12 | 12 | 12 | .0000000 | 3 | 4.0000000 | 500 | 5.0000000 + 0 | 1 | 1 | 1 | .0000000 | 1 | 5.0000000 | 400 | 7.0000000 + 0 | 1 | 1 | 1 | .0000000 | 2 | 5.0000000 | 400 | 7.0000000 + 0 | 1 | 1 | 1 | .0000000 | 1 | 6.0000000 | 300 | 8.0000000 + 0 | 1 | 1 | 1 | .0000000 | 1 | 7.0000000 | 200 | 10.0000000 + 0 | 1 | 1 | 1 | .0000000 | 3 | 7.0000000 | 200 | 10.0000000 + 0 | 1 | 1 | 1 | .0000000 | 1 | 8.0000000 | 100 | 12.0000000 + 2400 | 1100 | 1100 | 1100 | .0000000 | 2 | 8.0000000 | 100 | 12.0000000 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty+ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows unbounded preceding ); -- mvd 1,3->2; + cn | to_char | vn +----+-------------------+---- + 2 | .0000000 | 40 + 1 | 1.0000000 | 10 + 3 | .9997282 | 40 + 1 | .9997501 | 20 + 1 | .9997483 | 30 + 1 | .9995125 | 50 + 2 | .9993644 | 50 + 1 | .9993715 | 30 + 3 | .9993769 | 30 + 3 | .9993813 | 30 + 4 | .9993623 | 40 + 4 | .9993471 | 40 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn+ow_sale.qty) as int),cast (floor(ow_sale.prc+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn+ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows unbounded preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc), +win4 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 4->5; 4->6; 4,3->7; 4->8; 4->9; 4->10; + prc | qty | pn | vn | to_char | to_char | to_char | to_char | to_char | to_char +------+------+-----+----+-------------------+-------------------+-------------------+-------------------+-------------------+------------------- + 0 | 1 | 400 | 50 | -.1189129 | 1.0000000 | .0000000 | 50.0000000 | 40.0000000 | 1.0000000 + 0 | 1 | 400 | 50 | -.3067192 | 1.0000000 | .0000000 | 50.0000000 | 30.0000000 | 1.0000000 + 1 | 1 | 800 | 40 | .6634798 | 3.0000000 | .0000000 | 40.0000000 | .0000000 | 2.0000000 + 0 | 1 | 200 | 40 | .0000000 | 3.0000000 | .0000000 | 40.0000000 | 30.0000000 | 2.0000000 + 1 | 1 | 700 | 40 | .5440259 | 3.0000000 | .0000000 | 40.0000000 | .0000000 | 2.0000000 + 2400 | 1100 | 100 | 40 | .0000000 | 3.0000000 | .0000000 | 40.0000000 | 30.0000000 | 2.0000000 + 5 | 12 | 500 | 30 | -.2540003 | 7.0000000 | .0000000 | 30.0000000 | 30.0000000 | 3.0000000 + 5 | 12 | 500 | 30 | .0912871 | 7.0000000 | .0000000 | 30.0000000 | .0000000 | 3.0000000 + 5 | 12 | 600 | 30 | .3147733 | 7.0000000 | .0000000 | 30.0000000 | .0000000 | 3.0000000 + 0 | 1 | 300 | 30 | -.1336306 | 7.0000000 | .0000000 | 30.0000000 | 50.0000000 | 3.0000000 + 0 | 1 | 100 | 20 | .3015113 | 11.0000000 | .0000000 | 20.0000000 | 50.0000000 | 4.0000000 + 0 | 1 | 200 | 10 | -1.0000000 | 12.0000000 | .0000000 | 10.0000000 | 20.0000000 | 5.0000000 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc+ow_sale.cn),floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows floor(ow_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn+ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows floor(ow_sale.pn) preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 3->2; 3->4; 6->5; + vn | to_char | cn | to_char | to_char | pn +----+-------------------+----+-------------------+-------------------+----- + 40 | .0000000 | 2 | 1.0000000 | .0000000 | 100 + 10 | 1.0000000 | 1 | 2.0000000 | .0000000 | 200 + 40 | .9999997 | 3 | 3.0000000 | .0000000 | 200 + 20 | .9958909 | 1 | 4.0000000 | .0000000 | 100 + 30 | .9877051 | 1 | 5.0000000 | .0000000 | 300 + 50 | .9676687 | 1 | 6.0000000 | .0000000 | 400 + 50 | .9541455 | 2 | 7.0000000 | .0000000 | 400 + 30 | .9223336 | 1 | 8.0000000 | .0000000 | 500 + 30 | .8984890 | 3 | 9.0000000 | .0000000 | 500 + 30 | .8562262 | 3 | 10.0000000 | .0000000 | 600 + 40 | .7987938 | 4 | 11.0000000 | .0000000 | 700 + 40 | .7267682 | 4 | 12.0000000 | .0000000 | 800 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows current row ); -- mvd 1->2; + cn | to_char +----+------------------- + 2 | .0000000 + 1 | .0000000 + 3 | .0000000 + 1 | .0000000 + 1 | .0000000 + 1 | .0000000 + 2 | .0000000 + 1 | .0000000 + 3 | .0000000 + 3 | .0000000 + 4 | .0000000 + 4 | .0000000 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn+ow_sale.pn),floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows current row ), +win2 as (order by ow_sale.cn desc); -- mvd 1->4; 6->5; 6->7; + vn | qty | qty | to_char | to_char | cn | to_char +----+------+------+-------------------+-------------------+----+------------------- + 40 | 1 | 1 | .0000000 | .0000000 | 4 | 1.0000000 + 40 | 1 | 1 | .0000000 | .0000000 | 4 | 1.0000000 + 30 | 12 | 12 | .0000000 | .1818182 | 3 | 2.0000000 + 40 | 1 | 1 | .0000000 | .1818182 | 3 | 2.0000000 + 30 | 12 | 12 | .0000000 | .1818182 | 3 | 2.0000000 + 50 | 1 | 1 | .0000000 | .4545455 | 2 | 3.0000000 + 40 | 1100 | 1100 | .0000000 | .4545455 | 2 | 3.0000000 + 30 | 12 | 12 | .0000000 | .6363636 | 1 | 4.0000000 + 50 | 1 | 1 | .0000000 | .6363636 | 1 | 4.0000000 + 30 | 1 | 1 | .0000000 | .6363636 | 1 | 4.0000000 + 20 | 1 | 1 | .0000000 | .6363636 | 1 | 4.0000000 + 10 | 1 | 1 | .0000000 | .6363636 | 1 | 4.0000000 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc*ow_sale.pn),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.pn asc rows between unbounded preceding and floor(ow_sale.pn+ow_sale.prc) preceding ); -- mvd 4,5,1->3; + pn | dt | to_char | cn | vn +-----+------------+-------------------+----+---- + 100 | 1401-01-01 | .0000000 | 2 | 40 + 200 | 1401-03-01 | .0000000 | 1 | 10 + 200 | 1401-04-01 | .0000000 | 3 | 40 + 100 | 1401-05-01 | .0000000 | 1 | 20 + 300 | 1401-05-02 | .0000000 | 1 | 30 + 400 | 1401-06-01 | .0000000 | 1 | 50 + 400 | 1401-06-01 | .0000000 | 2 | 50 + 500 | 1401-06-01 | .0000000 | 1 | 30 + 500 | 1401-06-01 | .0000000 | 3 | 30 + 600 | 1401-06-01 | .0000000 | 3 | 30 + 700 | 1401-06-01 | .0000000 | 4 | 40 + 800 | 1401-06-01 | .0000000 | 4 | 40 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 1,5->4; + cn | cn | qty | to_char | pn +----+----+------+-------------------+----- + 2 | 2 | 1100 | .0000000 | 100 + 1 | 1 | 1 | -1.0000000 | 200 + 3 | 3 | 1 | -1.0000000 | 200 + 1 | 1 | 1 | -.5773503 | 100 + 1 | 1 | 1 | -.5345225 | 300 + 1 | 1 | 1 | -.4889012 | 400 + 2 | 2 | 1 | -.4950738 | 400 + 1 | 1 | 12 | -.4740582 | 500 + 3 | 3 | 12 | -.4726096 | 500 + 3 | 3 | 12 | -.4551418 | 600 + 4 | 4 | 1 | -.4325492 | 700 + 4 | 4 | 1 | -.4101545 | 800 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty+ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.vn asc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 3,4->2; 6->5; 6->7; 6->8; 4->9; 6->10; + qty | to_char | cn | pn | to_char | vn | to_char | to_char | to_char | to_char +------+-------------------+----+-----+-------------------+----+-------------------+-------------------+-------------------+------------------- + 1 | -1.0000000 | 1 | 200 | 1.0000000 | 10 | 1.0000000 | 1.0000000 | .0000000 | 1.0000000 + 1 | .3015113 | 1 | 100 | 2.0000000 | 20 | 2.0000000 | 2.0000000 | .0000000 | 2.0000000 + 12 | .0912871 | 3 | 500 | 3.0000000 | 30 | 3.0000000 | 3.0000000 | .0000000 | 3.0000000 + 12 | -.2540003 | 1 | 500 | 4.0000000 | 30 | 3.0000000 | 3.0000000 | .0000000 | 3.0000000 + 1 | -.1336306 | 1 | 300 | 5.0000000 | 30 | 3.0000000 | 3.0000000 | .0000000 | 3.0000000 + 12 | .3147733 | 3 | 600 | 6.0000000 | 30 | 3.0000000 | 3.0000000 | .0000000 | 3.0000000 + 1100 | .0000000 | 2 | 100 | 7.0000000 | 40 | 7.0000000 | 7.0000000 | .0000000 | 4.0000000 + 1 | .0000000 | 3 | 200 | 8.0000000 | 40 | 7.0000000 | 7.0000000 | .0000000 | 4.0000000 + 1 | .5440259 | 4 | 700 | 9.0000000 | 40 | 7.0000000 | 7.0000000 | .0000000 | 4.0000000 + 1 | .6634798 | 4 | 800 | 10.0000000 | 40 | 7.0000000 | 7.0000000 | .0000000 | 4.0000000 + 1 | -.1189129 | 2 | 400 | 11.0000000 | 50 | 11.0000000 | 11.0000000 | .0000000 | 5.0000000 + 1 | -.3067192 | 1 | 400 | 12.0000000 | 50 | 11.0000000 | 11.0000000 | .0000000 | 5.0000000 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc/ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between unbounded preceding and 1 following ); -- mvd 2,5->4; + pn | cn | qty | to_char | vn +-----+----+------+-------------------+---- + 100 | 2 | 1100 | 1.0000000 | 40 + 200 | 1 | 1 | .0000000 | 10 + 200 | 3 | 1 | .1740777 | 40 + 100 | 1 | 1 | .2500000 | 20 + 300 | 1 | 1 | .2927700 | 30 + 400 | 1 | 1 | .2401922 | 50 + 400 | 2 | 1 | .2663039 | 50 + 500 | 1 | 12 | .1437045 | 30 + 500 | 3 | 12 | .0760107 | 30 + 600 | 3 | 12 | -.0007573 | 30 + 700 | 4 | 1 | -.0449196 | 40 + 800 | 4 | 1 | -.0449196 | 40 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn-ow_sale.prc),floor(ow_sale.qty/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.prc order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and 4 following ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.prc order by ow_sale.vn desc), +win3 as (order by ow_sale.vn desc); -- mvd 7->6; 9,5,1,2,7->8; 7->10; 9,5,1,2,7->11; 2->12; 2->13; + qty | vn | qty | qty | dt | to_char | pn | to_char | prc | to_char | to_char | to_char | to_char +------+----+------+------+------------+-------------------+-----+-------------------+------+-------------------+-------------------+-------------------+------------------- + 1 | 50 | 1 | 1 | 1401-06-01 | -.9762109 | 400 | 1.0000000 | 0 | 1060.0000000 | 1.0000000 | 1.0000000 | 2.0000000 + 1 | 50 | 1 | 1 | 1401-06-01 | -.9833151 | 400 | 1.0000000 | 0 | 1060.0000000 | 1.0000000 | 2.0000000 | 2.0000000 + 1 | 40 | 1 | 1 | 1401-06-01 | -.9666924 | 800 | 1.0000000 | 1 | 1060.0000000 | 1.0000000 | 3.0000000 | 6.0000000 + 1 | 40 | 1 | 1 | 1401-04-01 | -.9935691 | 200 | 1.0000000 | 0 | 1060.0000000 | 1.0000000 | 4.0000000 | 6.0000000 + 1 | 40 | 1 | 1 | 1401-06-01 | -.9666924 | 700 | 1.0000000 | 1 | 1060.0000000 | 1.0000000 | 5.0000000 | 6.0000000 + 1100 | 40 | 1100 | 1100 | 1401-01-01 | -.9980060 | 100 | 1.0000000 | 2400 | 1060.0000000 | 1.0000000 | 6.0000000 | 6.0000000 + 12 | 30 | 12 | 12 | 1401-06-01 | -.9666924 | 500 | 1.0000000 | 5 | 1060.0000000 | 1.0000000 | 7.0000000 | 10.0000000 + 12 | 30 | 12 | 12 | 1401-06-01 | -.9666924 | 500 | 1.0000000 | 5 | 1060.0000000 | 1.0000000 | 8.0000000 | 10.0000000 + 12 | 30 | 12 | 12 | 1401-06-01 | -.9666924 | 600 | 1.0000000 | 5 | 1060.0000000 | 1.0000000 | 9.0000000 | 10.0000000 + 1 | 30 | 1 | 1 | 1401-05-02 | -.9878431 | 300 | 1.0000000 | 0 | 1060.0000000 | 1.0000000 | 10.0000000 | 10.0000000 + 1 | 20 | 1 | 1 | 1401-05-01 | -.9901651 | 100 | 1.0000000 | 0 | 1060.0000000 | 1.0000000 | 11.0000000 | 11.0000000 + 1 | 10 | 1 | 1 | 1401-03-01 | -.9951988 | 200 | 1.0000000 | 0 | 1060.0000000 | 1.0000000 | 12.0000000 | 12.0000000 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and unbounded following ); -- mvd 3,2->4; + dt | pn | cn | to_char +------------+-----+----+------------------- + 1401-01-01 | 100 | 2 | .9999202 + 1401-03-01 | 200 | 1 | .9999202 + 1401-04-01 | 200 | 3 | .9999202 + 1401-05-01 | 100 | 1 | .9999202 + 1401-05-02 | 300 | 1 | .9999202 + 1401-06-01 | 400 | 1 | .9999202 + 1401-06-01 | 400 | 2 | .9999202 + 1401-06-01 | 500 | 1 | .9999202 + 1401-06-01 | 500 | 3 | .9999202 + 1401-06-01 | 600 | 3 | .9999202 + 1401-06-01 | 700 | 4 | .9999202 + 1401-06-01 | 800 | 4 | .9999202 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.vn desc rows between floor(ow_sale.qty*ow_sale.prc) preceding and 2 preceding ); -- mvd 8,9,2->7; + prc | pn | pn | qty | pn | dt | to_char | cn | vn +------+-----+-----+------+-----+------------+-------------------+----+---- + 2400 | 100 | 100 | 1100 | 100 | 1401-01-01 | .0000000 | 2 | 40 + 0 | 200 | 200 | 1 | 200 | 1401-03-01 | .0000000 | 1 | 10 + 0 | 200 | 200 | 1 | 200 | 1401-04-01 | .0000000 | 3 | 40 + 0 | 100 | 100 | 1 | 100 | 1401-05-01 | .0000000 | 1 | 20 + 0 | 300 | 300 | 1 | 300 | 1401-05-02 | .0000000 | 1 | 30 + 0 | 400 | 400 | 1 | 400 | 1401-06-01 | .0000000 | 1 | 50 + 0 | 400 | 400 | 1 | 400 | 1401-06-01 | .0000000 | 2 | 50 + 5 | 500 | 500 | 12 | 500 | 1401-06-01 | .4889012 | 1 | 30 + 5 | 500 | 500 | 12 | 500 | 1401-06-01 | .4950738 | 3 | 30 + 5 | 600 | 600 | 12 | 600 | 1401-06-01 | .4776889 | 3 | 30 + 1 | 700 | 700 | 1 | 700 | 1401-06-01 | .0000000 | 4 | 40 + 1 | 800 | 800 | 1 | 800 | 1401-06-01 | .0000000 | 4 | 40 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn/ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between 1 preceding and 0 preceding ); -- mvd 3->7; 3->8; 3->9; + dt | qty | vn | prc | vn | cn | to_char | to_char | to_char +------------+------+----+------+----+----+-------------------+-------------------+------------------- + 1401-01-01 | 1100 | 40 | 2400 | 40 | 2 | .0000000 | 40.0000000 | .0000000 + 1401-03-01 | 1 | 10 | 0 | 10 | 1 | -1.0000000 | 40.0000000 | 200.0000000 + 1401-04-01 | 1 | 40 | 0 | 40 | 3 | 1.0000000 | 40.0000000 | 200.0000000 + 1401-05-01 | 1 | 20 | 0 | 20 | 1 | 1.0000000 | 40.0000000 | 200.0000000 + 1401-05-02 | 1 | 30 | 0 | 30 | 1 | .0000000 | 30.0000000 | 300.0000000 + 1401-06-01 | 1 | 50 | 0 | 50 | 1 | .0000000 | 50.0000000 | 400.0000000 + 1401-06-01 | 1 | 50 | 0 | 50 | 2 | .0000000 | 50.0000000 | 400.0000000 + 1401-06-01 | 12 | 30 | 5 | 30 | 1 | 1.0000000 | 50.0000000 | 400.0000000 + 1401-06-01 | 12 | 30 | 5 | 30 | 3 | .0000000 | 30.0000000 | 41.0000000 + 1401-06-01 | 12 | 30 | 5 | 30 | 3 | .0000000 | 30.0000000 | 50.0000000 + 1401-06-01 | 1 | 40 | 1 | 40 | 4 | 1.0000000 | 40.0000000 | 700.0000000 + 1401-06-01 | 1 | 40 | 1 | 40 | 4 | .0000000 | 40.0000000 | 800.0000000 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc+ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between 7 preceding and current row ); -- mvd 3,4->2; + pn | to_char | cn | vn +-----+-------------------+----+---- + 100 | .0000000 | 2 | 40 + 200 | -1.0000000 | 1 | 10 + 200 | -.9999997 | 3 | 40 + 100 | -.5770294 | 1 | 20 + 300 | -.5345223 | 1 | 30 + 400 | -.4890407 | 1 | 50 + 400 | -.4950736 | 2 | 50 + 500 | -.4741717 | 1 | 30 + 500 | .6855082 | 3 | 30 + 600 | .7579900 | 3 | 30 + 700 | .7197337 | 4 | 40 + 800 | .5649660 | 4 | 40 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.qty,ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between floor(ow_sale.cn) preceding and current row ), +win2 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.vn asc); -- mvd 4,5->3; 7,5,1->6; 7,5,1->8; + qty | pn | to_char | cn | vn | to_char | dt | to_char +------+-----+-------------------+----+----+-------------------+------------+------------------- + 1100 | 100 | .0000000 | 2 | 40 | 1.0000000 | 1401-01-01 | 1.0000000 + 1 | 200 | 1.0000000 | 1 | 10 | 1.0000000 | 1401-03-01 | 1.0000000 + 1 | 200 | .7356965 | 3 | 40 | 1.0000000 | 1401-04-01 | 1.0000000 + 1 | 100 | 1.0000000 | 1 | 20 | 1.0000000 | 1401-05-01 | 1.0000000 + 1 | 300 | 1.0000000 | 1 | 30 | 1.0000000 | 1401-05-02 | 1.0000000 + 1 | 400 | 1.0000000 | 1 | 50 | 1.0000000 | 1401-06-01 | 1.0000000 + 1 | 400 | .9990153 | 2 | 50 | 1.0000000 | 1401-06-01 | 1.0000000 + 12 | 500 | 1.0000000 | 1 | 30 | 1.0000000 | 1401-06-01 | 1.0000000 + 12 | 500 | .9970388 | 3 | 30 | 1.0000000 | 1401-06-01 | 1.0000000 + 12 | 600 | .7863522 | 3 | 30 | 1.0000000 | 1401-06-01 | 1.0000000 + 1 | 700 | .4561896 | 4 | 40 | 1.0000000 | 1401-06-01 | 1.0000000 + 1 | 800 | .9426617 | 4 | 40 | 1.0000000 | 1401-06-01 | 1.0000000 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between 0 preceding and 6 following ); -- mvd 1->4; + pn | vn | qty | to_char +-----+----+------+------------------- + 100 | 40 | 1100 | .9999996 + 200 | 10 | 1 | .9386522 + 200 | 40 | 1 | .9237022 + 100 | 20 | 1 | .9407529 + 300 | 30 | 1 | .8868849 + 400 | 50 | 1 | .8904986 + 400 | 50 | 1 | .9335822 + 500 | 30 | 12 | .9670962 + 500 | 30 | 12 | 1.0000000 + 600 | 30 | 12 | 1.0000000 + 700 | 40 | 1 | .0000000 + 800 | 40 | 1 | .0000000 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between 0 preceding and unbounded following ); -- mvd 2,4->3; + vn | cn | to_char | pn +----+----+-------------------+----- + 40 | 2 | -.0427710 | 100 + 10 | 1 | .0778216 | 200 + 40 | 3 | .0183773 | 200 + 20 | 1 | .0640184 | 100 + 30 | 1 | -.0264906 | 300 + 50 | 1 | -.1750350 | 400 + 50 | 2 | -.4685213 | 400 + 30 | 1 | -.7453560 | 500 + 30 | 3 | -1.0000000 | 500 + 30 | 3 | -1.0000000 | 600 + 40 | 4 | .0000000 | 700 + 40 | 4 | .0000000 | 800 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc),floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between current row and current row ); -- mvd 6->5; + vn | prc | vn | pn | to_char | cn +----+------+----+-----+-------------------+---- + 40 | 2400 | 40 | 100 | .0000000 | 2 + 10 | 0 | 10 | 200 | .0000000 | 1 + 40 | 0 | 40 | 200 | .0000000 | 3 + 20 | 0 | 20 | 100 | .0000000 | 1 + 30 | 0 | 30 | 300 | .0000000 | 1 + 50 | 0 | 50 | 400 | .0000000 | 1 + 50 | 0 | 50 | 400 | .0000000 | 2 + 30 | 5 | 30 | 500 | .0000000 | 1 + 30 | 5 | 30 | 500 | .0000000 | 3 + 30 | 5 | 30 | 600 | .0000000 | 3 + 40 | 1 | 40 | 700 | .0000000 | 4 + 40 | 1 | 40 | 800 | .0000000 | 4 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.vn asc rows between current row and current row ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,4->2; 3->5; + pn | to_char | cn | vn | to_char +-----+-------------------+----+----+------------------- + 100 | .0000000 | 2 | 40 | .0000000 + 200 | .0000000 | 1 | 10 | .0000000 + 200 | .0000000 | 3 | 40 | .0000000 + 100 | .0000000 | 1 | 20 | .0000000 + 300 | .0000000 | 1 | 30 | .0000000 + 400 | .0000000 | 1 | 50 | .0000000 + 400 | .0000000 | 2 | 50 | 5.0000000 + 500 | .0000000 | 1 | 30 | 5.0000000 + 500 | .0000000 | 3 | 30 | 1.0000000 + 600 | .0000000 | 3 | 30 | .0000000 + 700 | .0000000 | 4 | 40 | .0000000 + 800 | .0000000 | 4 | 40 | .0000000 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn/ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between current row and 5 following ); -- mvd 2->4; + cn | pn | dt | to_char +----+-----+------------+------------------- + 2 | 100 | 1401-01-01 | .6078307 + 1 | 200 | 1401-03-01 | 1.0000000 + 3 | 200 | 1401-04-01 | .9258201 + 1 | 100 | 1401-05-01 | -.1587768 + 1 | 300 | 1401-05-02 | -.3321819 + 1 | 400 | 1401-06-01 | .4810457 + 2 | 400 | 1401-06-01 | .6670170 + 1 | 500 | 1401-06-01 | .7453560 + 3 | 500 | 1401-06-01 | 1.0000000 + 3 | 600 | 1401-06-01 | 1.0000000 + 4 | 700 | 1401-06-01 | .0000000 + 4 | 800 | 1401-06-01 | .0000000 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn/ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between current row and floor(ow_sale.prc) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between current row and floor(ow_sale.prc) following ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc); -- mvd 6,3->5; 6,3->7; 6->8; 6->9; 6->10; 2,6,3,1->11; + pn | dt | vn | qty | to_char | cn | to_char | to_char | to_char | to_char | to_char +-----+------------+----+------+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 800 | 1401-06-01 | 40 | 1 | .0000000 | 4 | 40.0000000 | .1666667 | .0000000 | 2.0000000 | .0000000 + 700 | 1401-06-01 | 40 | 1 | .0000000 | 4 | 40.0000000 | .1666667 | .0000000 | 2.0000000 | .0000000 + 500 | 1401-06-01 | 30 | 12 | -1.0000000 | 3 | 40.0000000 | .4166667 | .1818182 | 5.0000000 | .0000000 + 200 | 1401-04-01 | 40 | 1 | .0000000 | 3 | 40.0000000 | .4166667 | .1818182 | 5.0000000 | 80.0000000 + 600 | 1401-06-01 | 30 | 12 | -1.0000000 | 3 | 40.0000000 | .4166667 | .1818182 | 5.0000000 | .0000000 + 400 | 1401-06-01 | 50 | 1 | .0000000 | 2 | 50.0000000 | .5833333 | .4545455 | 7.0000000 | 100.0000000 + 100 | 1401-01-01 | 40 | 1100 | -.3061264 | 2 | 50.0000000 | .5833333 | .4545455 | 7.0000000 | .0000000 + 500 | 1401-06-01 | 30 | 12 | -1.0000000 | 1 | 40.0000000 | 1.0000000 | .6363636 | 12.0000000 | .0000000 + 400 | 1401-06-01 | 50 | 1 | .0000000 | 1 | 50.0000000 | 1.0000000 | .6363636 | 12.0000000 | 100.0000000 + 300 | 1401-05-02 | 30 | 1 | .0000000 | 1 | 30.0000000 | 1.0000000 | .6363636 | 12.0000000 | 60.0000000 + 100 | 1401-05-01 | 20 | 1 | .0000000 | 1 | 20.0000000 | 1.0000000 | .6363636 | 12.0000000 | 40.0000000 + 200 | 1401-03-01 | 10 | 1 | .0000000 | 1 | 10.0000000 | 1.0000000 | .6363636 | 12.0000000 | 20.0000000 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc rows between current row and unbounded following ); -- mvd 5->4; + prc | qty | prc | to_char | cn +------+------+------+-------------------+---- + 2400 | 1100 | 2400 | .3379763 | 2 + 0 | 1 | 0 | .3496260 | 1 + 0 | 1 | 0 | .2021499 | 3 + 0 | 1 | 0 | .1789176 | 1 + 0 | 1 | 0 | -.0309344 | 1 + 0 | 1 | 0 | -.2079726 | 1 + 0 | 1 | 0 | .1396861 | 2 + 5 | 12 | 5 | .7453560 | 1 + 5 | 12 | 5 | 1.0000000 | 3 + 5 | 12 | 5 | 1.0000000 | 3 + 1 | 1 | 1 | .0000000 | 4 + 1 | 1 | 1 | .0000000 | 4 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and unbounded following ), +win2 as (partition by ow_sale.pn order by ow_sale.pn asc); -- mvd 3->2; 3->4; + qty | to_char | pn | to_char +------+-------------------+-----+------------------- + 1100 | -.4070069 | 100 | 1.0000000 + 1 | .3103305 | 200 | 1.0000000 + 1 | .2646281 | 200 | 1.0000000 + 1 | .1976424 | 100 | 1.0000000 + 1 | .0413449 | 300 | 1.0000000 + 1 | -.1473139 | 400 | 1.0000000 + 1 | -.3721042 | 400 | 1.0000000 + 12 | -.9101821 | 500 | 1.0000000 + 12 | -.8944272 | 500 | 1.0000000 + 12 | -.8660254 | 600 | 1.0000000 + 1 | .0000000 | 700 | 1.0000000 + 1 | .0000000 | 800 | 1.0000000 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between floor(ow_sale.pn) following and floor(ow_sale.pn+ow_sale.vn) following ); -- mvd 3,4->2; + pn | to_char | cn | vn +-----+-------------------+----+---- + 100 | .0000000 | 2 | 40 + 200 | .0000000 | 1 | 10 + 200 | .0000000 | 3 | 40 + 100 | .0000000 | 1 | 20 + 300 | .0000000 | 1 | 30 + 400 | .0000000 | 1 | 50 + 400 | .0000000 | 2 | 50 + 500 | .0000000 | 1 | 30 + 500 | .0000000 | 3 | 30 + 600 | .0000000 | 3 | 30 + 700 | .0000000 | 4 | 40 + 800 | .0000000 | 4 | 40 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc),floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between 2 following and floor(ow_sale.prc*ow_sale.vn) following ), +win2 as (partition by ow_sale.cn order by ow_sale.cn desc), +win3 as (order by ow_sale.cn asc), +win4 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.vn desc); -- mvd 2,1->6; 2->7; 2,1->8; 2->9; 2->10; 12,2,1->11; + vn | cn | pn | cn | prc | to_char | to_char | to_char | to_char | to_char | to_char | dt +----+----+-----+----+------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+------------ + 50 | 1 | 400 | 1 | 0 | .0000000 | 1.0000000 | .0000000 | -80.0000000 | .0000000 | 1.0000000 | 1401-06-01 + 10 | 1 | 200 | 1 | 0 | .0000000 | 1.0000000 | .0000000 | -80.0000000 | .0000000 | 1.0000000 | 1401-03-01 + 30 | 1 | 500 | 1 | 5 | -1.0000000 | 1.0000000 | 40.0000000 | -80.0000000 | .0000000 | 2.0000000 | 1401-06-01 + 20 | 1 | 100 | 1 | 0 | .0000000 | 1.0000000 | .0000000 | -80.0000000 | .0000000 | 1.0000000 | 1401-05-01 + 30 | 1 | 300 | 1 | 0 | .0000000 | 1.0000000 | .0000000 | -80.0000000 | .0000000 | 1.0000000 | 1401-05-02 + 40 | 2 | 100 | 2 | 2400 | -.0694437 | 1.0000000 | 50.0000000 | -60.0000000 | .4545455 | 1.0000000 | 1401-01-01 + 50 | 2 | 400 | 2 | 0 | .0000000 | 1.0000000 | .0000000 | -60.0000000 | .4545455 | 1.0000000 | 1401-06-01 + 40 | 3 | 200 | 3 | 0 | .0000000 | 1.0000000 | .0000000 | -160.0000000 | .6363636 | 1.0000000 | 1401-04-01 + 30 | 3 | 500 | 3 | 5 | .0000000 | 1.0000000 | 40.0000000 | -160.0000000 | .6363636 | 1.0000000 | 1401-06-01 + 30 | 3 | 600 | 3 | 5 | .0000000 | 1.0000000 | 40.0000000 | -160.0000000 | .6363636 | 1.0000000 | 1401-06-01 + 40 | 4 | 700 | 4 | 1 | .0000000 | 1.0000000 | .0000000 | -660.0000000 | .9090909 | 1.0000000 | 1401-06-01 + 40 | 4 | 800 | 4 | 1 | .0000000 | 1.0000000 | .0000000 | -660.0000000 | .9090909 | 1.0000000 | 1401-06-01 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn-ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.pn asc rows between 0 following and unbounded following ); -- mvd 1->4; + pn | pn | qty | to_char +-----+-----+------+------------------- + 100 | 100 | 1100 | .0462311 + 200 | 200 | 1 | .4195577 + 200 | 200 | 1 | .2768211 + 100 | 100 | 1 | .3699225 + 300 | 300 | 1 | -.0244019 + 400 | 400 | 1 | -.2612140 + 400 | 400 | 1 | -.0185639 + 500 | 500 | 12 | .9176353 + 500 | 500 | 12 | .9036506 + 600 | 600 | 12 | .8806760 + 700 | 700 | 1 | .0000000 + 800 | 800 | 1 | .0000000 +(12 rows) + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty-ow_sale.qty),floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn/ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between floor(ow_sale.prc) following and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc); -- mvd 3->2; 5,3,6,1->4; 5,3,6,1->7; 5,9,6,1->8; 5,3,6,1->10; + pn | to_char | cn | to_char | prc | vn | to_char | to_char | dt | to_char +-----+-------------------+----+-------------------+------+----+-------------------+-------------------+------------+------------------- + 100 | .0000000 | 2 | 1.0000000 | 2400 | 40 | 1.0000000 | .0000000 | 1401-01-01 | .0000000 + 200 | .0000000 | 1 | 1.0000000 | 0 | 10 | 1.0000000 | 20.0000000 | 1401-03-01 | .0000000 + 200 | .0000000 | 3 | 1.0000000 | 0 | 40 | 1.0000000 | 5.0000000 | 1401-04-01 | .0000000 + 100 | .0000000 | 1 | 1.0000000 | 0 | 20 | 1.0000000 | 5.0000000 | 1401-05-01 | .0000000 + 300 | .0000000 | 1 | 1.0000000 | 0 | 30 | 1.0000000 | 10.0000000 | 1401-05-02 | .0000000 + 400 | .0000000 | 1 | 1.0000000 | 0 | 50 | 1.0000000 | 8.0000000 | 1401-06-01 | .0000000 + 400 | .0000000 | 2 | 1.0000000 | 0 | 50 | 1.0000000 | 8.0000000 | 1401-06-01 | .0000000 + 500 | .0000000 | 1 | 1.0000000 | 5 | 30 | 1.0000000 | .0000000 | 1401-06-01 | .0000000 + 500 | .0000000 | 3 | 2.0000000 | 5 | 30 | 2.0000000 | .0000000 | 1401-06-01 | 1.0000000 + 600 | .0000000 | 3 | 1.0000000 | 5 | 30 | 1.0000000 | .0000000 | 1401-06-01 | .0000000 + 700 | .0000000 | 4 | 2.0000000 | 1 | 40 | 2.0000000 | .0000000 | 1401-06-01 | 1.0000000 + 800 | .0000000 | 4 | 1.0000000 | 1 | 40 | 1.0000000 | .0000000 | 1401-06-01 | .0000000 +(12 rows) + +-- CORR() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn asc,ow_sale.cn asc,ow_sale.cn asc); -- mvd 4,5->3; + qty | dt | to_char | cn | vn +------+------------+-------------------+----+---- + 1 | 1401-03-01 | .0000000 | 1 | 10 + 1 | 1401-05-01 | .0000000 | 1 | 20 + 1 | 1401-05-02 | .0000000 | 1 | 30 + 12 | 1401-06-01 | .0000000 | 1 | 30 + 12 | 1401-06-01 | .0000000 | 3 | 30 + 12 | 1401-06-01 | .0000000 | 3 | 30 + 1100 | 1401-01-01 | .0000000 | 2 | 40 + 1 | 1401-04-01 | 1.0000000 | 3 | 40 + 1 | 1401-06-01 | 1.0000000 | 4 | 40 + 1 | 1401-06-01 | 1.0000000 | 4 | 40 + 1 | 1401-06-01 | .0000000 | 1 | 50 + 1 | 1401-06-01 | .0000000 | 2 | 50 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty*ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn desc range unbounded preceding ); -- mvd 3,4->2; + vn | to_char | cn | pn +----+-------------------+----+----- + 40 | .0000000 | 2 | 100 + 20 | 1.0000000 | 1 | 100 + 40 | .0000000 | 3 | 200 + 10 | .0000000 | 1 | 200 + 30 | .0000000 | 3 | 600 + 40 | .0000000 | 4 | 700 + 30 | .0000000 | 1 | 300 + 50 | .0000000 | 2 | 400 + 50 | .0000000 | 1 | 400 + 30 | .0000000 | 3 | 500 + 30 | .0000000 | 1 | 500 + 40 | .0000000 | 4 | 800 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn),floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.dt order by ow_sale.pn desc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.dt order by ow_sale.pn desc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.cn) as int),cast (floor(ow_sale.vn-ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.dt order by ow_sale.pn desc range unbounded preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.pn desc); -- mvd 4,2,1,6->5; 4,2,1,6->7; 4,2,1,6->8; 4,2,1,6->9; 3->10; 6->11; + vn | qty | cn | dt | to_char | pn | to_char | to_char | to_char | to_char | to_char +----+------+----+------------+-------------------+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 40 | 1100 | 2 | 1401-01-01 | .0000000 | 100 | 1140.0000000 | 2400.0000000 | 100.0000000 | 2398.0000000 | 1.0000000 + 10 | 1 | 1 | 1401-03-01 | .0000000 | 200 | 11.0000000 | .0000000 | 200.0000000 | -1.0000000 | .8333333 + 40 | 1 | 3 | 1401-04-01 | .0000000 | 200 | 41.0000000 | .0000000 | 200.0000000 | -3.0000000 | .8333333 + 20 | 1 | 1 | 1401-05-01 | .0000000 | 100 | 21.0000000 | .0000000 | 100.0000000 | -1.0000000 | 1.0000000 + 30 | 1 | 1 | 1401-05-02 | .0000000 | 300 | 31.0000000 | .0000000 | 300.0000000 | -1.0000000 | .6666667 + 50 | 1 | 1 | 1401-06-01 | .0000000 | 400 | 51.0000000 | .0000000 | 400.0000000 | -1.0000000 | .5833333 + 50 | 1 | 2 | 1401-06-01 | .0000000 | 400 | 51.0000000 | .0000000 | 400.0000000 | -2.0000000 | .5833333 + 30 | 12 | 1 | 1401-06-01 | .5000000 | 500 | 42.0000000 | 5.0000000 | 600.0000000 | 4.0000000 | .4166667 + 30 | 12 | 3 | 1401-06-01 | .5000000 | 500 | 42.0000000 | 5.0000000 | 600.0000000 | 2.0000000 | .4166667 + 30 | 12 | 3 | 1401-06-01 | .0000000 | 600 | 42.0000000 | 5.0000000 | 600.0000000 | 2.0000000 | .2500000 + 40 | 1 | 4 | 1401-06-01 | .0000000 | 700 | 41.0000000 | 1.0000000 | 800.0000000 | -3.0000000 | .1666667 + 40 | 1 | 4 | 1401-06-01 | .0000000 | 800 | 41.0000000 | 1.0000000 | 800.0000000 | -3.0000000 | .0833333 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.cn asc range floor(ow_sale.pn) preceding ); -- mvd 1,7->6; + cn | pn | pn | vn | dt | to_char | qty +----+-----+-----+----+------------+-------------------+------ + 1 | 400 | 400 | 50 | 1401-06-01 | 1.0000000 | 1 + 1 | 200 | 200 | 10 | 1401-03-01 | 1.0000000 | 1 + 1 | 100 | 100 | 20 | 1401-05-01 | 1.0000000 | 1 + 1 | 300 | 300 | 30 | 1401-05-02 | 1.0000000 | 1 + 2 | 400 | 400 | 50 | 1401-06-01 | 1.0000000 | 1 + 3 | 200 | 200 | 40 | 1401-04-01 | 1.0000000 | 1 + 4 | 700 | 700 | 40 | 1401-06-01 | 1.0000000 | 1 + 4 | 800 | 800 | 40 | 1401-06-01 | 1.0000000 | 1 + 1 | 500 | 500 | 30 | 1401-06-01 | .0000000 | 12 + 3 | 600 | 600 | 30 | 1401-06-01 | .0000000 | 12 + 3 | 500 | 500 | 30 | 1401-06-01 | .0000000 | 12 + 2 | 100 | 100 | 40 | 1401-01-01 | .0000000 | 1100 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.prc)) OVER(partition by ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.vn,ow_sale.vn order by ow_sale.vn asc range 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty/ow_sale.cn)) OVER(partition by ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.vn,ow_sale.vn order by ow_sale.vn asc range 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.vn,ow_sale.vn order by ow_sale.vn asc range 2 preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc); -- mvd 6,1,2,7->5; 6,1,2,7->8; 6,1,2,7->9; 6,1,2,7->10; 2->11; 3,1,13->12; + dt | vn | cn | vn | to_char | prc | qty | to_char | to_char | to_char | to_char | to_char | pn +------------+----+----+----+-------------------+------+------+-------------------+-------------------+-------------------+-------------------+-------------------+----- + 1401-06-01 | 50 | 1 | 50 | .0000000 | 0 | 1 | 2.0000000 | 2.0000000 | 2.0000000 | 1.0000000 | .0000000 | 400 + 1401-06-01 | 50 | 2 | 50 | .0000000 | 0 | 1 | 2.0000000 | 2.0000000 | 2.0000000 | 1.0000000 | .0000000 | 400 + 1401-01-01 | 40 | 2 | 40 | .0000000 | 2400 | 1100 | 2402.0000000 | 1.0000000 | 1.0000000 | 3.0000000 | .0000000 | 100 + 1401-06-01 | 40 | 4 | 40 | .0000000 | 1 | 1 | 5.0000000 | 2.0000000 | 2.0000000 | 3.0000000 | .0000000 | 800 + 1401-06-01 | 40 | 4 | 40 | .0000000 | 1 | 1 | 5.0000000 | 2.0000000 | 2.0000000 | 3.0000000 | .0000000 | 700 + 1401-04-01 | 40 | 3 | 40 | .0000000 | 0 | 1 | 3.0000000 | 1.0000000 | 1.0000000 | 3.0000000 | .0000000 | 200 + 1401-06-01 | 30 | 3 | 30 | .0000000 | 5 | 12 | 8.0000000 | 3.0000000 | 3.0000000 | 7.0000000 | .0000000 | 600 + 1401-06-01 | 30 | 3 | 30 | .0000000 | 5 | 12 | 8.0000000 | 3.0000000 | 3.0000000 | 7.0000000 | .0000000 | 500 + 1401-06-01 | 30 | 1 | 30 | .0000000 | 5 | 12 | 8.0000000 | 3.0000000 | 3.0000000 | 7.0000000 | .0000000 | 500 + 1401-05-02 | 30 | 1 | 30 | .0000000 | 0 | 1 | 1.0000000 | 1.0000000 | 1.0000000 | 7.0000000 | .0000000 | 300 + 1401-05-01 | 20 | 1 | 20 | .0000000 | 0 | 1 | 1.0000000 | 1.0000000 | 1.0000000 | 11.0000000 | .0000000 | 100 + 1401-03-01 | 10 | 1 | 10 | .0000000 | 0 | 1 | 1.0000000 | 1.0000000 | 1.0000000 | 12.0000000 | .0000000 | 200 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn asc range current row ); -- mvd 1,3->4; + cn | cn | pn | to_char +----+----+-----+------------------- + 1 | 1 | 100 | .0000000 + 2 | 2 | 100 | .0000000 + 1 | 1 | 200 | .0000000 + 3 | 3 | 200 | .0000000 + 3 | 3 | 600 | .0000000 + 4 | 4 | 700 | .0000000 + 1 | 1 | 300 | .0000000 + 1 | 1 | 400 | .0000000 + 2 | 2 | 400 | .0000000 + 1 | 1 | 500 | .0000000 + 3 | 3 | 500 | .0000000 + 4 | 4 | 800 | .0000000 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty*ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.pn desc range current row ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.pn asc); -- mvd 5,2,7->6; 2->8; 5,2,7->9; 3,7->10; + qty | cn | vn | cn | prc | to_char | pn | to_char | to_char | to_char +------+----+----+----+------+-------------------+-----+-------------------+-------------------+------------------- + 1100 | 2 | 40 | 2 | 2400 | .0000000 | 100 | .0000000 | -1098.0000000 | .2500000 + 1 | 1 | 10 | 1 | 0 | .0000000 | 200 | .0000000 | .0000000 | 1.0000000 + 1 | 3 | 40 | 3 | 0 | .0000000 | 200 | .0000000 | 2.0000000 | .5000000 + 1 | 1 | 20 | 1 | 0 | .0000000 | 100 | .0000000 | .0000000 | 1.0000000 + 1 | 1 | 30 | 1 | 0 | .0000000 | 300 | .0000000 | .0000000 | .2500000 + 1 | 1 | 50 | 1 | 0 | .0000000 | 400 | .0000000 | .0000000 | 1.0000000 + 1 | 2 | 50 | 2 | 0 | .0000000 | 400 | .0000000 | 1.0000000 | 1.0000000 + 12 | 1 | 30 | 1 | 5 | .0000000 | 500 | .0000000 | -11.0000000 | .7500000 + 12 | 3 | 30 | 3 | 5 | .0000000 | 500 | .0000000 | -9.0000000 | .7500000 + 12 | 3 | 30 | 3 | 5 | .0000000 | 600 | .0000000 | -9.0000000 | 1.0000000 + 1 | 4 | 40 | 4 | 1 | .0000000 | 700 | .0000000 | 3.0000000 | .7500000 + 1 | 4 | 40 | 4 | 1 | .0000000 | 800 | .0000000 | 3.0000000 | 1.0000000 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc-ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn desc range between unbounded preceding and 0 preceding ); -- mvd 3->2; + qty | to_char | vn +------+-------------------+---- + 1 | .0000000 | 10 + 1 | .0000000 | 20 + 1 | .0000000 | 30 + 12 | .0000000 | 30 + 12 | .0000000 | 30 + 12 | .0000000 | 30 + 1 | .0000000 | 40 + 1 | .0000000 | 40 + 1 | .0000000 | 40 + 1100 | .0000000 | 40 + 1 | .0000000 | 50 + 1 | .0000000 | 50 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc-ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.dt order by ow_sale.cn asc range between unbounded preceding and 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.cn asc range between unbounded preceding and 2 preceding ), +win2 as (order by ow_sale.pn asc); -- mvd 3,1->2; 3,1->4; 6->5; + cn | to_char | dt | to_char | to_char | pn +----+-------------------+------------+-------------------+-------------------+----- + 1 | .0000000 | 1401-05-01 | .0000000 | 1.0000000 | 100 + 2 | .0000000 | 1401-01-01 | .0000000 | 1.0000000 | 100 + 1 | .0000000 | 1401-03-01 | .0000000 | 3.0000000 | 200 + 3 | .0000000 | 1401-04-01 | .0000000 | 3.0000000 | 200 + 1 | .0000000 | 1401-05-02 | .0000000 | 5.0000000 | 300 + 1 | .0000000 | 1401-06-01 | .0000000 | 6.0000000 | 400 + 2 | .0000000 | 1401-06-01 | .0000000 | 6.0000000 | 400 + 1 | .0000000 | 1401-06-01 | .0000000 | 8.0000000 | 500 + 3 | .0000000 | 1401-06-01 | .0000000 | 8.0000000 | 500 + 3 | .0000000 | 1401-06-01 | .0000000 | 10.0000000 | 600 + 4 | .0000000 | 1401-06-01 | .0000000 | 11.0000000 | 700 + 4 | .0000000 | 1401-06-01 | .0000000 | 12.0000000 | 800 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.vn order by ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 1,5,2,6->4; + cn | vn | vn | to_char | dt | qty +----+----+----+-------------------+------------+------ + 3 | 40 | 40 | .0000000 | 1401-04-01 | 1 + 1 | 20 | 20 | .0000000 | 1401-05-01 | 1 + 3 | 30 | 30 | .0000000 | 1401-06-01 | 12 + 3 | 30 | 30 | .0000000 | 1401-06-01 | 12 + 1 | 30 | 30 | .0000000 | 1401-06-01 | 12 + 2 | 40 | 40 | .0000000 | 1401-01-01 | 1100 + 1 | 10 | 10 | .0000000 | 1401-03-01 | 1 + 1 | 30 | 30 | .0000000 | 1401-05-02 | 1 + 4 | 40 | 40 | .0000000 | 1401-06-01 | 1 + 4 | 40 | 40 | .0000000 | 1401-06-01 | 1 + 2 | 50 | 50 | .0000000 | 1401-06-01 | 1 + 1 | 50 | 50 | .0000000 | 1401-06-01 | 1 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn+ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.pn) as int),cast (floor(ow_sale.cn/ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn*ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.pn order by ow_sale.pn asc range between unbounded preceding and current row ), +win2 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.vn asc), +win4 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 6,2,7->5; 9,3->8; 1->10; 1->11; + vn | qty | dt | vn | to_char | prc | pn | to_char | cn | to_char | to_char +----+------+------------+----+-------------------+------+-----+-------------------+----+-------------------+------------------- + 40 | 1100 | 1401-01-01 | 40 | .0000000 | 2400 | 100 | 1.0000000 | 2 | -98.0000000 | .0000000 + 10 | 1 | 1401-03-01 | 10 | .0000000 | 0 | 200 | 1.0000000 | 1 | -199.0000000 | .0000000 + 40 | 1 | 1401-04-01 | 40 | .0000000 | 0 | 200 | 1.0000000 | 3 | -197.0000000 | .0000000 + 20 | 1 | 1401-05-01 | 20 | .0000000 | 0 | 100 | 1.0000000 | 1 | -99.0000000 | .0000000 + 30 | 1 | 1401-05-02 | 30 | .0000000 | 0 | 300 | 1.0000000 | 1 | -299.0000000 | .0000000 + 50 | 1 | 1401-06-01 | 50 | .0000000 | 0 | 400 | 1.0000000 | 1 | -399.0000000 | .0000000 + 50 | 1 | 1401-06-01 | 50 | .0000000 | 0 | 400 | 2.0000000 | 2 | -398.0000000 | .0000000 + 30 | 12 | 1401-06-01 | 30 | .0000000 | 5 | 500 | 1.0000000 | 1 | -499.0000000 | .0000000 + 30 | 12 | 1401-06-01 | 30 | .0000000 | 5 | 500 | 3.0000000 | 3 | -497.0000000 | .0000000 + 30 | 12 | 1401-06-01 | 30 | .0000000 | 5 | 600 | 3.0000000 | 3 | -597.0000000 | .0000000 + 40 | 1 | 1401-06-01 | 40 | .0000000 | 1 | 700 | 4.0000000 | 4 | -696.0000000 | .0000000 + 40 | 1 | 1401-06-01 | 40 | .0000000 | 1 | 800 | 4.0000000 | 4 | -796.0000000 | .0000000 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.prc*ow_sale.cn) following ); -- mvd 8,2,1->7; + pn | cn | qty | qty | pn | qty | to_char | prc +-----+----+------+------+-----+------+-------------------+------ + 300 | 1 | 1 | 1 | 300 | 1 | .0000000 | 0 + 400 | 2 | 1 | 1 | 400 | 1 | .0000000 | 0 + 400 | 1 | 1 | 1 | 400 | 1 | .0000000 | 0 + 500 | 3 | 12 | 12 | 500 | 12 | .0000000 | 5 + 500 | 1 | 12 | 12 | 500 | 12 | .0000000 | 5 + 700 | 4 | 1 | 1 | 700 | 1 | .0000000 | 1 + 100 | 1 | 1 | 1 | 100 | 1 | .0000000 | 0 + 100 | 2 | 1100 | 1100 | 100 | 1100 | .0000000 | 2400 + 200 | 3 | 1 | 1 | 200 | 1 | .0000000 | 0 + 200 | 1 | 1 | 1 | 200 | 1 | .0000000 | 0 + 600 | 3 | 12 | 12 | 600 | 12 | .0000000 | 5 + 800 | 4 | 1 | 1 | 800 | 1 | .0000000 | 1 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn/ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc range between unbounded preceding and 1 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty/ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc range between unbounded preceding and 1 following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc); -- mvd 2,4,1->3; 2,4,1->5; 2->6; 2,4,8,1->7; + pn | cn | to_char | dt | to_char | to_char | to_char | qty +-----+----+-------------------+------------+-------------------+-------------------+-------------------+------ + 200 | 1 | .0000000 | 1401-03-01 | .0000000 | 1.0000000 | .0000000 | 1 + 100 | 1 | .0000000 | 1401-05-01 | .0000000 | 2.0000000 | .0000000 | 1 + 400 | 1 | .0000000 | 1401-06-01 | .0000000 | 3.0000000 | .0000000 | 1 + 500 | 1 | .0000000 | 1401-06-01 | .0000000 | 4.0000000 | .0000000 | 12 + 300 | 1 | .0000000 | 1401-05-02 | .0000000 | 5.0000000 | .0000000 | 1 + 100 | 2 | .0000000 | 1401-01-01 | .0000000 | 6.0000000 | .0000000 | 1100 + 400 | 2 | .0000000 | 1401-06-01 | .0000000 | 7.0000000 | 2.0000000 | 1 + 500 | 3 | .0000000 | 1401-06-01 | .0000000 | 8.0000000 | .0000000 | 12 + 200 | 3 | .0000000 | 1401-04-01 | .0000000 | 9.0000000 | 3.0000000 | 1 + 600 | 3 | .0000000 | 1401-06-01 | .0000000 | 10.0000000 | .0000000 | 12 + 700 | 4 | .0000000 | 1401-06-01 | .0000000 | 11.0000000 | 4.0000000 | 1 + 800 | 4 | .0000000 | 1401-06-01 | .0000000 | 12.0000000 | 4.0000000 | 1 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn desc range between unbounded preceding and unbounded following ); -- mvd 3,4->2; + qty | to_char | dt | vn +------+-------------------+------------+---- + 1 | .0000000 | 1401-03-01 | 10 + 1 | .0000000 | 1401-05-02 | 30 + 1 | -.1750350 | 1401-06-01 | 50 + 1 | -.1750350 | 1401-06-01 | 50 + 1 | -.1750350 | 1401-06-01 | 40 + 1 | -.1750350 | 1401-06-01 | 40 + 12 | -.1750350 | 1401-06-01 | 30 + 12 | -.1750350 | 1401-06-01 | 30 + 12 | -.1750350 | 1401-06-01 | 30 + 1100 | .0000000 | 1401-01-01 | 40 + 1 | .0000000 | 1401-04-01 | 40 + 1 | .0000000 | 1401-05-01 | 20 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.prc order by ow_sale.vn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.pn order by ow_sale.pn asc), +win3 as (order by ow_sale.cn asc); -- mvd 3,4,1->2; 6->5; 6->7; 9->8; + qty | to_char | prc | vn | to_char | pn | to_char | to_char | cn +------+-------------------+------+----+-------------------+-----+-------------------+-------------------+---- + 1 | .0000000 | 0 | 10 | 1.0000000 | 200 | 1.0000000 | 1.0000000 | 1 + 1 | .0000000 | 0 | 20 | 1.0000000 | 100 | 1.0000000 | 2.0000000 | 1 + 1 | .0000000 | 0 | 30 | 1.0000000 | 300 | 1.0000000 | 3.0000000 | 1 + 1 | .0000000 | 0 | 50 | 2.0000000 | 400 | 1.0000000 | 4.0000000 | 1 + 12 | .0000000 | 5 | 30 | 1.0000000 | 500 | 1.0000000 | 5.0000000 | 1 + 1100 | .0000000 | 2400 | 40 | 2.0000000 | 100 | 1.0000000 | 6.0000000 | 2 + 1 | .0000000 | 0 | 50 | 1.0000000 | 400 | 1.0000000 | 7.0000000 | 2 + 1 | .0000000 | 0 | 40 | 2.0000000 | 200 | 1.0000000 | 8.0000000 | 3 + 12 | .0000000 | 5 | 30 | 2.0000000 | 500 | 1.0000000 | 9.0000000 | 3 + 12 | .0000000 | 5 | 30 | 1.0000000 | 600 | 1.0000000 | 10.0000000 | 3 + 1 | .0000000 | 1 | 40 | 1.0000000 | 800 | 1.0000000 | 11.0000000 | 4 + 1 | .0000000 | 1 | 40 | 1.0000000 | 700 | 1.0000000 | 12.0000000 | 4 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.dt order by ow_sale.pn desc range between floor(ow_sale.qty/ow_sale.vn) preceding and floor(ow_sale.vn) preceding ); -- mvd 5,2,7->6; + cn | vn | cn | vn | dt | to_char | pn +----+----+----+----+------------+-------------------+----- + 1 | 10 | 1 | 10 | 1401-03-01 | .0000000 | 200 + 1 | 30 | 1 | 30 | 1401-05-02 | .0000000 | 300 + 3 | 30 | 3 | 30 | 1401-06-01 | .0000000 | 600 + 3 | 30 | 3 | 30 | 1401-06-01 | .0000000 | 500 + 1 | 30 | 1 | 30 | 1401-06-01 | .0000000 | 500 + 4 | 40 | 4 | 40 | 1401-06-01 | .0000000 | 800 + 4 | 40 | 4 | 40 | 1401-06-01 | .0000000 | 700 + 1 | 50 | 1 | 50 | 1401-06-01 | .0000000 | 400 + 2 | 50 | 2 | 50 | 1401-06-01 | .0000000 | 400 + 1 | 20 | 1 | 20 | 1401-05-01 | .0000000 | 100 + 2 | 40 | 2 | 40 | 1401-01-01 | .0000000 | 100 + 3 | 40 | 3 | 40 | 1401-04-01 | .0000000 | 200 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn),floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.prc,ow_sale.cn order by ow_sale.cn asc range between 4 preceding and 0 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.cn order by ow_sale.cn asc range between 4 preceding and 0 preceding ); -- mvd 3,4,5->2; 3,4,5->6; + dt | to_char | prc | cn | vn | to_char +------------+-------------------+------+----+----+------------------- + 1401-03-01 | .0000000 | 0 | 1 | 10 | .0000000 + 1401-05-01 | .0000000 | 0 | 1 | 20 | .0000000 + 1401-05-02 | .0000000 | 0 | 1 | 30 | .0000000 + 1401-06-01 | .0000000 | 5 | 1 | 30 | .0000000 + 1401-06-01 | .0000000 | 5 | 3 | 30 | .0000000 + 1401-06-01 | .0000000 | 5 | 3 | 30 | .0000000 + 1401-04-01 | .0000000 | 0 | 3 | 40 | .0000000 + 1401-06-01 | .0000000 | 1 | 4 | 40 | .0000000 + 1401-06-01 | .0000000 | 1 | 4 | 40 | .0000000 + 1401-06-01 | .0000000 | 0 | 1 | 50 | .0000000 + 1401-01-01 | .0000000 | 2400 | 2 | 40 | .0000000 + 1401-06-01 | .0000000 | 0 | 2 | 50 | .0000000 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn*ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.vn desc range between 2 preceding and current row ); -- mvd 7,4,1->6; + pn | pn | qty | vn | prc | to_char | cn +-----+-----+------+----+------+-------------------+---- + 200 | 200 | 1 | 10 | 0 | .0000000 | 1 + 100 | 100 | 1 | 20 | 0 | .0000000 | 1 + 600 | 600 | 12 | 30 | 5 | .0000000 | 3 + 200 | 200 | 1 | 40 | 0 | .0000000 | 3 + 800 | 800 | 1 | 40 | 1 | .0000000 | 4 + 400 | 400 | 1 | 50 | 0 | .0000000 | 2 + 300 | 300 | 1 | 30 | 0 | .0000000 | 1 + 500 | 500 | 12 | 30 | 5 | .0000000 | 1 + 500 | 500 | 12 | 30 | 5 | .0000000 | 3 + 100 | 100 | 1100 | 40 | 2400 | .0000000 | 2 + 700 | 700 | 1 | 40 | 1 | .0000000 | 4 + 400 | 400 | 1 | 50 | 0 | .0000000 | 1 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty-ow_sale.pn),floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.qty)) OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn/ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.pn desc range between 4 preceding and current row ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc); -- mvd 7,2,8,1,9->6; 1->10; 1->11; 7,2,9->12; + vn | cn | vn | vn | cn | to_char | prc | dt | pn | to_char | to_char | to_char +----+----+----+----+----+-------------------+------+------------+-----+-------------------+-------------------+------------------- + 50 | 2 | 50 | 50 | 2 | .0000000 | 0 | 1401-06-01 | 400 | 1.0000000 | .0000000 | .0000000 + 50 | 1 | 50 | 50 | 1 | .0000000 | 0 | 1401-06-01 | 400 | 2.0000000 | .0000000 | .0000000 + 40 | 2 | 40 | 40 | 2 | .0000000 | 2400 | 1401-01-01 | 100 | 3.0000000 | -1098.0000000 | .0000000 + 40 | 4 | 40 | 40 | 4 | .0000000 | 1 | 1401-06-01 | 800 | 4.0000000 | -1098.0000000 | .0000000 + 40 | 4 | 40 | 40 | 4 | .0000000 | 1 | 1401-06-01 | 700 | 5.0000000 | -1098.0000000 | .0000000 + 40 | 3 | 40 | 40 | 3 | .0000000 | 0 | 1401-04-01 | 200 | 6.0000000 | -1098.0000000 | .0000000 + 30 | 1 | 30 | 30 | 1 | .0000000 | 5 | 1401-06-01 | 500 | 7.0000000 | -1098.0000000 | .0000000 + 30 | 3 | 30 | 30 | 3 | .0000000 | 5 | 1401-06-01 | 600 | 8.0000000 | -1098.0000000 | .0000000 + 30 | 1 | 30 | 30 | 1 | .0000000 | 0 | 1401-05-02 | 300 | 9.0000000 | -1098.0000000 | .0000000 + 30 | 3 | 30 | 30 | 3 | .0000000 | 5 | 1401-06-01 | 500 | 10.0000000 | -1098.0000000 | .0000000 + 20 | 1 | 20 | 20 | 1 | .0000000 | 0 | 1401-05-01 | 100 | 11.0000000 | -1098.0000000 | .0000000 + 10 | 1 | 10 | 10 | 1 | .0000000 | 0 | 1401-03-01 | 200 | 12.0000000 | -1098.0000000 | .0000000 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.qty order by ow_sale.pn desc range between floor(ow_sale.vn) preceding and 3 following ), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.cn asc); -- mvd 3,4,5,1->2; 3,1->6; + pn | to_char | cn | qty | vn | to_char +-----+-------------------+----+------+----+------------------- + 100 | .0000000 | 1 | 1 | 20 | 1.0000000 + 200 | .0000000 | 1 | 1 | 10 | 1.0000000 + 200 | .0000000 | 3 | 1 | 40 | 1.0000000 + 400 | .0000000 | 2 | 1 | 50 | 1.0000000 + 600 | .0000000 | 3 | 12 | 30 | 1.0000000 + 800 | .0000000 | 4 | 1 | 40 | 1.0000000 + 100 | .0000000 | 2 | 1100 | 40 | 1.0000000 + 300 | .0000000 | 1 | 1 | 30 | 1.0000000 + 400 | .0000000 | 1 | 1 | 50 | 1.0000000 + 500 | .0000000 | 1 | 12 | 30 | 1.0000000 + 500 | .0000000 | 3 | 12 | 30 | 1.0000000 + 700 | .0000000 | 4 | 1 | 40 | 1.0000000 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty+ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.pn desc range between 3 preceding and unbounded following ); -- mvd 6,3->5; + cn | cn | pn | pn | to_char | prc +----+----+-----+-----+-------------------+------ + 1 | 1 | 300 | 300 | .0000000 | 0 + 2 | 2 | 400 | 400 | .0000000 | 0 + 1 | 1 | 400 | 400 | .0000000 | 0 + 4 | 4 | 700 | 700 | .0000000 | 1 + 1 | 1 | 500 | 500 | .0000000 | 5 + 3 | 3 | 500 | 500 | .0000000 | 5 + 1 | 1 | 100 | 100 | .0000000 | 0 + 1 | 1 | 200 | 200 | .0000000 | 0 + 3 | 3 | 200 | 200 | .0000000 | 0 + 4 | 4 | 800 | 800 | .0000000 | 1 + 3 | 3 | 600 | 600 | .0000000 | 5 + 2 | 2 | 100 | 100 | .0000000 | 2400 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc),floor(ow_sale.prc/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn asc range between current row and current row ); -- mvd 6,2->5; + qty | dt | prc | dt | to_char | cn +------+------------+------+------------+-------------------+---- + 1100 | 1401-01-01 | 2400 | 1401-01-01 | .0000000 | 2 + 1 | 1401-04-01 | 0 | 1401-04-01 | .0000000 | 3 + 1 | 1401-05-01 | 0 | 1401-05-01 | .0000000 | 1 + 1 | 1401-03-01 | 0 | 1401-03-01 | .0000000 | 1 + 1 | 1401-05-02 | 0 | 1401-05-02 | .0000000 | 1 + 12 | 1401-06-01 | 5 | 1401-06-01 | 1.0000000 | 1 + 1 | 1401-06-01 | 0 | 1401-06-01 | 1.0000000 | 1 + 1 | 1401-06-01 | 0 | 1401-06-01 | .0000000 | 2 + 12 | 1401-06-01 | 5 | 1401-06-01 | .0000000 | 3 + 12 | 1401-06-01 | 5 | 1401-06-01 | .0000000 | 3 + 1 | 1401-06-01 | 1 | 1401-06-01 | .0000000 | 4 + 1 | 1401-06-01 | 1 | 1401-06-01 | .0000000 | 4 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.cn desc range between current row and floor(ow_sale.vn) following ); -- mvd 3,4->2; + dt | to_char | cn | qty +------------+-------------------+----+------ + 1401-06-01 | .0000000 | 4 | 1 + 1401-06-01 | .0000000 | 4 | 1 + 1401-04-01 | .0000000 | 3 | 1 + 1401-06-01 | .0000000 | 2 | 1 + 1401-03-01 | .0000000 | 1 | 1 + 1401-05-02 | .0000000 | 1 | 1 + 1401-06-01 | .0000000 | 1 | 1 + 1401-05-01 | .0000000 | 1 | 1 + 1401-06-01 | .0000000 | 3 | 12 + 1401-06-01 | .0000000 | 3 | 12 + 1401-06-01 | .0000000 | 1 | 12 + 1401-01-01 | .0000000 | 2 | 1100 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty+ow_sale.prc),floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.cn order by ow_sale.cn asc range between current row and 3 following ), +win2 as (partition by ow_sale.vn order by ow_sale.pn asc), +win3 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.cn desc); -- mvd 2,1,4->3; 4,6->5; 2,4->7; + qty | cn | to_char | vn | to_char | pn | to_char +------+----+-------------------+----+-------------------+-----+------------------- + 1 | 1 | .0000000 | 10 | .0000000 | 200 | 1.0000000 + 1 | 1 | .0000000 | 20 | .0000000 | 100 | 1.0000000 + 1 | 1 | .0000000 | 30 | .0000000 | 300 | 2.0000000 + 12 | 3 | .0000000 | 30 | .3333333 | 500 | 2.0000000 + 12 | 1 | .0000000 | 30 | .3333333 | 500 | 1.0000000 + 12 | 3 | .0000000 | 30 | 1.0000000 | 600 | 1.0000000 + 1100 | 2 | .0000000 | 40 | .0000000 | 100 | 1.0000000 + 1 | 3 | .0000000 | 40 | .3333333 | 200 | 1.0000000 + 1 | 4 | .0000000 | 40 | .6666667 | 700 | 2.0000000 + 1 | 4 | .0000000 | 40 | 1.0000000 | 800 | 1.0000000 + 1 | 1 | .0000000 | 50 | .0000000 | 400 | 1.0000000 + 1 | 2 | .0000000 | 50 | .0000000 | 400 | 1.0000000 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.cn asc range between current row and unbounded following ); -- mvd 1,3,2->4; + cn | pn | vn | to_char +----+-----+----+------------------- + 1 | 200 | 10 | .0000000 + 1 | 100 | 20 | .0000000 + 3 | 600 | 30 | .0000000 + 3 | 200 | 40 | .0000000 + 4 | 800 | 40 | .0000000 + 2 | 400 | 50 | .0000000 + 1 | 300 | 30 | .0000000 + 1 | 500 | 30 | .0000000 + 3 | 500 | 30 | .0000000 + 2 | 100 | 40 | .0000000 + 4 | 700 | 40 | .0000000 + 1 | 400 | 50 | .0000000 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.pn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(partition by ow_sale.dt order by ow_sale.cn desc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn desc range between current row and unbounded following ), +win2 as (partition by ow_sale.cn order by ow_sale.vn asc); -- mvd 3,5->4; 3,5->6; 3,2->7; + qty | vn | cn | to_char | dt | to_char | to_char +------+----+----+-------------------+------------+-------------------+------------------- + 1 | 10 | 1 | .0000000 | 1401-03-01 | 1.0000000 | 1.0000000 + 1 | 30 | 1 | .0000000 | 1401-05-02 | 1.0000000 | 3.0000000 + 1 | 40 | 4 | -.4317389 | 1401-06-01 | 1.0000000 | 1.0000000 + 1 | 40 | 4 | -.4317389 | 1401-06-01 | 1.0000000 | 1.0000000 + 12 | 30 | 3 | -.8728716 | 1401-06-01 | 1.0000000 | 1.0000000 + 12 | 30 | 3 | -.8728716 | 1401-06-01 | 1.0000000 | 1.0000000 + 1 | 50 | 2 | -1.0000000 | 1401-06-01 | 1.0000000 | 2.0000000 + 12 | 30 | 1 | -1.0000000 | 1401-06-01 | 1.0000000 | 3.0000000 + 1 | 50 | 1 | -1.0000000 | 1401-06-01 | 1.0000000 | 4.0000000 + 1100 | 40 | 2 | .0000000 | 1401-01-01 | 2.0000000 | 1.0000000 + 1 | 40 | 3 | .0000000 | 1401-04-01 | 3.0000000 | 2.0000000 + 1 | 20 | 1 | .0000000 | 1401-05-01 | 1.0000000 | 2.0000000 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn*ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.cn desc range between floor(ow_sale.prc) following and floor(ow_sale.prc) following ); -- mvd 6,3->5; + vn | prc | pn | qty | to_char | cn +----+------+-----+------+-------------------+---- + 20 | 0 | 100 | 1 | .0000000 | 1 + 10 | 0 | 200 | 1 | .0000000 | 1 + 50 | 0 | 400 | 1 | .0000000 | 2 + 40 | 0 | 200 | 1 | .0000000 | 3 + 30 | 5 | 600 | 12 | .0000000 | 3 + 40 | 1 | 800 | 1 | .0000000 | 4 + 30 | 0 | 300 | 1 | .0000000 | 1 + 50 | 0 | 400 | 1 | .0000000 | 1 + 30 | 5 | 500 | 12 | .0000000 | 1 + 40 | 2400 | 100 | 1100 | .0000000 | 2 + 30 | 5 | 500 | 12 | .0000000 | 3 + 40 | 1 | 700 | 1 | .0000000 | 4 +(12 rows) + +-- CORR() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc-ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt order by ow_sale.pn desc range between floor(ow_sale.cn) following and unbounded following ); -- mvd 3,1,4->2; + dt | to_char | prc | pn +------------+-------------------+------+----- + 1401-03-01 | .0000000 | 0 | 200 + 1401-05-02 | .0000000 | 0 | 300 + 1401-06-01 | .0000000 | 0 | 400 + 1401-06-01 | .0000000 | 0 | 400 + 1401-06-01 | .0000000 | 5 | 600 + 1401-06-01 | .0000000 | 5 | 500 + 1401-06-01 | .0000000 | 5 | 500 + 1401-04-01 | .0000000 | 0 | 200 + 1401-05-01 | .0000000 | 0 | 100 + 1401-06-01 | .0000000 | 1 | 800 + 1401-06-01 | .0000000 | 1 | 700 + 1401-01-01 | .0000000 | 2400 | 100 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows unbounded preceding ); -- mvd 5,6,2,7,8->4; + prc | vn | vn | to_char | cn | dt | qty | pn +------+----+----+-------------------+----+------------+------+----- + 0 | 20 | 20 | .0000000 | 1 | 1401-05-01 | 1 | 100 + 0 | 40 | 40 | .0000000 | 3 | 1401-04-01 | 1 | 200 + 0 | 30 | 30 | .0000000 | 1 | 1401-05-02 | 1 | 300 + 0 | 50 | 50 | .0000000 | 1 | 1401-06-01 | 1 | 400 + 0 | 50 | 50 | .0000000 | 2 | 1401-06-01 | 1 | 400 + 5 | 30 | 30 | .0000000 | 3 | 1401-06-01 | 12 | 600 + 1 | 40 | 40 | .0000000 | 4 | 1401-06-01 | 1 | 800 + 2400 | 40 | 40 | .0000000 | 2 | 1401-01-01 | 1100 | 100 + 0 | 10 | 10 | .0000000 | 1 | 1401-03-01 | 1 | 200 + 5 | 30 | 30 | .0000000 | 1 | 1401-06-01 | 12 | 500 + 5 | 30 | 30 | .0000000 | 3 | 1401-06-01 | 12 | 500 + 1 | 40 | 40 | .0000000 | 4 | 1401-06-01 | 1 | 700 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty-ow_sale.cn),floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows unbounded preceding ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn desc), +win4 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,6,7,2,1->5; 1->8; 6,2->9; 3->10; 1->11; + pn | vn | cn | vn | to_char | dt | qty | to_char | to_char | to_char | to_char +-----+----+----+----+-------------------+------------+------+-------------------+-------------------+-------------------+------------------- + 100 | 40 | 2 | 40 | .0000000 | 1401-01-01 | 1100 | .0000000 | .0000000 | .0000000 | 2.0000000 + 200 | 10 | 1 | 10 | .0000000 | 1401-03-01 | 1 | .1818182 | .0000000 | .0000000 | 4.0000000 + 200 | 40 | 3 | 40 | .0000000 | 1401-04-01 | 1 | .1818182 | .0000000 | .0000000 | 4.0000000 + 100 | 20 | 1 | 20 | .0000000 | 1401-05-01 | 1 | .0000000 | .0000000 | .0000000 | 2.0000000 + 300 | 30 | 1 | 30 | .0000000 | 1401-05-02 | 1 | .3636364 | .0000000 | .0000000 | 5.0000000 + 400 | 50 | 1 | 50 | .0000000 | 1401-06-01 | 1 | .4545455 | .0000000 | .0000000 | 7.0000000 + 400 | 50 | 2 | 50 | .0000000 | 1401-06-01 | 1 | .4545455 | 1.0000000 | 5.0000000 | 7.0000000 + 500 | 30 | 1 | 30 | .0000000 | 1401-06-01 | 12 | .6363636 | .0000000 | 5.0000000 | 9.0000000 + 500 | 30 | 3 | 30 | .0000000 | 1401-06-01 | 12 | .6363636 | .0000000 | 1.0000000 | 9.0000000 + 600 | 30 | 3 | 30 | .0000000 | 1401-06-01 | 12 | .8181818 | .0000000 | .0000000 | 10.0000000 + 700 | 40 | 4 | 40 | .0000000 | 1401-06-01 | 1 | .9090909 | 3.0000000 | .0000000 | 11.0000000 + 800 | 40 | 4 | 40 | .0000000 | 1401-06-01 | 1 | 1.0000000 | 4.0000000 | .0000000 | 12.0000000 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows floor(ow_sale.pn*ow_sale.prc) preceding ); -- mvd 3,6,1->5; + vn | pn | cn | pn | to_char | dt +----+-----+----+-----+-------------------+------------ + 10 | 200 | 1 | 200 | .0000000 | 1401-03-01 + 30 | 300 | 1 | 300 | .0000000 | 1401-05-02 + 50 | 400 | 1 | 400 | .0000000 | 1401-06-01 + 50 | 400 | 2 | 400 | .0000000 | 1401-06-01 + 30 | 500 | 1 | 500 | 1.0000000 | 1401-06-01 + 30 | 500 | 3 | 500 | 1.0000000 | 1401-06-01 + 30 | 600 | 3 | 600 | .8728716 | 1401-06-01 + 40 | 700 | 4 | 700 | .2871220 | 1401-06-01 + 40 | 800 | 4 | 800 | .0129099 | 1401-06-01 + 40 | 100 | 2 | 100 | .0000000 | 1401-01-01 + 40 | 200 | 3 | 200 | .0000000 | 1401-04-01 + 20 | 100 | 1 | 100 | .0000000 | 1401-05-01 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.vn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows 1 preceding ), +win2 as (order by ow_sale.vn asc), +win3 as (order by ow_sale.vn asc); -- mvd 7,4,8,5,1->6; 3->9; 3->10; 3->11; 7,4,8,5,1->12; 3->13; + pn | pn | vn | cn | qty | to_char | prc | dt | to_char | to_char | to_char | to_char | to_char +-----+-----+----+----+------+-------------------+------+------------+-------------------+-------------------+-------------------+-------------------+------------------- + 200 | 200 | 10 | 1 | 1 | .0000000 | 0 | 1401-03-01 | 1.0000000 | 1.0000000 | 10.0000000 | 1.0000000 | 1.0000000 + 100 | 100 | 20 | 1 | 1 | .0000000 | 0 | 1401-05-01 | 2.0000000 | 2.0000000 | 20.0000000 | 1.0000000 | 2.0000000 + 600 | 600 | 30 | 3 | 12 | .0000000 | 5 | 1401-06-01 | 3.0000000 | 3.0000000 | 30.0000000 | 1.0000000 | 3.0000000 + 300 | 300 | 30 | 1 | 1 | .0000000 | 0 | 1401-05-02 | 3.0000000 | 3.0000000 | 30.0000000 | 1.0000000 | 4.0000000 + 500 | 500 | 30 | 1 | 12 | .0000000 | 5 | 1401-06-01 | 3.0000000 | 3.0000000 | 30.0000000 | 1.0000000 | 5.0000000 + 500 | 500 | 30 | 3 | 12 | .0000000 | 5 | 1401-06-01 | 3.0000000 | 3.0000000 | 30.0000000 | 2.0000000 | 6.0000000 + 100 | 100 | 40 | 2 | 1100 | .0000000 | 2400 | 1401-01-01 | 7.0000000 | 7.0000000 | 40.0000000 | 1.0000000 | 7.0000000 + 800 | 800 | 40 | 4 | 1 | .0000000 | 1 | 1401-06-01 | 7.0000000 | 7.0000000 | 40.0000000 | 1.0000000 | 8.0000000 + 700 | 700 | 40 | 4 | 1 | .0000000 | 1 | 1401-06-01 | 7.0000000 | 7.0000000 | 40.0000000 | 1.0000000 | 9.0000000 + 200 | 200 | 40 | 3 | 1 | .0000000 | 0 | 1401-04-01 | 7.0000000 | 7.0000000 | 40.0000000 | 1.0000000 | 10.0000000 + 400 | 400 | 50 | 1 | 1 | .0000000 | 0 | 1401-06-01 | 11.0000000 | 11.0000000 | 50.0000000 | 1.0000000 | 11.0000000 + 400 | 400 | 50 | 2 | 1 | .0000000 | 0 | 1401-06-01 | 11.0000000 | 11.0000000 | 50.0000000 | 2.0000000 | 12.0000000 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows current row ); -- mvd 1,8->7; + cn | cn | qty | vn | cn | dt | to_char | pn +----+----+------+----+----+------------+-------------------+----- + 1 | 1 | 1 | 20 | 1 | 1401-05-01 | .0000000 | 100 + 1 | 1 | 1 | 10 | 1 | 1401-03-01 | .0000000 | 200 + 3 | 3 | 1 | 40 | 3 | 1401-04-01 | .0000000 | 200 + 2 | 2 | 1 | 50 | 2 | 1401-06-01 | .0000000 | 400 + 3 | 3 | 12 | 30 | 3 | 1401-06-01 | .0000000 | 600 + 4 | 4 | 1 | 40 | 4 | 1401-06-01 | .0000000 | 800 + 2 | 2 | 1100 | 40 | 2 | 1401-01-01 | .0000000 | 100 + 1 | 1 | 1 | 30 | 1 | 1401-05-02 | .0000000 | 300 + 1 | 1 | 1 | 50 | 1 | 1401-06-01 | .0000000 | 400 + 1 | 1 | 12 | 30 | 1 | 1401-06-01 | .0000000 | 500 + 3 | 3 | 12 | 30 | 3 | 1401-06-01 | .0000000 | 500 + 4 | 4 | 1 | 40 | 4 | 1401-06-01 | .0000000 | 700 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.vn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc rows current row ), +win2 as (partition by ow_sale.pn order by ow_sale.vn desc), +win3 as (order by ow_sale.pn desc); -- mvd 1,2->5; 7,2->6; 2->8; 2->9; + cn | pn | pn | pn | to_char | to_char | vn | to_char | to_char +----+-----+-----+-----+-------------------+-------------------+----+-------------------+------------------- + 4 | 800 | 800 | 800 | .0000000 | 1.0000000 | 40 | .0833333 | -39.0000000 + 4 | 700 | 700 | 700 | .0000000 | 1.0000000 | 40 | .1666667 | -39.0000000 + 3 | 600 | 600 | 600 | .0000000 | 1.0000000 | 30 | .2500000 | -18.0000000 + 1 | 500 | 500 | 500 | .0000000 | 1.0000000 | 30 | .4166667 | -18.0000000 + 3 | 500 | 500 | 500 | .0000000 | 1.0000000 | 30 | .4166667 | -18.0000000 + 2 | 400 | 400 | 400 | .0000000 | 1.0000000 | 50 | .5833333 | -18.0000000 + 1 | 400 | 400 | 400 | .0000000 | 1.0000000 | 50 | .5833333 | -18.0000000 + 1 | 300 | 300 | 300 | .0000000 | 1.0000000 | 30 | .6666667 | -18.0000000 + 3 | 200 | 200 | 200 | .0000000 | 1.0000000 | 40 | .8333333 | -9.0000000 + 1 | 200 | 200 | 200 | .0000000 | 2.0000000 | 10 | .8333333 | -9.0000000 + 2 | 100 | 100 | 100 | .0000000 | 1.0000000 | 40 | 1.0000000 | 1060.0000000 + 1 | 100 | 100 | 100 | .0000000 | 2.0000000 | 20 | 1.0000000 | 1060.0000000 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.vn asc rows between unbounded preceding and 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.vn)) OVER(partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.vn asc rows between unbounded preceding and 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.vn asc rows between unbounded preceding and 2 preceding ), +win2 as (order by ow_sale.vn asc), +win3 as (order by ow_sale.cn asc); -- mvd 4,2->3; 4,2->5; 4,2->6; 2->7; 2->8; 4->9; + qty | vn | to_char | cn | to_char | to_char | to_char | to_char | to_char +------+----+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | 10 | .0000000 | 1 | .0000000 | .0000000 | .0000000 | .0833333 | .4166667 + 1 | 20 | .0000000 | 1 | .0000000 | .0000000 | .0909091 | .1666667 | .4166667 + 12 | 30 | .0000000 | 3 | 3.0000000 | 41.0000000 | .1818182 | .5000000 | .8333333 + 1 | 30 | .0000000 | 1 | 1.0000000 | 11.0000000 | .1818182 | .5000000 | .4166667 + 12 | 30 | .0000000 | 3 | .0000000 | .0000000 | .1818182 | .5000000 | .8333333 + 12 | 30 | .0000000 | 1 | 1.0000000 | 31.0000000 | .1818182 | .5000000 | .4166667 + 1 | 40 | .0000000 | 4 | .0000000 | .0000000 | .5454545 | .8333333 | 1.0000000 + 1100 | 40 | .0000000 | 2 | .0000000 | .0000000 | .5454545 | .8333333 | .5833333 + 1 | 40 | .0000000 | 3 | .0000000 | .0000000 | .5454545 | .8333333 | .8333333 + 1 | 40 | .0000000 | 4 | .0000000 | .0000000 | .5454545 | .8333333 | 1.0000000 + 1 | 50 | .0000000 | 1 | 1.0000000 | 21.0000000 | .9090909 | 1.0000000 | .4166667 + 1 | 50 | .0000000 | 2 | .0000000 | .0000000 | .9090909 | 1.0000000 | .5833333 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and current row ); -- mvd 3,4,5,1->2; + pn | to_char | cn | dt | qty +-----+-------------------+----+------------+------ + 200 | .0000000 | 1 | 1401-03-01 | 1 + 300 | .0000000 | 1 | 1401-05-02 | 1 + 400 | .0000000 | 1 | 1401-06-01 | 1 + 100 | .0000000 | 2 | 1401-01-01 | 1100 + 200 | .0000000 | 3 | 1401-04-01 | 1 + 100 | .0000000 | 1 | 1401-05-01 | 1 + 400 | .0000000 | 2 | 1401-06-01 | 1 + 700 | .0000000 | 4 | 1401-06-01 | 1 + 800 | .0000000 | 4 | 1401-06-01 | 1 + 500 | .0000000 | 1 | 1401-06-01 | 12 + 500 | .0000000 | 3 | 1401-06-01 | 12 + 600 | .0000000 | 3 | 1401-06-01 | 12 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty/ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.pn asc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.cn asc); -- mvd 3,4,5,6,1->2; 3,5->7; 3,4,5->8; 3,5->9; 3,5->10; 3,4,5->11; + pn | to_char | cn | dt | vn | qty | to_char | to_char | to_char | to_char | to_char +-----+-------------------+----+------------+----+------+-------------------+-------------------+-------------------+-------------------+------------------- + 100 | .0000000 | 2 | 1401-01-01 | 40 | 1100 | .0000000 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 200 | .0000000 | 3 | 1401-04-01 | 40 | 1 | .0000000 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 100 | .0000000 | 1 | 1401-05-01 | 20 | 1 | .0000000 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 300 | .0000000 | 1 | 1401-05-02 | 30 | 1 | .0000000 | .0000000 | 1.0000000 | .5000000 | 1.0000000 + 400 | .0000000 | 1 | 1401-06-01 | 50 | 1 | .0000000 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 700 | .0000000 | 4 | 1401-06-01 | 40 | 1 | .0000000 | .0000000 | 1.0000000 | .5000000 | 1.0000000 + 600 | .0000000 | 3 | 1401-06-01 | 30 | 12 | .0000000 | .0000000 | 2.0000000 | 1.0000000 | 1.0000000 + 200 | .0000000 | 1 | 1401-03-01 | 10 | 1 | .0000000 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 400 | .0000000 | 2 | 1401-06-01 | 50 | 1 | .0000000 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 800 | .0000000 | 4 | 1401-06-01 | 40 | 1 | .0000000 | .0000000 | 2.0000000 | 1.0000000 | 1.0000000 + 500 | .0000000 | 1 | 1401-06-01 | 30 | 12 | .0000000 | .0000000 | 2.0000000 | 1.0000000 | 1.0000000 + 500 | .0000000 | 3 | 1401-06-01 | 30 | 12 | .0000000 | .0000000 | 1.0000000 | .5000000 | 1.0000000 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn-ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.pn desc rows between unbounded preceding and 2 following ); -- mvd 5,6,1,2,7->4; + vn | qty | dt | to_char | prc | cn | pn +----+------+------------+-------------------+------+----+----- + 20 | 1 | 1401-05-01 | .0000000 | 0 | 1 | 100 + 10 | 1 | 1401-03-01 | -1.0000000 | 0 | 1 | 200 + 40 | 1 | 1401-04-01 | -1.0000000 | 0 | 3 | 200 + 40 | 1 | 1401-06-01 | .0000000 | 1 | 4 | 800 + 30 | 12 | 1401-06-01 | .0000000 | 5 | 1 | 500 + 30 | 12 | 1401-06-01 | .0000000 | 5 | 3 | 500 + 30 | 1 | 1401-05-02 | .0000000 | 0 | 1 | 300 + 50 | 1 | 1401-06-01 | .0000000 | 0 | 1 | 400 + 50 | 1 | 1401-06-01 | .0000000 | 0 | 2 | 400 + 40 | 1 | 1401-06-01 | .0000000 | 1 | 4 | 700 + 30 | 12 | 1401-06-01 | .0000000 | 5 | 3 | 600 + 40 | 1100 | 1401-01-01 | .0000000 | 2400 | 2 | 100 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty/ow_sale.vn)) OVER(partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn desc rows between unbounded preceding and 3 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn desc rows between unbounded preceding and 3 following ); -- mvd 4,5,1->3; 4,5,1->6; + pn | prc | to_char | cn | vn | to_char +-----+------+-------------------+----+----+------------------- + 200 | 0 | .0000000 | 1 | 10 | .0000000 + 100 | 0 | .0000000 | 1 | 20 | .0000000 + 300 | 0 | .0000000 | 1 | 30 | .0000000 + 500 | 5 | .0000000 | 1 | 30 | .0000000 + 500 | 5 | .0000000 | 3 | 30 | .0000000 + 600 | 5 | .0000000 | 3 | 30 | .0000000 + 100 | 2400 | .0000000 | 2 | 40 | 27.0000000 + 200 | 0 | .0000000 | 3 | 40 | 27.0000000 + 700 | 1 | .0000000 | 4 | 40 | 27.0000000 + 800 | 1 | .0000000 | 4 | 40 | 27.0000000 + 400 | 0 | .0000000 | 1 | 50 | .0000000 + 400 | 0 | .0000000 | 2 | 50 | .0000000 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.vn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and unbounded following ); -- mvd 5,6,3,1,7->4; + vn | vn | qty | to_char | cn | dt | pn +----+----+------+-------------------+----+------------+----- + 40 | 40 | 1 | .0000000 | 3 | 1401-04-01 | 200 + 20 | 20 | 1 | .0000000 | 1 | 1401-05-01 | 100 + 30 | 30 | 1 | .0000000 | 1 | 1401-05-02 | 300 + 30 | 30 | 12 | .0000000 | 3 | 1401-06-01 | 600 + 40 | 40 | 1 | .0000000 | 4 | 1401-06-01 | 800 + 50 | 50 | 1 | .0000000 | 1 | 1401-06-01 | 400 + 50 | 50 | 1 | .0000000 | 2 | 1401-06-01 | 400 + 40 | 40 | 1100 | .0000000 | 2 | 1401-01-01 | 100 + 10 | 10 | 1 | .0000000 | 1 | 1401-03-01 | 200 + 30 | 30 | 12 | .0000000 | 1 | 1401-06-01 | 500 + 30 | 30 | 12 | .0000000 | 3 | 1401-06-01 | 500 + 40 | 40 | 1 | .0000000 | 4 | 1401-06-01 | 700 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn-ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.dt order by ow_sale.cn desc), +win3 as (order by ow_sale.vn asc); -- mvd 2,1,4,5->3; 7,2,1,5->6; 7,2,1,5->8; 4->9; + dt | cn | to_char | vn | pn | to_char | prc | to_char | to_char +------------+----+-------------------+----+-----+-------------------+------+-------------------+------------------- + 1401-03-01 | 1 | .0000000 | 10 | 200 | 1.0000000 | 0 | 1.0000000 | 1.0000000 + 1401-05-01 | 1 | .0000000 | 20 | 100 | 1.0000000 | 0 | 1.0000000 | 2.0000000 + 1401-06-01 | 1 | .0000000 | 30 | 500 | 2.0000000 | 5 | 2.0000000 | 3.0000000 + 1401-06-01 | 3 | .0000000 | 30 | 500 | 1.0000000 | 5 | 1.0000000 | 3.0000000 + 1401-05-02 | 1 | .0000000 | 30 | 300 | 1.0000000 | 0 | 1.0000000 | 3.0000000 + 1401-06-01 | 3 | .0000000 | 30 | 600 | 1.0000000 | 5 | 1.0000000 | 3.0000000 + 1401-06-01 | 4 | .0000000 | 40 | 700 | 1.0000000 | 1 | 1.0000000 | 7.0000000 + 1401-01-01 | 2 | .0000000 | 40 | 100 | 1.0000000 | 2400 | 1.0000000 | 7.0000000 + 1401-04-01 | 3 | .0000000 | 40 | 200 | 1.0000000 | 0 | 1.0000000 | 7.0000000 + 1401-06-01 | 4 | .0000000 | 40 | 800 | 1.0000000 | 1 | 1.0000000 | 7.0000000 + 1401-06-01 | 1 | .0000000 | 50 | 400 | 2.0000000 | 0 | 2.0000000 | 11.0000000 + 1401-06-01 | 2 | .0000000 | 50 | 400 | 1.0000000 | 0 | 1.0000000 | 11.0000000 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.cn) preceding and floor(ow_sale.qty) preceding ); -- mvd 3,4->2; + cn | to_char | vn | pn +----+-------------------+----+----- + 1 | .0000000 | 10 | 200 + 1 | .0000000 | 20 | 100 + 1 | .0000000 | 30 | 300 + 1 | .0000000 | 30 | 500 + 3 | .0000000 | 30 | 500 + 3 | .0000000 | 30 | 600 + 2 | .0000000 | 40 | 100 + 3 | .0000000 | 40 | 200 + 4 | .0000000 | 40 | 700 + 4 | .0000000 | 40 | 800 + 1 | .0000000 | 50 | 400 + 2 | .0000000 | 50 | 400 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows between floor(ow_sale.cn*ow_sale.pn) preceding and 3 preceding ); -- mvd 3,1,4->2; 3,1,4->5; + dt | to_char | cn | pn | to_char +------------+-------------------+----+-----+------------------- + 1401-03-01 | .0000000 | 1 | 200 | .0000000 + 1401-06-01 | .0000000 | 3 | 600 | .0000000 + 1401-06-01 | .0000000 | 4 | 700 | .0000000 + 1401-01-01 | .0000000 | 2 | 100 | .0000000 + 1401-04-01 | .0000000 | 3 | 200 | .0000000 + 1401-05-01 | .0000000 | 1 | 100 | .0000000 + 1401-05-02 | .0000000 | 1 | 300 | .0000000 + 1401-06-01 | .0000000 | 1 | 400 | .0000000 + 1401-06-01 | .0000000 | 2 | 400 | .0000000 + 1401-06-01 | .0000000 | 1 | 500 | .0000000 + 1401-06-01 | .0000000 | 3 | 500 | .0000000 + 1401-06-01 | .0000000 | 4 | 800 | .0000000 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc rows between 5 preceding and current row ); -- mvd 3,6->7; + pn | pn | dt | cn | cn | vn | to_char +-----+-----+------------+----+----+----+------------------- + 200 | 200 | 1401-03-01 | 1 | 1 | 10 | .0000000 + 300 | 300 | 1401-05-02 | 1 | 1 | 30 | .0000000 + 500 | 500 | 1401-06-01 | 1 | 1 | 30 | .0000000 + 500 | 500 | 1401-06-01 | 3 | 3 | 30 | .0000000 + 600 | 600 | 1401-06-01 | 3 | 3 | 30 | .0000000 + 700 | 700 | 1401-06-01 | 4 | 4 | 40 | .0000000 + 800 | 800 | 1401-06-01 | 4 | 4 | 40 | .0000000 + 400 | 400 | 1401-06-01 | 1 | 1 | 50 | .0000000 + 400 | 400 | 1401-06-01 | 2 | 2 | 50 | .0000000 + 100 | 100 | 1401-05-01 | 1 | 1 | 20 | .0000000 + 100 | 100 | 1401-01-01 | 2 | 2 | 40 | .0000000 + 200 | 200 | 1401-04-01 | 3 | 3 | 40 | .0000000 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn+ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.qty) as int),cast (floor(ow_sale.pn-ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc rows between 1 preceding and current row ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,1,4->7; 4->8; 3->9; 4->10; 1->11; 1->12; + vn | qty | cn | pn | pn | qty | to_char | to_char | to_char | to_char | to_char | to_char +----+------+----+-----+-----+------+-------------------+-------------------+-------------------+-------------------+-------------------+------------------- + 40 | 1 | 4 | 800 | 800 | 1 | .0000000 | 1.0000000 | 44.0000000 | 4.0000000 | 2.0000000 | 12.0000000 + 40 | 1 | 4 | 700 | 700 | 1 | .0000000 | 2.0000000 | 33.0000000 | 4.0000000 | 2.0000000 | 11.0000000 + 30 | 12 | 3 | 600 | 600 | 12 | .0000000 | 3.0000000 | 31.0000000 | 3.0000000 | 17.0000000 | 10.0000000 + 30 | 12 | 1 | 500 | 500 | 12 | .0000000 | 4.0000000 | 43.0000000 | 1.0000000 | 17.0000000 | 8.0000000 + 30 | 12 | 3 | 500 | 500 | 12 | .0000000 | 5.0000000 | 21.0000000 | 1.0000000 | 17.0000000 | 9.0000000 + 50 | 1 | 2 | 400 | 400 | 1 | .0000000 | 6.0000000 | 52.0000000 | 1.0000000 | 1.0000000 | 7.0000000 + 50 | 1 | 1 | 400 | 400 | 1 | .0000000 | 7.0000000 | 51.0000000 | 1.0000000 | 1.0000000 | 6.0000000 + 30 | 1 | 1 | 300 | 300 | 1 | .0000000 | 8.0000000 | 31.0000000 | 1.0000000 | 1.0000000 | 5.0000000 + 40 | 1 | 3 | 200 | 200 | 1 | .0000000 | 9.0000000 | 43.0000000 | 1.0000000 | 1.0000000 | 3.0000000 + 10 | 1 | 1 | 200 | 200 | 1 | .0000000 | 10.0000000 | 11.0000000 | 1.0000000 | 1.0000000 | 2.0000000 + 40 | 1100 | 2 | 100 | 100 | 1100 | .0000000 | 11.0000000 | .0000000 | 1.0000000 | 3500.0000000 | 1.0000000 + 20 | 1 | 1 | 100 | 100 | 1 | .0000000 | 12.0000000 | 21.0000000 | 1.0000000 | 1.0000000 | 4.0000000 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.prc) preceding and 6 following ); -- mvd 8,4,1->7; + pn | vn | vn | qty | vn | qty | to_char | prc +-----+----+----+------+----+------+-------------------+------ + 100 | 20 | 20 | 1 | 20 | 1 | .0000000 | 0 + 200 | 10 | 10 | 1 | 10 | 1 | -1.0000000 | 0 + 200 | 40 | 40 | 1 | 40 | 1 | .0000000 | 0 + 500 | 30 | 30 | 12 | 30 | 12 | .0000000 | 5 + 500 | 30 | 30 | 12 | 30 | 12 | .0000000 | 5 + 800 | 40 | 40 | 1 | 40 | 1 | .0000000 | 1 + 100 | 40 | 40 | 1100 | 40 | 1100 | .0000000 | 2400 + 300 | 30 | 30 | 1 | 30 | 1 | .0000000 | 0 + 400 | 50 | 50 | 1 | 50 | 1 | .0000000 | 0 + 400 | 50 | 50 | 1 | 50 | 1 | .0000000 | 0 + 600 | 30 | 30 | 12 | 30 | 12 | .0000000 | 5 + 700 | 40 | 40 | 1 | 40 | 1 | .0000000 | 1 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn-ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn+ow_sale.prc) as int),cast (floor(ow_sale.qty+ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between floor(ow_sale.cn) preceding and floor(ow_sale.cn+ow_sale.vn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between floor(ow_sale.cn) preceding and floor(ow_sale.cn+ow_sale.vn) following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.cn desc), +win3 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc), +win4 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc); -- mvd 1,2,6->5; 1,8,2,6->7; 8,2,10->9; 10,2->11; 1,2,6->12; 10,2->13; + cn | vn | cn | vn | to_char | pn | to_char | dt | to_char | qty | to_char | to_char | to_char +----+----+----+----+-------------------+-----+-------------------+------------+-------------------+------+-------------------+-------------------+------------------- + 1 | 20 | 1 | 20 | .0000000 | 100 | .0000000 | 1401-05-01 | .0000000 | 1 | .0000000 | 1.0000000 | 1.0000000 + 1 | 10 | 1 | 10 | .0000000 | 200 | .0000000 | 1401-03-01 | .0000000 | 1 | .0000000 | 1.0000000 | 1.0000000 + 2 | 50 | 2 | 50 | .0000000 | 400 | .0000000 | 1401-06-01 | .0000000 | 1 | .0000000 | 2.0000000 | 2.0000000 + 3 | 40 | 3 | 40 | .0000000 | 200 | .0000000 | 1401-04-01 | .0000000 | 1 | .0000000 | 3.0000000 | 1.0000000 + 3 | 30 | 3 | 30 | .0000000 | 600 | .0000000 | 1401-06-01 | .0000000 | 12 | .0000000 | 3.0000000 | 3.0000000 + 4 | 40 | 4 | 40 | .0000000 | 800 | .0000000 | 1401-06-01 | .0000000 | 1 | .0000000 | 4.0000000 | 3.0000000 + 1 | 30 | 1 | 30 | .0000000 | 300 | .0000000 | 1401-05-02 | .0000000 | 1 | .0000000 | 1.0000000 | 1.0000000 + 1 | 50 | 1 | 50 | .0000000 | 400 | 1.0000000 | 1401-06-01 | .0000000 | 1 | .0000000 | 1.0000000 | 1.0000000 + 1 | 30 | 1 | 30 | .0000000 | 500 | 1.0000000 | 1401-06-01 | .0000000 | 12 | .0000000 | 1.0000000 | 1.0000000 + 2 | 40 | 2 | 40 | .0000000 | 100 | .0000000 | 1401-01-01 | .0000000 | 1100 | .0000000 | 2.0000000 | 1.0000000 + 3 | 30 | 3 | 30 | .0000000 | 500 | .0000000 | 1401-06-01 | .0000000 | 12 | .0000000 | 3.0000000 | 2.0000000 + 4 | 40 | 4 | 40 | .0000000 | 700 | .0000000 | 1401-06-01 | .0000000 | 1 | .0000000 | 4.0000000 | 2.0000000 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows between 0 preceding and unbounded following ); -- mvd 4,2,5->3; + qty | vn | to_char | cn | pn +------+----+-------------------+----+----- + 1 | 30 | .0000000 | 1 | 300 + 1 | 50 | .0000000 | 1 | 400 + 1 | 50 | .0000000 | 2 | 400 + 12 | 30 | .0000000 | 1 | 500 + 12 | 30 | .0000000 | 3 | 500 + 1 | 40 | .0000000 | 4 | 800 + 1 | 20 | .0000000 | 1 | 100 + 1100 | 40 | .0000000 | 2 | 100 + 1 | 10 | .0000000 | 1 | 200 + 1 | 40 | .0000000 | 3 | 200 + 12 | 30 | .0000000 | 3 | 600 + 1 | 40 | .0000000 | 4 | 700 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc-ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc rows between current row and current row ); -- mvd 1,4,5->3; + cn | cn | to_char | vn | pn +----+----+-------------------+----+----- + 1 | 1 | .0000000 | 20 | 100 + 1 | 1 | .0000000 | 10 | 200 + 3 | 3 | .0000000 | 40 | 200 + 2 | 2 | .0000000 | 50 | 400 + 3 | 3 | .0000000 | 30 | 600 + 4 | 4 | .0000000 | 40 | 800 + 2 | 2 | .0000000 | 40 | 100 + 1 | 1 | .0000000 | 30 | 300 + 1 | 1 | .0000000 | 50 | 400 + 1 | 1 | .0000000 | 30 | 500 + 3 | 3 | .0000000 | 30 | 500 + 4 | 4 | .0000000 | 40 | 700 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty/ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows between current row and current row ), +win2 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 5,2,1->4; 5,7->6; 5,7->8; 5,2,1->9; 5,7->10; + pn | vn | pn | to_char | cn | to_char | dt | to_char | to_char | to_char +-----+----+-----+-------------------+----+-------------------+------------+-------------------+-------------------+------------------- + 300 | 30 | 300 | .0000000 | 1 | .0000000 | 1401-05-02 | .0000000 | 1.0000000 | 1.0000000 + 400 | 50 | 400 | .0000000 | 1 | .0000000 | 1401-06-01 | .0000000 | 1.0000000 | .1428571 + 400 | 50 | 400 | .0000000 | 2 | .0000000 | 1401-06-01 | .0000000 | 1.0000000 | .2857143 + 500 | 30 | 500 | .0000000 | 1 | .0000000 | 1401-06-01 | 5.0000000 | 17.0000000 | .4285714 + 500 | 30 | 500 | .0000000 | 3 | .0000000 | 1401-06-01 | 5.0000000 | 17.0000000 | .5714286 + 800 | 40 | 800 | .0000000 | 4 | .0000000 | 1401-06-01 | 5.0000000 | 2.0000000 | 1.0000000 + 100 | 40 | 100 | .0000000 | 2 | .0000000 | 1401-01-01 | 2400.0000000 | 3500.0000000 | 1.0000000 + 100 | 20 | 100 | .0000000 | 1 | .0000000 | 1401-05-01 | .0000000 | 1.0000000 | 1.0000000 + 200 | 10 | 200 | .0000000 | 1 | .0000000 | 1401-03-01 | .0000000 | 1.0000000 | 1.0000000 + 200 | 40 | 200 | .0000000 | 3 | .0000000 | 1401-04-01 | .0000000 | 1.0000000 | 1.0000000 + 600 | 30 | 600 | .0000000 | 3 | .0000000 | 1401-06-01 | 5.0000000 | 17.0000000 | .7142857 + 700 | 40 | 700 | .0000000 | 4 | .0000000 | 1401-06-01 | 5.0000000 | 2.0000000 | .8571429 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn),floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.pn asc rows between current row and 7 following ); -- mvd 5,6,2->4; + dt | pn | pn | to_char | cn | qty +------------+-----+-----+-------------------+----+------ + 1401-03-01 | 200 | 200 | .5356982 | 1 | 1 + 1401-04-01 | 200 | 200 | .4762467 | 3 | 1 + 1401-05-01 | 100 | 100 | .5322539 | 1 | 1 + 1401-05-02 | 300 | 300 | .0362789 | 1 | 1 + 1401-06-01 | 400 | 400 | -.9801961 | 1 | 1 + 1401-06-01 | 400 | 400 | -.9707253 | 2 | 1 + 1401-06-01 | 700 | 700 | .0000000 | 4 | 1 + 1401-06-01 | 800 | 800 | .0000000 | 4 | 1 + 1401-06-01 | 500 | 500 | .0000000 | 1 | 12 + 1401-06-01 | 500 | 500 | .0000000 | 3 | 12 + 1401-06-01 | 600 | 600 | .0000000 | 3 | 12 + 1401-01-01 | 100 | 100 | .0000000 | 2 | 1100 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc rows between current row and 3 following ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.dt order by ow_sale.cn asc); -- mvd 1,3,4->2; 1,3,4->5; 7,1,3,8,4,9->6; 7,1,3,8,4,9->10; 1,3,4->11; + cn | to_char | dt | vn | to_char | to_char | prc | qty | pn | to_char | to_char +----+-------------------+------------+----+-------------------+-------------------+------+------+-----+-------------------+------------------- + 1 | .0000000 | 1401-05-01 | 20 | 100.0000000 | 1.0000000 | 0 | 1 | 100 | 100.0000000 | 1.0000000 + 3 | .0000000 | 1401-04-01 | 40 | 200.0000000 | 1.0000000 | 0 | 1 | 200 | 200.0000000 | 1.0000000 + 4 | .0000000 | 1401-06-01 | 40 | 699.0000000 | 1.0000000 | 1 | 1 | 700 | 700.0000000 | 2.0000000 + 4 | .0000000 | 1401-06-01 | 40 | 799.0000000 | 1.0000000 | 1 | 1 | 800 | 800.0000000 | 1.0000000 + 2 | .0000000 | 1401-06-01 | 50 | 400.0000000 | 2.0000000 | 0 | 1 | 400 | 400.0000000 | 1.0000000 + 1 | .0000000 | 1401-03-01 | 10 | 200.0000000 | 1.0000000 | 0 | 1 | 200 | 200.0000000 | 1.0000000 + 1 | .0000000 | 1401-05-02 | 30 | 300.0000000 | 1.0000000 | 0 | 1 | 300 | 300.0000000 | 1.0000000 + 1 | .0000000 | 1401-06-01 | 30 | 495.0000000 | 1.0000000 | 5 | 12 | 500 | 500.0000000 | 1.0000000 + 3 | .0000000 | 1401-06-01 | 30 | 495.0000000 | 2.0000000 | 5 | 12 | 500 | 500.0000000 | 2.0000000 + 3 | .0000000 | 1401-06-01 | 30 | 595.0000000 | 1.0000000 | 5 | 12 | 600 | 600.0000000 | 1.0000000 + 2 | .0000000 | 1401-01-01 | 40 | -2300.0000000 | 1.0000000 | 2400 | 1100 | 100 | 100.0000000 | 1.0000000 + 1 | .0000000 | 1401-06-01 | 50 | 400.0000000 | 1.0000000 | 0 | 1 | 400 | 400.0000000 | 1.0000000 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between current row and unbounded following ); -- mvd 6,7,8,4->5; + prc | qty | qty | pn | to_char | dt | cn | vn +------+------+------+-----+-------------------+------------+----+---- + 0 | 1 | 1 | 100 | .0000000 | 1401-05-01 | 1 | 20 + 0 | 1 | 1 | 200 | .0000000 | 1401-03-01 | 1 | 10 + 0 | 1 | 1 | 200 | .0000000 | 1401-04-01 | 3 | 40 + 0 | 1 | 1 | 400 | .0000000 | 1401-06-01 | 2 | 50 + 5 | 12 | 12 | 600 | .0000000 | 1401-06-01 | 3 | 30 + 1 | 1 | 1 | 800 | .0000000 | 1401-06-01 | 4 | 40 + 2400 | 1100 | 1100 | 100 | .0000000 | 1401-01-01 | 2 | 40 + 0 | 1 | 1 | 300 | .0000000 | 1401-05-02 | 1 | 30 + 0 | 1 | 1 | 400 | .0000000 | 1401-06-01 | 1 | 50 + 5 | 12 | 12 | 500 | .0000000 | 1401-06-01 | 1 | 30 + 5 | 12 | 12 | 500 | .0000000 | 1401-06-01 | 3 | 30 + 1 | 1 | 1 | 700 | .0000000 | 1401-06-01 | 4 | 40 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.prc) as int),cast (floor(ow_sale.vn*ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,4,5,1->2; 7->6; 7->8; 3,4,5,1->9; 1->10; + pn | to_char | prc | dt | vn | to_char | cn | to_char | to_char | to_char +-----+-------------------+------+------------+----+-------------------+----+-------------------+-------------------+------------------- + 100 | .0000000 | 2400 | 1401-01-01 | 40 | .0000000 | 2 | 1.0000000 | 1100.0000000 | .0000000 + 200 | .0000000 | 0 | 1401-03-01 | 10 | 2.0000000 | 1 | 2.0000000 | 1.0000000 | .0000000 + 200 | .0000000 | 0 | 1401-04-01 | 40 | .0000000 | 3 | 3.0000000 | 1.0000000 | .0000000 + 100 | .0000000 | 0 | 1401-05-01 | 20 | .0000000 | 1 | 4.0000000 | 1.0000000 | .0000000 + 300 | .0000000 | 0 | 1401-05-02 | 30 | .0000000 | 1 | 5.0000000 | 1.0000000 | .0000000 + 400 | .0000000 | 0 | 1401-06-01 | 50 | .0000000 | 1 | 6.0000000 | 1.0000000 | .0000000 + 400 | .0000000 | 0 | 1401-06-01 | 50 | .0000000 | 2 | 7.0000000 | 1.0000000 | .0000000 + 500 | .0000000 | 5 | 1401-06-01 | 30 | .0000000 | 1 | 8.0000000 | 12.0000000 | .0000000 + 500 | .0000000 | 5 | 1401-06-01 | 30 | .0000000 | 3 | 9.0000000 | 12.0000000 | .0000000 + 600 | .0000000 | 5 | 1401-06-01 | 30 | .0000000 | 3 | 10.0000000 | 12.0000000 | .0000000 + 700 | .0000000 | 1 | 1401-06-01 | 40 | .0000000 | 4 | 11.0000000 | 1.0000000 | .0000000 + 800 | .0000000 | 1 | 1401-06-01 | 40 | .0000000 | 4 | 12.0000000 | 1.0000000 | .0000000 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc,ow_sale.cn asc rows between floor(ow_sale.pn/ow_sale.qty) following and floor(ow_sale.vn*ow_sale.vn) following ); -- mvd 2,3,1->5; + vn | cn | dt | prc | to_char +----+----+------------+------+------------------- + 10 | 1 | 1401-03-01 | 0 | .0000000 + 30 | 1 | 1401-05-02 | 0 | .0000000 + 30 | 1 | 1401-06-01 | 5 | .0000000 + 30 | 3 | 1401-06-01 | 5 | .0000000 + 30 | 3 | 1401-06-01 | 5 | .0000000 + 40 | 4 | 1401-06-01 | 1 | .0000000 + 40 | 4 | 1401-06-01 | 1 | .0000000 + 50 | 1 | 1401-06-01 | 0 | .0000000 + 50 | 2 | 1401-06-01 | 0 | .0000000 + 40 | 2 | 1401-01-01 | 2400 | .0000000 + 40 | 3 | 1401-04-01 | 0 | .0000000 + 20 | 1 | 1401-05-01 | 0 | .0000000 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc rows between 2 following and floor(ow_sale.pn) following ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.cn asc); -- mvd 5,6->4; 6->7; 5,6->8; 6->9; 1->10; + cn | cn | qty | to_char | dt | pn | to_char | to_char | to_char | to_char +----+----+------+-------------------+------------+-----+-------------------+-------------------+-------------------+------------------- + 1 | 1 | 1 | .0000000 | 1401-06-01 | 400 | 5.0000000 | .0000000 | 7.0000000 | .0000000 + 1 | 1 | 1 | .0000000 | 1401-05-01 | 100 | 8.0000000 | .0000000 | 12.0000000 | .0000000 + 1 | 1 | 1 | .0000000 | 1401-03-01 | 200 | 7.0000000 | .0000000 | 10.0000000 | .0000000 + 1 | 1 | 12 | .0000000 | 1401-06-01 | 500 | 4.0000000 | .0000000 | 5.0000000 | .0000000 + 1 | 1 | 1 | .0000000 | 1401-05-02 | 300 | 6.0000000 | .0000000 | 8.0000000 | .0000000 + 2 | 2 | 1100 | .0000000 | 1401-01-01 | 100 | 8.0000000 | .0000000 | 12.0000000 | .4545455 + 2 | 2 | 1 | .0000000 | 1401-06-01 | 400 | 5.0000000 | .0000000 | 7.0000000 | .4545455 + 3 | 3 | 12 | .0000000 | 1401-06-01 | 500 | 4.0000000 | .0000000 | 5.0000000 | .6363636 + 3 | 3 | 1 | .0000000 | 1401-04-01 | 200 | 7.0000000 | .0000000 | 10.0000000 | .6363636 + 3 | 3 | 12 | .0000000 | 1401-06-01 | 600 | 3.0000000 | .0000000 | 3.0000000 | .6363636 + 4 | 4 | 1 | .0000000 | 1401-06-01 | 700 | 2.0000000 | .0000000 | 2.0000000 | .9090909 + 4 | 4 | 1 | .0000000 | 1401-06-01 | 800 | 1.0000000 | .0000000 | 1.0000000 | .9090909 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc/ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.prc) following and unbounded following ); -- mvd 4,5,1,6,7->3; + cn | cn | to_char | prc | dt | vn | pn +----+----+-------------------+------+------------+----+----- + 1 | 1 | .0000000 | 0 | 1401-05-01 | 20 | 100 + 1 | 1 | .0000000 | 0 | 1401-05-02 | 30 | 300 + 1 | 1 | .0000000 | 0 | 1401-06-01 | 50 | 400 + 1 | 1 | .0000000 | 5 | 1401-06-01 | 30 | 500 + 3 | 3 | .0000000 | 0 | 1401-04-01 | 40 | 200 + 3 | 3 | .0000000 | 5 | 1401-06-01 | 30 | 500 + 4 | 4 | .0000000 | 1 | 1401-06-01 | 40 | 800 + 1 | 1 | .0000000 | 0 | 1401-03-01 | 10 | 200 + 2 | 2 | .0000000 | 0 | 1401-06-01 | 50 | 400 + 2 | 2 | .0000000 | 2400 | 1401-01-01 | 40 | 100 + 3 | 3 | .0000000 | 5 | 1401-06-01 | 30 | 600 + 4 | 4 | .0000000 | 1 | 1401-06-01 | 40 | 700 +(12 rows) + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between 3 following and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc); -- mvd 1,2,5->4; 1,2,5->6; 8,1,9,2,10->7; + cn | qty | cn | to_char | vn | to_char | to_char | prc | dt | pn +----+------+----+-------------------+----+-------------------+-------------------+------+------------+----- + 1 | 12 | 1 | .0000000 | 30 | .0000000 | .0000000 | 5 | 1401-06-01 | 500 + 2 | 1 | 2 | .0000000 | 50 | .0000000 | .0000000 | 0 | 1401-06-01 | 400 + 3 | 12 | 3 | .0000000 | 30 | .0000000 | .0000000 | 5 | 1401-06-01 | 500 + 3 | 12 | 3 | .0000000 | 30 | .0000000 | .0000000 | 5 | 1401-06-01 | 600 + 4 | 1 | 4 | .0000000 | 40 | .0000000 | 1.0000000 | 1 | 1401-06-01 | 700 + 4 | 1 | 4 | .0000000 | 40 | .0000000 | .0000000 | 1 | 1401-06-01 | 800 + 1 | 1 | 1 | .0000000 | 10 | .0000000 | .0000000 | 0 | 1401-03-01 | 200 + 1 | 1 | 1 | .0000000 | 20 | .0000000 | .0000000 | 0 | 1401-05-01 | 100 + 1 | 1 | 1 | .0000000 | 30 | .0000000 | .0000000 | 0 | 1401-05-02 | 300 + 1 | 1 | 1 | .0000000 | 50 | .0000000 | .0000000 | 0 | 1401-06-01 | 400 + 2 | 1100 | 2 | .0000000 | 40 | .0000000 | .0000000 | 2400 | 1401-01-01 | 100 + 3 | 1 | 3 | .0000000 | 40 | .0000000 | .0000000 | 0 | 1401-04-01 | 200 +(12 rows) + +-- COVAR_POP() function with NULL OVER() clause -- +SELECT ow_sale.prc,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (); -- mvd 4->4; + prc | dt | cn | to_char +------+------------+----+------------------- + 0 | 1401-06-01 | 2 | 4.3055556 + 1 | 1401-06-01 | 4 | 4.3055556 + 0 | 1401-05-01 | 1 | 4.3055556 + 0 | 1401-03-01 | 1 | 4.3055556 + 0 | 1401-04-01 | 3 | 4.3055556 + 5 | 1401-06-01 | 3 | 4.3055556 + 0 | 1401-05-02 | 1 | 4.3055556 + 0 | 1401-06-01 | 1 | 4.3055556 + 5 | 1401-06-01 | 1 | 4.3055556 + 5 | 1401-06-01 | 3 | 4.3055556 + 2400 | 1401-01-01 | 2 | 4.3055556 + 1 | 1401-06-01 | 4 | 4.3055556 +(12 rows) + +-- COVAR_POP() function with NULL OVER() clause in combination with other window functions -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn+ow_sale.pn),floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.prc)) OVER(),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (), +win2 as (order by ow_sale.cn asc); -- mvd 6->6; 6->7; 2->8; + dt | cn | vn | qty | vn | to_char | to_char | to_char +------------+----+----+------+----+-------------------+-------------------+------------------- + 1401-03-01 | 1 | 10 | 1 | 10 | -54550.0000000 | -2300.0000000 | .4166667 + 1401-05-01 | 1 | 20 | 1 | 20 | -54550.0000000 | -2300.0000000 | .4166667 + 1401-05-02 | 1 | 30 | 1 | 30 | -54550.0000000 | -2300.0000000 | .4166667 + 1401-06-01 | 1 | 30 | 12 | 30 | -54550.0000000 | -2300.0000000 | .4166667 + 1401-06-01 | 1 | 50 | 1 | 50 | -54550.0000000 | -2300.0000000 | .4166667 + 1401-01-01 | 2 | 40 | 1100 | 40 | -54550.0000000 | -2300.0000000 | .5833333 + 1401-06-01 | 2 | 50 | 1 | 50 | -54550.0000000 | -2300.0000000 | .5833333 + 1401-06-01 | 3 | 30 | 12 | 30 | -54550.0000000 | -2300.0000000 | .8333333 + 1401-04-01 | 3 | 40 | 1 | 40 | -54550.0000000 | -2300.0000000 | .8333333 + 1401-06-01 | 3 | 30 | 12 | 30 | -54550.0000000 | -2300.0000000 | .8333333 + 1401-06-01 | 4 | 40 | 1 | 40 | -54550.0000000 | -2300.0000000 | 1.0000000 + 1401-06-01 | 4 | 40 | 1 | 40 | -54550.0000000 | -2300.0000000 | 1.0000000 +(12 rows) + +-- COVAR_POP() function with OVER() clause having ONLY PARTITION BY -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.prc/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn); -- mvd 1,3->2; + cn | to_char | qty +----+-------------------+------ + 2 | .0000000 | 1 + 4 | .0000000 | 1 + 4 | .0000000 | 1 + 1 | .0000000 | 12 + 3 | .0000000 | 12 + 3 | .0000000 | 12 + 1 | .0000000 | 1 + 1 | .0000000 | 1 + 1 | .0000000 | 1 + 1 | .0000000 | 1 + 3 | .0000000 | 1 + 2 | .0000000 | 1100 +(12 rows) + +-- COVAR_POP() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn-ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.cn),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.cn); -- mvd 5,6,1->4; 5,6,1->7; + cn | pn | pn | to_char | prc | dt | to_char +----+-----+-----+-------------------+------+------------+------------------- + 1 | 100 | 100 | .0000000 | 0 | 1401-05-01 | 20.0000000 + 2 | 400 | 400 | .0000000 | 0 | 1401-06-01 | 50.0000000 + 3 | 200 | 200 | .0000000 | 0 | 1401-04-01 | 40.0000000 + 1 | 200 | 200 | .0000000 | 0 | 1401-03-01 | 10.0000000 + 1 | 300 | 300 | .0000000 | 0 | 1401-05-02 | 30.0000000 + 1 | 400 | 400 | .0000000 | 0 | 1401-06-01 | 50.0000000 + 1 | 500 | 500 | .0000000 | 5 | 1401-06-01 | 30.0000000 + 2 | 100 | 100 | .0000000 | 2400 | 1401-01-01 | 40.0000000 + 3 | 600 | 600 | .0000000 | 5 | 1401-06-01 | 30.0000000 + 3 | 500 | 500 | .0000000 | 5 | 1401-06-01 | 30.0000000 + 4 | 800 | 800 | .0000000 | 1 | 1401-06-01 | 40.0000000 + 4 | 700 | 700 | .0000000 | 1 | 1401-06-01 | 40.0000000 +(12 rows) + +-- COVAR_POP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn*ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc,ow_sale.pn desc,ow_sale.cn asc); -- mvd 3,4->2; + qty | to_char | cn | pn +------+-------------------+----+----- + 12 | .0000000 | 1 | 500 + 1 | 275.0000000 | 1 | 400 + 1 | 366.6666667 | 1 | 300 + 1 | 412.5000000 | 1 | 200 + 1 | 440.0000000 | 1 | 100 + 1 | 213.8888889 | 2 | 400 + 1100 | -24446.9387755 | 2 | 100 + 12 | -44679.6875000 | 3 | 600 + 12 | -51990.1234568 | 3 | 500 + 1 | -46288.0000000 | 3 | 200 + 1 | -66029.7520661 | 4 | 800 + 1 | -75677.7777778 | 4 | 700 +(12 rows) + +-- COVAR_POP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn-ow_sale.pn)) OVER(order by ow_sale.cn asc,ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.cn asc,ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(order by ow_sale.cn asc,ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc,ow_sale.vn desc); -- mvd 3,4->2; 3,4->5; 3,4->6; 3,4->7; + pn | to_char | cn | vn | to_char | to_char | to_char +-----+-------------------+----+----+-------------------+-------------------+------------------- + 400 | .0000000 | 1 | 50 | 1.0000000 | .0000000 | .0000000 + 300 | -24.4444444 | 1 | 30 | 3.0000000 | .0909091 | 5.0000000 + 500 | -24.4444444 | 1 | 30 | 3.0000000 | .0909091 | 5.0000000 + 100 | -6.8750000 | 1 | 20 | 4.0000000 | .2727273 | 5.0000000 + 200 | 4.4000000 | 1 | 10 | 5.0000000 | .3636364 | 5.0000000 + 400 | -3.0555556 | 2 | 50 | 6.0000000 | .4545455 | 5.0000000 + 100 | 1116.9387755 | 2 | 40 | 7.0000000 | .5454545 | 2400.0000000 + 200 | 853.4375000 | 3 | 40 | 8.0000000 | .6363636 | 2400.0000000 + 600 | 759.4000000 | 3 | 30 | 10.0000000 | .7272727 | 2400.0000000 + 500 | 759.4000000 | 3 | 30 | 10.0000000 | .7272727 | 2400.0000000 + 700 | 522.7777778 | 4 | 40 | 12.0000000 | .9090909 | 2400.0000000 + 800 | 522.7777778 | 4 | 40 | 12.0000000 | .9090909 | 2400.0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty/ow_sale.cn),floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range unbounded preceding ); -- mvd 1->3; + pn | vn | to_char +-----+----+------------------- + 800 | 40 | .0000000 + 700 | 40 | .0000000 + 600 | 30 | -6.2222222 + 500 | 30 | -24.0000000 + 500 | 30 | -24.0000000 + 400 | 50 | -11.8571429 + 400 | 50 | -11.8571429 + 300 | 30 | -8.8437500 + 200 | 10 | -6.7100000 + 200 | 40 | -6.7100000 + 100 | 20 | -96.3333333 + 100 | 40 | -96.3333333 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn),floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn-ow_sale.pn) as int),cast (floor(ow_sale.prc+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc/ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range unbounded preceding ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.cn asc), +win4 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc); -- mvd 5->4; 7,5->6; 7->8; 7,5->9; 11,7,12,3->10; 7,5->13; + qty | qty | vn | to_char | pn | to_char | cn | to_char | to_char | to_char | prc | dt | to_char +------+------+----+-------------------+-----+-------------------+----+-------------------+-------------------+-------------------+------+------------+------------------- + 1100 | 1100 | 40 | 874.3055556 | 100 | .0000000 | 2 | .0000000 | 2500.0000000 | .0000000 | 2400 | 1401-01-01 | .0000000 + 1 | 1 | 10 | 725.0000000 | 200 | .0000000 | 1 | -98.0000000 | 200.0000000 | 1.0000000 | 0 | 1401-03-01 | .0000000 + 1 | 1 | 40 | 725.0000000 | 200 | .0000000 | 3 | .0000000 | 200.0000000 | 1.0000000 | 0 | 1401-04-01 | .0000000 + 1 | 1 | 20 | 874.3055556 | 100 | .0000000 | 1 | -197.0000000 | 100.0000000 | 1.0000000 | 0 | 1401-05-01 | .0000000 + 1 | 1 | 30 | 6.2500000 | 300 | .0000000 | 1 | -99.0000000 | 300.0000000 | 1.0000000 | 0 | 1401-05-02 | .0000000 + 1 | 1 | 50 | -277.5510204 | 400 | .0000000 | 1 | -299.0000000 | 400.0000000 | 1.0000000 | 0 | 1401-06-01 | .0000000 + 1 | 1 | 50 | -277.5510204 | 400 | .0000000 | 2 | -299.0000000 | 400.0000000 | 1.0000000 | 0 | 1401-06-01 | .0000000 + 12 | 12 | 30 | 544.0000000 | 500 | .0000000 | 1 | -199.0000000 | 505.0000000 | 12.0000000 | 5 | 1401-06-01 | .0000000 + 12 | 12 | 30 | 544.0000000 | 500 | .0000000 | 3 | -98.0000000 | 505.0000000 | 12.0000000 | 5 | 1401-06-01 | .0000000 + 12 | 12 | 30 | 355.5555556 | 600 | .0000000 | 3 | -199.0000000 | 605.0000000 | 12.0000000 | 5 | 1401-06-01 | .0000000 + 1 | 1 | 40 | .0000000 | 700 | .0000000 | 4 | -399.0000000 | 701.0000000 | 1.0000000 | 1 | 1401-06-01 | .0000000 + 1 | 1 | 40 | .0000000 | 800 | .0000000 | 4 | -398.0000000 | 801.0000000 | 1.0000000 | 1 | 1401-06-01 | .0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn/ow_sale.pn),floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range 3 preceding ); -- mvd 3->2; + pn | to_char | cn +-----+-------------------+---- + 200 | .0000000 | 1 + 100 | .0000000 | 1 + 300 | .0000000 | 1 + 400 | .0000000 | 1 + 500 | .0000000 | 1 + 100 | .0000000 | 2 + 400 | .0000000 | 2 + 200 | .0000000 | 3 + 600 | .0000000 | 3 + 500 | .0000000 | 3 + 700 | .0000000 | 4 + 800 | .0000000 | 4 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn+ow_sale.prc),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.vn)) OVER(order by ow_sale.vn desc range floor(ow_sale.cn) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range floor(ow_sale.cn) preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 4->3; 2->5; 2->6; 4->7; + pn | cn | to_char | vn | to_char | to_char | to_char +-----+----+-------------------+----+-------------------+-------------------+------------------- + 700 | 4 | 870062.3750000 | 40 | 1.0000000 | 1.0000000 | -39.0000000 + 800 | 4 | 870062.3750000 | 40 | 1.0000000 | 1.0000000 | -39.0000000 + 200 | 3 | 870062.3750000 | 40 | 2.0000000 | 3.0000000 | -39.0000000 + 600 | 3 | 147.1875000 | 30 | 2.0000000 | 3.0000000 | -29.0000000 + 500 | 3 | 147.1875000 | 30 | 2.0000000 | 3.0000000 | -29.0000000 + 400 | 2 | .0000000 | 50 | 3.0000000 | 6.0000000 | -49.0000000 + 100 | 2 | 870062.3750000 | 40 | 3.0000000 | 6.0000000 | -39.0000000 + 300 | 1 | 147.1875000 | 30 | 4.0000000 | 8.0000000 | -29.0000000 + 500 | 1 | 147.1875000 | 30 | 4.0000000 | 8.0000000 | -29.0000000 + 400 | 1 | .0000000 | 50 | 4.0000000 | 8.0000000 | -49.0000000 + 100 | 1 | .0000000 | 20 | 4.0000000 | 8.0000000 | -19.0000000 + 200 | 1 | .0000000 | 10 | 4.0000000 | 8.0000000 | -9.0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ); -- mvd 3->4; + prc | pn | cn | to_char +------+-----+----+------------------- + 1 | 800 | 4 | .0000000 + 1 | 700 | 4 | .0000000 + 5 | 500 | 3 | 5.5555556 + 5 | 600 | 3 | 5.5555556 + 0 | 200 | 3 | 5.5555556 + 0 | 400 | 2 | 1440000.0000000 + 2400 | 100 | 2 | 1440000.0000000 + 0 | 300 | 1 | 4.0000000 + 5 | 500 | 1 | 4.0000000 + 0 | 400 | 1 | 4.0000000 + 0 | 200 | 1 | 4.0000000 + 0 | 100 | 1 | 4.0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range current row ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 1->4; 1->5; 7,8,9->6; 8->10; + vn | vn | prc | to_char | to_char | to_char | dt | cn | pn | to_char +----+----+------+-------------------+-------------------+-------------------+------------+----+-----+------------------- + 40 | 40 | 2400 | .0000000 | 140.0000000 | 1.0000000 | 1401-01-01 | 2 | 100 | .0000000 + 10 | 10 | 0 | .0000000 | 210.0000000 | 1.0000000 | 1401-03-01 | 1 | 200 | 1.0000000 + 40 | 40 | 0 | .0000000 | 140.0000000 | 1.0000000 | 1401-04-01 | 3 | 200 | 1.0000000 + 20 | 20 | 0 | .0000000 | 120.0000000 | 1.0000000 | 1401-05-01 | 1 | 100 | 1.0000000 + 30 | 30 | 0 | .0000000 | 330.0000000 | 1.0000000 | 1401-05-02 | 1 | 300 | 1.0000000 + 50 | 50 | 0 | .0000000 | 450.0000000 | 1.0000000 | 1401-06-01 | 1 | 400 | 1.0000000 + 50 | 50 | 0 | .0000000 | 450.0000000 | 1.0000000 | 1401-06-01 | 2 | 400 | 1.0000000 + 30 | 30 | 5 | .0000000 | 330.0000000 | 1.0000000 | 1401-06-01 | 1 | 500 | .0000000 + 30 | 30 | 5 | .0000000 | 330.0000000 | 1.0000000 | 1401-06-01 | 3 | 500 | .0000000 + 30 | 30 | 5 | .0000000 | 330.0000000 | 1.0000000 | 1401-06-01 | 3 | 600 | .0000000 + 40 | 40 | 1 | .0000000 | 140.0000000 | 1.0000000 | 1401-06-01 | 4 | 700 | 1.0000000 + 40 | 40 | 1 | .0000000 | 140.0000000 | 1.0000000 | 1401-06-01 | 4 | 800 | .0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc-ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and 2 preceding ), +win2 as (order by ow_sale.pn asc); -- mvd 5->7; 3->8; + vn | qty | pn | vn | cn | cn | to_char | to_char +----+------+-----+----+----+----+-------------------+------------------- + 20 | 1 | 100 | 20 | 1 | 1 | .0000000 | .0000000 + 40 | 1100 | 100 | 40 | 2 | 2 | .0000000 | .0000000 + 40 | 1 | 200 | 40 | 3 | 3 | .0000000 | .1818182 + 10 | 1 | 200 | 10 | 1 | 1 | .0000000 | .1818182 + 30 | 1 | 300 | 30 | 1 | 1 | .0000000 | .3636364 + 50 | 1 | 400 | 50 | 2 | 2 | .0000000 | .4545455 + 50 | 1 | 400 | 50 | 1 | 1 | .0000000 | .4545455 + 30 | 12 | 500 | 30 | 3 | 3 | .0000000 | .6363636 + 30 | 12 | 500 | 30 | 1 | 1 | .0000000 | .6363636 + 30 | 12 | 600 | 30 | 3 | 3 | .0000000 | .8181818 + 40 | 1 | 700 | 40 | 4 | 4 | .0000000 | .9090909 + 40 | 1 | 800 | 40 | 4 | 4 | .0000000 | 1.0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn),floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and current row ); -- mvd 1->4; + pn | cn | vn | to_char +-----+----+----+------------------- + 800 | 4 | 40 | .0000000 + 700 | 4 | 40 | .0000000 + 600 | 3 | 30 | 4.4444444 + 500 | 1 | 30 | 8.0000000 + 500 | 3 | 30 | 8.0000000 + 400 | 1 | 50 | -4.0816327 + 400 | 2 | 50 | -4.0816327 + 300 | 1 | 30 | -.6250000 + 200 | 1 | 10 | 7.0000000 + 200 | 3 | 40 | 7.0000000 + 100 | 1 | 20 | 8.6111111 + 100 | 2 | 40 | 8.6111111 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn+ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and current row ); -- mvd 3->2; 3->4; 3->5; + dt | to_char | pn | to_char | to_char +------------+-------------------+-----+-------------------+------------------- + 1401-06-01 | .0000000 | 800 | 40.0000000 | 1.0000000 + 1401-06-01 | .0000000 | 700 | 40.0000000 | 2.0000000 + 1401-06-01 | 35.5555556 | 600 | 30.0000000 | 3.0000000 + 1401-06-01 | 104.0000000 | 500 | 30.0000000 | 5.0000000 + 1401-06-01 | 104.0000000 | 500 | 30.0000000 | 5.0000000 + 1401-06-01 | 136.7346939 | 400 | 30.0000000 | 7.0000000 + 1401-06-01 | 136.7346939 | 400 | 30.0000000 | 7.0000000 + 1401-05-02 | 165.3125000 | 300 | 30.0000000 | 8.0000000 + 1401-03-01 | 155.5000000 | 200 | 10.0000000 | 10.0000000 + 1401-04-01 | 155.5000000 | 200 | 10.0000000 | 10.0000000 + 1401-05-01 | 170.9722222 | 100 | 10.0000000 | 12.0000000 + 1401-01-01 | 170.9722222 | 100 | 10.0000000 | 12.0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and 0 following ); -- mvd 4->3; + qty | vn | to_char | pn +------+----+-------------------+----- + 1 | 20 | 5220.2500000 | 100 + 1100 | 40 | 5220.2500000 | 100 + 1 | 10 | 3365.6875000 | 200 + 1 | 40 | 3365.6875000 | 200 + 1 | 30 | 2549.6800000 | 300 + 1 | 50 | 829.8571429 | 400 + 1 | 50 | 829.8571429 | 400 + 12 | 30 | 764.4074074 | 500 + 12 | 30 | 764.4074074 | 500 + 12 | 30 | 735.6600000 | 600 + 1 | 40 | 623.8760331 | 700 + 1 | 40 | 537.5833333 | 800 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty-ow_sale.qty) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn*ow_sale.pn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and 4 following ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.pn desc), +win4 as (order by ow_sale.cn asc), +win5 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.pn asc); -- mvd 3->4; 1->5; 1->6; 8->7; 1->9; + pn | pn | vn | to_char | to_char | to_char | to_char | cn | to_char +-----+-----+----+-------------------+-------------------+-------------------+-------------------+----+------------------- + 400 | 400 | 50 | .0000000 | .0000000 | 50.0000000 | 1.0000000 | 1 | .0000000 + 200 | 200 | 10 | 47583.3333333 | .0000000 | 10.0000000 | 2.0000000 | 1 | .0000000 + 500 | 500 | 30 | 42700.0000000 | .0000000 | 40.0000000 | 3.0000000 | 1 | .0000000 + 100 | 100 | 20 | 48421.4876033 | .0000000 | 20.0000000 | 4.0000000 | 1 | .0000000 + 300 | 300 | 30 | 42700.0000000 | .0000000 | 30.0000000 | 5.0000000 | 1 | .0000000 + 100 | 100 | 40 | 62333.3333333 | .0000000 | .0000000 | 6.0000000 | 2 | .0000000 + 400 | 400 | 50 | .0000000 | .0000000 | 50.0000000 | 7.0000000 | 2 | .0000000 + 200 | 200 | 40 | 62333.3333333 | .0000000 | 40.0000000 | 8.0000000 | 3 | .0000000 + 500 | 500 | 30 | 42700.0000000 | .0000000 | 20.0000000 | 9.0000000 | 3 | .0000000 + 600 | 600 | 30 | 42700.0000000 | .0000000 | 30.0000000 | 10.0000000 | 3 | .0000000 + 700 | 700 | 40 | 62333.3333333 | .0000000 | 30.0000000 | 11.0000000 | 4 | .0000000 + 800 | 800 | 40 | 62333.3333333 | .0000000 | 40.0000000 | 12.0000000 | 4 | .0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn+ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and unbounded following ); -- mvd 3->7; + qty | vn | cn | vn | vn | vn | to_char +------+----+----+----+----+----+------------------- + 1 | 10 | 1 | 10 | 10 | 10 | 96666.6666667 + 1 | 20 | 1 | 20 | 20 | 20 | 96666.6666667 + 1 | 30 | 1 | 30 | 30 | 30 | 96666.6666667 + 1 | 50 | 1 | 50 | 50 | 50 | 96666.6666667 + 12 | 30 | 1 | 30 | 30 | 30 | 96666.6666667 + 1100 | 40 | 2 | 40 | 40 | 40 | 96666.6666667 + 1 | 50 | 2 | 50 | 50 | 50 | 96666.6666667 + 1 | 40 | 3 | 40 | 40 | 40 | 96666.6666667 + 12 | 30 | 3 | 30 | 30 | 30 | 96666.6666667 + 12 | 30 | 3 | 30 | 30 | 30 | 96666.6666667 + 1 | 40 | 4 | 40 | 40 | 40 | 96666.6666667 + 1 | 40 | 4 | 40 | 40 | 40 | 96666.6666667 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn-ow_sale.vn),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty+ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty*ow_sale.cn) as int),cast (floor(ow_sale.prc+ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty/ow_sale.pn) as int),cast (floor(ow_sale.prc+ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc), +win4 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 5->6; 8,9,5->7; 9,3,11,5->10; 8,9,5->12; 1->13; 1->14; + cn | cn | vn | cn | pn | to_char | to_char | prc | dt | to_char | qty | to_char | to_char | to_char +----+----+----+----+-----+-------------------+-------------------+------+------------+-------------------+------+-------------------+-------------------+------------------- + 2 | 2 | 40 | 2 | 100 | .0000000 | .0000000 | 2400 | 1401-01-01 | .0000000 | 1100 | 1.0000000 | .0000000 | 1.0000000 + 1 | 1 | 10 | 1 | 200 | .0000000 | .0000000 | 0 | 1401-03-01 | .0000000 | 1 | 1.0000000 | .0000000 | 2.0000000 + 3 | 3 | 40 | 3 | 200 | .0000000 | .0000000 | 0 | 1401-04-01 | .0000000 | 1 | 1.0000000 | .0000000 | 3.0000000 + 1 | 1 | 20 | 1 | 100 | .0000000 | .0000000 | 0 | 1401-05-01 | .0000000 | 1 | 1.0000000 | .0000000 | 4.0000000 + 1 | 1 | 30 | 1 | 300 | .0000000 | .0000000 | 0 | 1401-05-02 | .0000000 | 1 | 1.0000000 | .0000000 | 5.0000000 + 1 | 1 | 50 | 1 | 400 | .0000000 | .0000000 | 0 | 1401-06-01 | .0000000 | 1 | .5000000 | .0000000 | 6.0000000 + 2 | 2 | 50 | 2 | 400 | .0000000 | 400.0000000 | 0 | 1401-06-01 | .0000000 | 1 | 1.0000000 | .0000000 | 7.0000000 + 1 | 1 | 30 | 1 | 500 | .0000000 | .0000000 | 5 | 1401-06-01 | .0000000 | 12 | .5000000 | .0000000 | 8.0000000 + 3 | 3 | 30 | 3 | 500 | .0000000 | .0000000 | 5 | 1401-06-01 | .0000000 | 12 | 1.0000000 | .0000000 | 9.0000000 + 3 | 3 | 30 | 3 | 600 | .0000000 | .0000000 | 5 | 1401-06-01 | .0000000 | 12 | 1.0000000 | .0000000 | 10.0000000 + 4 | 4 | 40 | 4 | 700 | .0000000 | .0000000 | 1 | 1401-06-01 | .0000000 | 1 | 1.0000000 | .0000000 | 11.0000000 + 4 | 4 | 40 | 4 | 800 | .0000000 | .0000000 | 1 | 1401-06-01 | .0000000 | 1 | 1.0000000 | .0000000 | 12.0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 2 preceding and floor(ow_sale.cn) preceding ); -- mvd 3->2; + prc | to_char | cn +------+-------------------+---- + 1 | .0000000 | 4 + 1 | .0000000 | 4 + 5 | .0000000 | 3 + 0 | .0000000 | 3 + 5 | .0000000 | 3 + 0 | .0000000 | 2 + 2400 | .0000000 | 2 + 0 | -56312.0000000 | 1 + 0 | -56312.0000000 | 1 + 5 | -56312.0000000 | 1 + 0 | -56312.0000000 | 1 + 0 | -56312.0000000 | 1 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 3 preceding and 4 preceding ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.vn asc), +win3 as (order by ow_sale.cn desc); -- mvd 1->2; 1->3; 5,6,1->4; 8->7; + pn | to_char | to_char | to_char | dt | vn | to_char | cn +-----+-------------------+-------------------+-------------------+------------+----+-------------------+---- + 800 | .0000000 | .0000000 | 1.0000000 | 1401-06-01 | 40 | 1.0000000 | 4 + 700 | .0000000 | .0000000 | 1.0000000 | 1401-06-01 | 40 | 1.0000000 | 4 + 500 | .0000000 | .0000000 | 1.0000000 | 1401-06-01 | 30 | 2.0000000 | 3 + 200 | .0000000 | .0000000 | 1.0000000 | 1401-04-01 | 40 | 2.0000000 | 3 + 600 | .0000000 | .0000000 | 1.0000000 | 1401-06-01 | 30 | 2.0000000 | 3 + 400 | .0000000 | .0000000 | 2.0000000 | 1401-06-01 | 50 | 3.0000000 | 2 + 100 | .0000000 | .0000000 | 1.0000000 | 1401-01-01 | 40 | 3.0000000 | 2 + 400 | .0000000 | .0000000 | 1.0000000 | 1401-06-01 | 50 | 4.0000000 | 1 + 500 | .0000000 | .0000000 | 2.0000000 | 1401-06-01 | 30 | 4.0000000 | 1 + 300 | .0000000 | .0000000 | 1.0000000 | 1401-05-02 | 30 | 4.0000000 | 1 + 200 | .0000000 | .0000000 | 1.0000000 | 1401-03-01 | 10 | 4.0000000 | 1 + 100 | .0000000 | .0000000 | 1.0000000 | 1401-05-01 | 20 | 4.0000000 | 1 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn*ow_sale.cn),floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.pn) preceding and current row ); -- mvd 3->2; + qty | to_char | vn +------+-------------------+---- + 1 | -18.7500000 | 50 + 1 | -18.7500000 | 50 + 1100 | -66.6111111 | 40 + 1 | -66.6111111 | 40 + 1 | -66.6111111 | 40 + 1 | -66.6111111 | 40 + 12 | -54.9000000 | 30 + 1 | -54.9000000 | 30 + 12 | -54.9000000 | 30 + 12 | -54.9000000 | 30 + 1 | -49.5123967 | 20 + 1 | -40.9166667 | 10 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 3 preceding and current row ); -- mvd 2->5; 2->6; + pn | vn | dt | cn | to_char | to_char +-----+----+------------+----+-------------------+------------------- + 400 | 50 | 1401-06-01 | 2 | .0000000 | 1.0000000 + 400 | 50 | 1401-06-01 | 1 | .0000000 | 1.0000000 + 100 | 40 | 1401-01-01 | 2 | .0000000 | 1.0000000 + 700 | 40 | 1401-06-01 | 4 | .0000000 | 1.0000000 + 200 | 40 | 1401-04-01 | 3 | .0000000 | 1.0000000 + 800 | 40 | 1401-06-01 | 4 | .0000000 | 1.0000000 + 600 | 30 | 1401-06-01 | 3 | .0000000 | 1.0000000 + 300 | 30 | 1401-05-02 | 1 | .0000000 | 1.0000000 + 500 | 30 | 1401-06-01 | 1 | .0000000 | 1.0000000 + 500 | 30 | 1401-06-01 | 3 | .0000000 | 1.0000000 + 100 | 20 | 1401-05-01 | 1 | .0000000 | 1.0000000 + 200 | 10 | 1401-03-01 | 1 | .0000000 | 1.0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn),floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.qty*ow_sale.prc) preceding and floor(ow_sale.cn/ow_sale.cn) following ); -- mvd 2->6; + pn | cn | vn | prc | prc | to_char +-----+----+----+------+------+------------------- + 800 | 4 | 40 | 1 | 1 | -2.1600000 + 700 | 4 | 40 | 1 | 1 | -2.1600000 + 500 | 3 | 30 | 5 | 5 | -341.1428571 + 200 | 3 | 40 | 0 | 0 | -284.4000000 + 600 | 3 | 30 | 5 | 5 | -341.1428571 + 400 | 2 | 50 | 0 | 0 | 241.2244898 + 100 | 2 | 40 | 2400 | 2400 | -37.1250000 + 300 | 1 | 30 | 0 | 0 | .0000000 + 400 | 1 | 50 | 0 | 0 | .0000000 + 500 | 1 | 30 | 5 | 5 | -37.1250000 + 100 | 1 | 20 | 0 | 0 | .0000000 + 200 | 1 | 10 | 0 | 0 | .0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.vn,ow_sale.qty order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.cn/ow_sale.qty) preceding and floor(ow_sale.vn+ow_sale.pn) following ), +win2 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.pn desc); -- mvd 3->2; 5,3,6->4; 5,3,6->7; + cn | to_char | vn | to_char | qty | pn | to_char +----+-------------------+----+-------------------+------+-----+------------------- + 1 | -26358.3333333 | 10 | 1.0000000 | 1 | 200 | 1.0000000 + 1 | -31104.9586777 | 20 | 1.0000000 | 1 | 100 | 1.0000000 + 1 | -38390.0000000 | 30 | 1.0000000 | 1 | 300 | 1.0000000 + 3 | -38390.0000000 | 30 | .3333333 | 12 | 600 | 1.0000000 + 1 | -38390.0000000 | 30 | 1.0000000 | 12 | 500 | 2.0000000 + 3 | -38390.0000000 | 30 | 1.0000000 | 12 | 500 | 2.0000000 + 2 | -61166.6666667 | 40 | 1.0000000 | 1100 | 100 | 1.0000000 + 4 | -61166.6666667 | 40 | .3333333 | 1 | 800 | 1.0000000 + 4 | -61166.6666667 | 40 | .6666667 | 1 | 700 | 2.0000000 + 3 | -61166.6666667 | 40 | 1.0000000 | 1 | 200 | 3.0000000 + 2 | .0000000 | 50 | 1.0000000 | 1 | 400 | 1.0000000 + 1 | .0000000 | 50 | 1.0000000 | 1 | 400 | 1.0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.cn) preceding and unbounded following ); -- mvd 6->5; + qty | cn | vn | cn | to_char | pn +------+----+----+----+-------------------+----- + 1 | 1 | 20 | 1 | 522.7777778 | 100 + 1100 | 2 | 40 | 2 | 522.7777778 | 100 + 1 | 1 | 10 | 1 | -16.5000000 | 200 + 1 | 3 | 40 | 3 | -16.5000000 | 200 + 1 | 1 | 30 | 1 | -30.9375000 | 300 + 1 | 1 | 50 | 1 | -40.4081633 | 400 + 1 | 2 | 50 | 2 | -40.4081633 | 400 + 12 | 1 | 30 | 1 | -26.4000000 | 500 + 12 | 3 | 30 | 3 | -26.4000000 | 500 + 12 | 3 | 30 | 3 | -24.4444444 | 600 + 1 | 4 | 40 | 4 | .0000000 | 700 + 1 | 4 | 40 | 4 | .0000000 | 800 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.pn) preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.vn desc), +win3 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn desc); -- mvd 4->3; 4,6->5; 6,8->7; 4->9; 4->10; + dt | qty | to_char | cn | to_char | vn | to_char | pn | to_char | to_char +------------+------+-------------------+----+-------------------+----+-------------------+-----+-------------------+------------------- + 1401-06-01 | 1 | .0000000 | 4 | 1.0000000 | 40 | .0000000 | 800 | .0000000 | 12.0000000 + 1401-06-01 | 1 | .0000000 | 4 | 1.0000000 | 40 | .0000000 | 700 | .0000000 | 12.0000000 + 1401-06-01 | 12 | .0000000 | 3 | 1.0000000 | 30 | .0000000 | 600 | .0000000 | 12.0000000 + 1401-04-01 | 1 | .0000000 | 3 | 1.0000000 | 40 | .0000000 | 200 | .0000000 | 12.0000000 + 1401-06-01 | 12 | .0000000 | 3 | 1.0000000 | 30 | .0000000 | 500 | .0000000 | 12.0000000 + 1401-06-01 | 1 | .0000000 | 2 | 1.0000000 | 50 | .0000000 | 400 | .0000000 | 12.0000000 + 1401-01-01 | 1100 | .0000000 | 2 | 1.0000000 | 40 | .0000000 | 100 | .0000000 | 12.0000000 + 1401-06-01 | 12 | .0000000 | 1 | 1.0000000 | 30 | .0000000 | 500 | .0000000 | 12.0000000 + 1401-05-02 | 1 | .0000000 | 1 | 1.0000000 | 30 | .0000000 | 300 | .0000000 | 12.0000000 + 1401-05-01 | 1 | .0000000 | 1 | 1.0000000 | 20 | .0000000 | 100 | .0000000 | 12.0000000 + 1401-06-01 | 1 | .0000000 | 1 | 1.0000000 | 50 | .0000000 | 400 | .0000000 | 12.0000000 + 1401-03-01 | 1 | .0000000 | 1 | 1.0000000 | 10 | .0000000 | 200 | .0000000 | 12.0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and current row ); -- mvd 3->2; + vn | to_char | pn +----+-------------------+----- + 20 | 5495.0000000 | 100 + 40 | 5495.0000000 | 100 + 10 | .0000000 | 200 + 40 | .0000000 | 200 + 30 | .0000000 | 300 + 50 | .0000000 | 400 + 50 | .0000000 | 400 + 30 | .0000000 | 500 + 30 | .0000000 | 500 + 30 | .0000000 | 600 + 40 | .0000000 | 700 + 40 | .0000000 | 800 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn),floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty+ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.pn,ow_sale.dt order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc*ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and current row ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 5->4; 2->6; 2,8,9->7; 2->10; 2,8,9->11; 2->12; + prc | cn | cn | to_char | vn | to_char | to_char | dt | pn | to_char | to_char | to_char +------+----+----+-------------------+----+-------------------+-------------------+------------+-----+-------------------+-------------------+------------------- + 2400 | 2 | 2 | 206250.0000000 | 40 | .0000000 | 1.0000000 | 1401-01-01 | 100 | 1.0000000 | 1.0000000 | .0000000 + 0 | 1 | 1 | .0000000 | 10 | .0000000 | 1.0000000 | 1401-03-01 | 200 | 2.0000000 | 1.0000000 | .0000000 + 0 | 3 | 3 | 206250.0000000 | 40 | .0000000 | 1.0000000 | 1401-04-01 | 200 | 3.0000000 | 1.0000000 | .0000000 + 0 | 1 | 1 | .0000000 | 20 | .0000000 | 1.0000000 | 1401-05-01 | 100 | 4.0000000 | 1.0000000 | .0000000 + 0 | 1 | 1 | 67500.0000000 | 30 | .0000000 | 1.0000000 | 1401-05-02 | 300 | 5.0000000 | 1.0000000 | .0000000 + 0 | 1 | 1 | .0000000 | 50 | .0000000 | 1.0000000 | 1401-06-01 | 400 | 6.0000000 | 1.0000000 | .0000000 + 0 | 2 | 2 | .0000000 | 50 | .0000000 | 2.0000000 | 1401-06-01 | 400 | 7.0000000 | 2.0000000 | 15.0000000 + 5 | 1 | 1 | 67500.0000000 | 30 | .0000000 | 1.0000000 | 1401-06-01 | 500 | 8.0000000 | 1.0000000 | 15.0000000 + 5 | 3 | 3 | 67500.0000000 | 30 | .0000000 | 2.0000000 | 1401-06-01 | 500 | 9.0000000 | 2.0000000 | 4.0000000 + 5 | 3 | 3 | 67500.0000000 | 30 | .0000000 | 1.0000000 | 1401-06-01 | 600 | 10.0000000 | 1.0000000 | .0000000 + 1 | 4 | 4 | 206250.0000000 | 40 | .0000000 | 1.0000000 | 1401-06-01 | 700 | 11.0000000 | 1.0000000 | .0000000 + 1 | 4 | 4 | 206250.0000000 | 40 | .0000000 | 1.0000000 | 1401-06-01 | 800 | 12.0000000 | 1.0000000 | .0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn+ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.prc+ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and floor(ow_sale.pn/ow_sale.qty) following ), +win2 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.pn desc), +win3 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc), +win4 as (order by ow_sale.cn asc); -- mvd 2->3; 5,2->4; 7,8,5,2->6; 5,2->9; 7->10; + qty | pn | to_char | to_char | vn | to_char | cn | dt | to_char | to_char +------+-----+-------------------+-------------------+----+-------------------+----+------------+-------------------+------------------- + 1 | 400 | 1794.2857143 | 1.0000000 | 50 | .0000000 | 1 | 1401-06-01 | 1.0000000 | .4166667 + 1 | 100 | 10990.0000000 | 1.0000000 | 20 | .0000000 | 1 | 1401-05-01 | 1.0000000 | .4166667 + 1 | 200 | 6868.7500000 | 1.0000000 | 10 | .0000000 | 1 | 1401-03-01 | 1.0000000 | .4166667 + 1 | 300 | 5275.2000000 | 4.0000000 | 30 | .0000000 | 1 | 1401-05-02 | 1.0000000 | .4166667 + 12 | 500 | .0000000 | 2.0000000 | 30 | .0000000 | 1 | 1401-06-01 | .7500000 | .4166667 + 1100 | 100 | 10990.0000000 | 4.0000000 | 40 | .0000000 | 2 | 1401-01-01 | 1.0000000 | .5833333 + 1 | 400 | 1794.2857143 | 1.0000000 | 50 | .0000000 | 2 | 1401-06-01 | 1.0000000 | .5833333 + 12 | 500 | .0000000 | 2.0000000 | 30 | .0000000 | 3 | 1401-06-01 | .7500000 | .8333333 + 1 | 200 | 6868.7500000 | 3.0000000 | 40 | .0000000 | 3 | 1401-04-01 | .7500000 | .8333333 + 12 | 600 | .0000000 | 1.0000000 | 30 | .0000000 | 3 | 1401-06-01 | .2500000 | .8333333 + 1 | 700 | 1249.7520661 | 2.0000000 | 40 | .0000000 | 4 | 1401-06-01 | .5000000 | 1.0000000 + 1 | 800 | 1045.5555556 | 1.0000000 | 40 | .0000000 | 4 | 1401-06-01 | .2500000 | 1.0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and unbounded following ); -- mvd 1->7; + cn | vn | vn | cn | qty | cn | to_char +----+----+----+----+------+----+------------------- + 1 | 10 | 10 | 1 | 1 | 1 | 91781.5555556 + 1 | 20 | 20 | 1 | 1 | 1 | 91781.5555556 + 1 | 30 | 30 | 1 | 1 | 1 | 91781.5555556 + 1 | 50 | 50 | 1 | 1 | 1 | 91781.5555556 + 1 | 30 | 30 | 1 | 12 | 1 | 91781.5555556 + 2 | 40 | 40 | 2 | 1100 | 2 | 146931.8367347 + 2 | 50 | 50 | 2 | 1 | 2 | 146931.8367347 + 3 | 40 | 40 | 3 | 1 | 3 | 29.0400000 + 3 | 30 | 30 | 3 | 12 | 3 | 29.0400000 + 3 | 30 | 30 | 3 | 12 | 3 | 29.0400000 + 4 | 40 | 40 | 4 | 1 | 4 | .0000000 + 4 | 40 | 40 | 4 | 1 | 4 | .0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.prc order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and unbounded following ), +win2 as (partition by ow_sale.prc order by ow_sale.cn desc); -- mvd 8->7; 10,8->9; 10,8->11; 10,8->12; + dt | qty | pn | pn | pn | dt | to_char | cn | to_char | prc | to_char | to_char +------------+------+-----+-----+-----+------------+-------------------+----+-------------------+------+-------------------+------------------- + 1401-06-01 | 1 | 800 | 800 | 800 | 1401-06-01 | -27123.1388889 | 4 | .0000000 | 1 | 1.0000000 | 1.0000000 + 1401-06-01 | 1 | 700 | 700 | 700 | 1401-06-01 | -27123.1388889 | 4 | .0000000 | 1 | 1.0000000 | 1.0000000 + 1401-06-01 | 12 | 600 | 600 | 600 | 1401-06-01 | -24582.2600000 | 3 | .0000000 | 5 | 1.0000000 | 1.0000000 + 1401-06-01 | 12 | 500 | 500 | 500 | 1401-06-01 | -24582.2600000 | 3 | .0000000 | 5 | 1.0000000 | 1.0000000 + 1401-04-01 | 1 | 200 | 200 | 200 | 1401-04-01 | -24582.2600000 | 3 | .0000000 | 0 | 1.0000000 | 1.0000000 + 1401-01-01 | 1100 | 100 | 100 | 100 | 1401-01-01 | -28708.7142857 | 2 | .0000000 | 2400 | 1.0000000 | 1.0000000 + 1401-06-01 | 1 | 400 | 400 | 400 | 1401-06-01 | -28708.7142857 | 2 | .2000000 | 0 | 2.0000000 | 2.0000000 + 1401-06-01 | 1 | 400 | 400 | 400 | 1401-06-01 | 440.0000000 | 1 | .4000000 | 0 | 3.0000000 | 3.0000000 + 1401-05-01 | 1 | 100 | 100 | 100 | 1401-05-01 | 440.0000000 | 1 | .4000000 | 0 | 3.0000000 | 3.0000000 + 1401-05-02 | 1 | 300 | 300 | 300 | 1401-05-02 | 440.0000000 | 1 | .4000000 | 0 | 3.0000000 | 3.0000000 + 1401-06-01 | 12 | 500 | 500 | 500 | 1401-06-01 | 440.0000000 | 1 | 1.0000000 | 5 | 3.0000000 | 2.0000000 + 1401-03-01 | 1 | 200 | 200 | 200 | 1401-03-01 | 440.0000000 | 1 | .4000000 | 0 | 3.0000000 | 3.0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 1 following and 0 following ); -- mvd 1->4; + cn | dt | prc | to_char +----+------------+------+------------------- + 4 | 1401-06-01 | 1 | .0000000 + 4 | 1401-06-01 | 1 | .0000000 + 3 | 1401-06-01 | 5 | .0000000 + 3 | 1401-06-01 | 5 | .0000000 + 3 | 1401-04-01 | 0 | .0000000 + 2 | 1401-06-01 | 0 | .0000000 + 2 | 1401-01-01 | 2400 | .0000000 + 1 | 1401-05-02 | 0 | .0000000 + 1 | 1401-06-01 | 5 | .0000000 + 1 | 1401-06-01 | 0 | .0000000 + 1 | 1401-03-01 | 0 | .0000000 + 1 | 1401-05-01 | 0 | .0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn*ow_sale.pn),floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.cn)) OVER(order by ow_sale.pn asc range between 2 following and 2 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 2 following and 2 following ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.prc,ow_sale.prc,ow_sale.pn order by ow_sale.pn desc), +win4 as (order by ow_sale.vn desc); -- mvd 7->6; 7->8; 7->9; 2->10; 3,12,7->11; 14->13; + qty | cn | prc | cn | cn | to_char | pn | to_char | to_char | to_char | to_char | dt | to_char | vn +------+----+------+----+----+-------------------+-----+-------------------+-------------------+-------------------+-------------------+------------+-------------------+---- + 1 | 2 | 0 | 2 | 2 | .0000000 | 400 | .0000000 | .0000000 | .5833333 | 1.0000000 | 1401-06-01 | .1666667 | 50 + 1 | 1 | 0 | 1 | 1 | .0000000 | 400 | .0000000 | .0000000 | 1.0000000 | 2.0000000 | 1401-06-01 | .1666667 | 50 + 1 | 3 | 0 | 3 | 3 | .0000000 | 200 | .0000000 | .0000000 | .4166667 | 1.0000000 | 1401-04-01 | .5000000 | 40 + 1100 | 2 | 2400 | 2 | 2 | .0000000 | 100 | .0000000 | .0000000 | .5833333 | 1.0000000 | 1401-01-01 | .5000000 | 40 + 1 | 4 | 1 | 4 | 4 | .0000000 | 700 | .0000000 | .0000000 | .1666667 | 1.0000000 | 1401-06-01 | .5000000 | 40 + 1 | 4 | 1 | 4 | 4 | .0000000 | 800 | .0000000 | .0000000 | .1666667 | 1.0000000 | 1401-06-01 | .5000000 | 40 + 12 | 3 | 5 | 3 | 3 | .0000000 | 500 | .0000000 | .0000000 | .4166667 | 2.0000000 | 1401-06-01 | .8333333 | 30 + 12 | 3 | 5 | 3 | 3 | .0000000 | 600 | .0000000 | .0000000 | .4166667 | 1.0000000 | 1401-06-01 | .8333333 | 30 + 1 | 1 | 0 | 1 | 1 | .0000000 | 300 | .0000000 | .0000000 | 1.0000000 | 1.0000000 | 1401-05-02 | .8333333 | 30 + 12 | 1 | 5 | 1 | 1 | .0000000 | 500 | .0000000 | .0000000 | 1.0000000 | 1.0000000 | 1401-06-01 | .8333333 | 30 + 1 | 1 | 0 | 1 | 1 | .0000000 | 100 | .0000000 | .0000000 | 1.0000000 | 1.0000000 | 1401-05-01 | .9166667 | 20 + 1 | 1 | 0 | 1 | 1 | .0000000 | 200 | .0000000 | .0000000 | 1.0000000 | 1.0000000 | 1401-03-01 | 1.0000000 | 10 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 4 following and unbounded following ); -- mvd 3->2; + qty | to_char | vn +------+-------------------+---- + 1 | 416.5289256 | 10 + 1 | -144.0000000 | 20 + 12 | -88.8888889 | 30 + 1 | -88.8888889 | 30 + 12 | -88.8888889 | 30 + 12 | -88.8888889 | 30 + 1100 | .0000000 | 40 + 1 | .0000000 | 40 + 1 | .0000000 | 40 + 1 | .0000000 | 40 + 1 | .0000000 | 50 + 1 | .0000000 | 50 +(12 rows) + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc/ow_sale.vn),floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(order by ow_sale.cn asc range between floor(ow_sale.cn) following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.cn) following and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.prc order by ow_sale.cn asc), +win3 as (order by ow_sale.vn desc); -- mvd 3->2; 3->4; 6,7,3,8,9->5; 3->10; 1->11; + vn | to_char | cn | to_char | to_char | prc | dt | qty | pn | to_char | to_char +----+-------------------+----+-------------------+-------------------+------+------------+------+-----+-------------------+------------------- + 50 | -3171.4285714 | 1 | 30.0000000 | 1.0000000 | 0 | 1401-06-01 | 1 | 400 | 2.0000000 | 1.0000000 + 50 | .0000000 | 2 | 40.0000000 | 1.0000000 | 0 | 1401-06-01 | 1 | 400 | 4.0000000 | 1.0000000 + 40 | .0000000 | 4 | .0000000 | 1.0000000 | 1 | 1401-06-01 | 1 | 700 | .0000000 | 2.0000000 + 40 | .0000000 | 2 | 40.0000000 | 1.0000000 | 2400 | 1401-01-01 | 1100 | 100 | 4.0000000 | 2.0000000 + 40 | .0000000 | 3 | .0000000 | 1.0000000 | 0 | 1401-04-01 | 1 | 200 | .0000000 | 2.0000000 + 40 | .0000000 | 4 | .0000000 | 1.0000000 | 1 | 1401-06-01 | 1 | 800 | .0000000 | 2.0000000 + 30 | -3171.4285714 | 1 | 30.0000000 | 1.0000000 | 5 | 1401-06-01 | 12 | 500 | 2.0000000 | 3.0000000 + 30 | .0000000 | 3 | .0000000 | 1.0000000 | 5 | 1401-06-01 | 12 | 500 | .0000000 | 3.0000000 + 30 | -3171.4285714 | 1 | 30.0000000 | 1.0000000 | 0 | 1401-05-02 | 1 | 300 | 2.0000000 | 3.0000000 + 30 | .0000000 | 3 | .0000000 | 1.0000000 | 5 | 1401-06-01 | 12 | 600 | .0000000 | 3.0000000 + 20 | -3171.4285714 | 1 | 30.0000000 | 1.0000000 | 0 | 1401-05-01 | 1 | 100 | 2.0000000 | 4.0000000 + 10 | -3171.4285714 | 1 | 30.0000000 | 1.0000000 | 0 | 1401-03-01 | 1 | 200 | 2.0000000 | 5.0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc+ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.pn asc rows unbounded preceding ); -- mvd 1,3,4->2; + cn | to_char | vn | pn +----+-------------------+----+----- + 2 | .0000000 | 40 | 100 + 1 | 36000.0000000 | 10 | 200 + 3 | 16000.0000000 | 40 | 200 + 1 | 15000.0000000 | 20 | 100 + 1 | 11520.0000000 | 30 | 300 + 1 | 6666.6666667 | 50 | 400 + 2 | 3918.3673469 | 50 | 400 + 1 | 3745.3125000 | 30 | 500 + 3 | 3548.1481481 | 30 | 500 + 3 | 3351.0000000 | 30 | 600 + 4 | 2768.0991736 | 40 | 700 + 4 | 2324.8611111 | 40 | 800 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.pn asc rows unbounded preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,5->4; 3->6; + dt | vn | cn | to_char | pn | to_char +------------+----+----+-------------------+-----+------------------- + 1401-01-01 | 40 | 2 | .0000000 | 100 | .0000000 + 1401-03-01 | 10 | 1 | -32.5000000 | 200 | 1100.0000000 + 1401-04-01 | 40 | 3 | -10.0000000 | 200 | .0000000 + 1401-05-01 | 20 | 1 | 3.1250000 | 100 | 1.0000000 + 1401-05-02 | 30 | 1 | -15.2000000 | 300 | 1.0000000 + 1401-06-01 | 50 | 1 | -29.1666667 | 400 | 1.0000000 + 1401-06-01 | 50 | 2 | -14.8979592 | 400 | 1.0000000 + 1401-06-01 | 30 | 1 | -29.3750000 | 500 | 1.0000000 + 1401-06-01 | 30 | 3 | 7.7777778 | 500 | 1.0000000 + 1401-06-01 | 30 | 3 | 43.4000000 | 600 | 1.0000000 + 1401-06-01 | 40 | 4 | 105.4545455 | 700 | 1.0000000 + 1401-06-01 | 40 | 4 | 162.3611111 | 800 | 12.0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty-ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.cn asc rows floor(ow_sale.pn+ow_sale.vn) preceding ); -- mvd 5->4; + prc | pn | vn | to_char | cn +------+-----+----+-------------------+---- + 2400 | 100 | 40 | .0000000 | 2 + 0 | 200 | 10 | 719400.0000000 | 1 + 0 | 200 | 40 | 639466.6666667 | 3 + 0 | 100 | 20 | 524550.0000000 | 1 + 0 | 300 | 30 | 460416.0000000 | 1 + 0 | 400 | 50 | 413000.0000000 | 1 + 0 | 400 | 50 | 371951.0204082 | 2 + 5 | 500 | 30 | 340354.5312500 | 1 + 5 | 500 | 30 | 312836.7901235 | 3 + 5 | 600 | 30 | 291333.7000000 | 3 + 1 | 700 | 40 | 274452.9173554 | 4 + 1 | 800 | 40 | 260588.4444444 | 4 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn-ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows 3 preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 2->5; 2->6; + pn | cn | qty | qty | to_char | to_char +-----+----+------+------+-------------------+------------------- + 800 | 4 | 1 | 1 | -49.7500000 | 1.0000000 + 700 | 4 | 1 | 1 | -67.5625000 | 1.0000000 + 500 | 3 | 12 | 12 | -11.8125000 | 2.0000000 + 200 | 3 | 1 | 1 | .6666667 | 2.0000000 + 600 | 3 | 12 | 12 | -24.3125000 | 2.0000000 + 400 | 2 | 1 | 1 | -24.8125000 | 3.0000000 + 100 | 2 | 1100 | 1100 | .0000000 | 3.0000000 + 500 | 1 | 12 | 12 | .1875000 | 4.0000000 + 400 | 1 | 1 | 1 | 25.7500000 | 4.0000000 + 300 | 1 | 1 | 1 | .7500000 | 4.0000000 + 100 | 1 | 1 | 1 | -11.8125000 | 4.0000000 + 200 | 1 | 1 | 1 | 25.2500000 | 4.0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.pn asc rows current row ); -- mvd 3,4,5->2; + dt | to_char | cn | vn | pn +------------+-------------------+----+----+----- + 1401-01-01 | .0000000 | 2 | 40 | 100 + 1401-03-01 | .0000000 | 1 | 10 | 200 + 1401-04-01 | .0000000 | 3 | 40 | 200 + 1401-05-01 | .0000000 | 1 | 20 | 100 + 1401-05-02 | .0000000 | 1 | 30 | 300 + 1401-06-01 | .0000000 | 1 | 50 | 400 + 1401-06-01 | .0000000 | 2 | 50 | 400 + 1401-06-01 | .0000000 | 1 | 30 | 500 + 1401-06-01 | .0000000 | 3 | 30 | 500 + 1401-06-01 | .0000000 | 3 | 30 | 600 + 1401-06-01 | .0000000 | 4 | 40 | 700 + 1401-06-01 | .0000000 | 4 | 40 | 800 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn),floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty/ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.cn asc rows current row ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc), +win4 as (order by ow_sale.pn asc); -- mvd 1,5->4; 5->6; 5->7; 9->8; 5->10; + cn | qty | dt | to_char | vn | to_char | to_char | to_char | pn | to_char +----+------+------------+-------------------+----+-------------------+-------------------+-------------------+-----+------------------- + 2 | 1100 | 1401-01-01 | .0000000 | 40 | .0000000 | .0000000 | 1.0000000 | 100 | .0000000 + 1 | 1 | 1401-05-01 | .0000000 | 20 | .0000000 | .0000000 | 1.0000000 | 100 | .2727273 + 1 | 1 | 1401-03-01 | .0000000 | 10 | 550.0000000 | .0000000 | 2.0000000 | 200 | .0909091 + 3 | 1 | 1401-04-01 | .0000000 | 40 | .0000000 | 1.0000000 | 2.0000000 | 200 | .1818182 + 1 | 1 | 1401-05-02 | .0000000 | 30 | 1.0000000 | 12.0000000 | 3.0000000 | 300 | .3636364 + 2 | 1 | 1401-06-01 | .0000000 | 50 | 1.0000000 | .0000000 | 4.0000000 | 400 | .5454545 + 1 | 1 | 1401-06-01 | .0000000 | 50 | 1.0000000 | 1.0000000 | 4.0000000 | 400 | .4545455 + 1 | 12 | 1401-06-01 | .0000000 | 30 | .0000000 | .0000000 | 5.0000000 | 500 | .6363636 + 3 | 12 | 1401-06-01 | .0000000 | 30 | 1.0000000 | .0000000 | 5.0000000 | 500 | .7272727 + 3 | 12 | 1401-06-01 | .0000000 | 30 | .0000000 | .0000000 | 6.0000000 | 600 | .8181818 + 4 | 1 | 1401-06-01 | .0000000 | 40 | .0000000 | 1.0000000 | 7.0000000 | 700 | .9090909 + 4 | 1 | 1401-06-01 | .0000000 | 40 | 12.0000000 | .0000000 | 8.0000000 | 800 | 1.0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.cn+ow_sale.cn) preceding ); -- mvd 5->4; + pn | vn | vn | to_char | cn +-----+----+----+-------------------+---- + 100 | 40 | 40 | .0000000 | 2 + 200 | 10 | 10 | .0000000 | 1 + 200 | 40 | 40 | .0000000 | 3 + 100 | 20 | 20 | -60000.0000000 | 1 + 300 | 30 | 30 | -53333.3333333 | 1 + 400 | 50 | 50 | -30000.0000000 | 1 + 400 | 50 | 50 | -53333.3333333 | 2 + 500 | 30 | 30 | -46666.6666667 | 1 + 500 | 30 | 30 | -53333.3333333 | 3 + 600 | 30 | 30 | -30000.0000000 | 3 + 700 | 40 | 40 | -53333.3333333 | 4 + 800 | 40 | 40 | -30000.0000000 | 4 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc,ow_sale.vn asc rows between unbounded preceding and 1 preceding ), +win2 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.cn desc), +win3 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.dt,ow_sale.qty order by ow_sale.cn asc); -- mvd 7->6; 1,9,4->8; 1,9,3->10; + cn | cn | qty | pn | qty | to_char | vn | to_char | dt | to_char +----+----+------+-----+------+-------------------+----+-------------------+------------+------------------- + 2 | 2 | 1100 | 100 | 1100 | .0000000 | 40 | 1.0000000 | 1401-01-01 | 1.0000000 + 1 | 1 | 1 | 200 | 1 | .0000000 | 10 | 1.0000000 | 1401-03-01 | 1.0000000 + 3 | 3 | 1 | 200 | 1 | -60000.0000000 | 40 | 1.0000000 | 1401-04-01 | 1.0000000 + 1 | 1 | 1 | 100 | 1 | -53333.3333333 | 20 | 1.0000000 | 1401-05-01 | 1.0000000 + 1 | 1 | 1 | 300 | 1 | -30000.0000000 | 30 | 1.0000000 | 1401-05-02 | 1.0000000 + 1 | 1 | 1 | 400 | 1 | -38400.0000000 | 50 | 2.0000000 | 1401-06-01 | 1.0000000 + 2 | 2 | 1 | 400 | 1 | -46666.6666667 | 50 | 1.0000000 | 1401-06-01 | 2.0000000 + 1 | 1 | 12 | 500 | 12 | -48979.5918367 | 30 | 2.0000000 | 1401-06-01 | 1.0000000 + 3 | 3 | 12 | 500 | 12 | -52359.3750000 | 30 | 1.0000000 | 1401-06-01 | 3.0000000 + 3 | 3 | 12 | 600 | 12 | -53111.1111111 | 30 | 1.0000000 | 1401-06-01 | 2.0000000 + 4 | 4 | 1 | 700 | 1 | -54895.0000000 | 40 | 1.0000000 | 1401-06-01 | 4.0000000 + 4 | 4 | 1 | 800 | 1 | -57258.6776860 | 40 | 1.0000000 | 1401-06-01 | 3.0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 4->3; + vn | vn | to_char | cn +----+----+-------------------+---- + 40 | 40 | .0000000 | 2 + 10 | 10 | -9757.5000000 | 1 + 40 | 40 | -4336.6666667 | 3 + 20 | 20 | -4065.6250000 | 1 + 30 | 30 | -3122.4000000 | 1 + 50 | 50 | -1806.9444444 | 1 + 50 | 50 | -1062.0408163 | 2 + 30 | 30 | -1019.2187500 | 1 + 30 | 30 | -968.1481481 | 3 + 30 | 30 | -916.1000000 | 3 + 40 | 40 | -759.1735537 | 4 + 40 | 40 | -639.6527778 | 4 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and current row ); -- mvd 5,1->4; 5,1->6; + pn | dt | pn | to_char | cn | to_char +-----+------------+-----+-------------------+----+------------------- + 100 | 1401-01-01 | 100 | .0000000 | 2 | 1.0000000 + 200 | 1401-03-01 | 200 | -60000.0000000 | 1 | 2.0000000 + 200 | 1401-04-01 | 200 | -53333.3333333 | 3 | 3.0000000 + 100 | 1401-05-01 | 100 | -30000.0000000 | 1 | 4.0000000 + 300 | 1401-05-02 | 300 | -38400.0000000 | 1 | 5.0000000 + 400 | 1401-06-01 | 400 | -46666.6666667 | 1 | 6.0000000 + 400 | 1401-06-01 | 400 | -48979.5918367 | 2 | 7.0000000 + 500 | 1401-06-01 | 500 | -52359.3750000 | 1 | 8.0000000 + 500 | 1401-06-01 | 500 | -53111.1111111 | 3 | 9.0000000 + 600 | 1401-06-01 | 600 | -54895.0000000 | 3 | 10.0000000 + 700 | 1401-06-01 | 700 | -57258.6776860 | 4 | 11.0000000 + 800 | 1401-06-01 | 800 | -59775.0000000 | 4 | 12.0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn*ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between unbounded preceding and 4 following ); -- mvd 4->3; + pn | pn | to_char | vn +-----+-----+-------------------+---- + 100 | 100 | 112.0000000 | 40 + 200 | 200 | 83.3333333 | 10 + 200 | 200 | 102.0408163 | 40 + 100 | 100 | 81.2500000 | 20 + 300 | 300 | 237.0370370 | 30 + 400 | 400 | 368.0000000 | 50 + 400 | 400 | 727.2727273 | 50 + 500 | 500 | 1027.7777778 | 30 + 500 | 500 | 1027.7777778 | 30 + 600 | 600 | 1027.7777778 | 30 + 700 | 700 | 1027.7777778 | 40 + 800 | 800 | 1027.7777778 | 40 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc/ow_sale.vn),floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn asc rows between unbounded preceding and 0 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn asc rows between unbounded preceding and 0 following ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.qty order by ow_sale.cn asc); -- mvd 1,5->6; 1,5->7; 4->8; 4,1,10->9; + vn | prc | vn | cn | pn | to_char | to_char | to_char | to_char | qty +----+------+----+----+-----+-------------------+-------------------+-------------------+-------------------+------ + 40 | 1 | 40 | 4 | 800 | .0000000 | 2000.0000000 | 1.0000000 | 3.0000000 | 1 + 40 | 1 | 40 | 4 | 700 | .0000000 | 2000.0000000 | 1.0000000 | 2.0000000 | 1 + 30 | 5 | 30 | 3 | 500 | .0000000 | 2000.0000000 | 3.0000000 | 3.0000000 | 12 + 40 | 0 | 40 | 3 | 200 | .0000000 | 2000.0000000 | 3.0000000 | 1.0000000 | 1 + 30 | 5 | 30 | 3 | 600 | .0000000 | 2000.0000000 | 3.0000000 | 2.0000000 | 12 + 50 | 0 | 50 | 2 | 400 | .0000000 | 2000.0000000 | 6.0000000 | 2.0000000 | 1 + 40 | 2400 | 40 | 2 | 100 | .0000000 | 4000.0000000 | 6.0000000 | 1.0000000 | 1100 + 30 | 5 | 30 | 1 | 500 | .0000000 | 2000.0000000 | 8.0000000 | 1.0000000 | 12 + 50 | 0 | 50 | 1 | 400 | .0000000 | 2000.0000000 | 8.0000000 | 1.0000000 | 1 + 30 | 0 | 30 | 1 | 300 | .0000000 | 2000.0000000 | 8.0000000 | 1.0000000 | 1 + 20 | 0 | 20 | 1 | 100 | .0000000 | 2000.0000000 | 8.0000000 | 1.0000000 | 1 + 10 | 0 | 10 | 1 | 200 | .0000000 | 2000.0000000 | 8.0000000 | 1.0000000 | 1 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn-ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 5,6->4; + dt | prc | dt | to_char | cn | vn +------------+------+------------+-------------------+----+---- + 1401-01-01 | 2400 | 1401-01-01 | -260588.4444444 | 2 | 40 + 1401-03-01 | 0 | 1401-03-01 | -260588.4444444 | 1 | 10 + 1401-04-01 | 0 | 1401-04-01 | -260588.4444444 | 3 | 40 + 1401-05-01 | 0 | 1401-05-01 | -260588.4444444 | 1 | 20 + 1401-05-02 | 0 | 1401-05-02 | -260588.4444444 | 1 | 30 + 1401-06-01 | 0 | 1401-06-01 | -260588.4444444 | 1 | 50 + 1401-06-01 | 0 | 1401-06-01 | -260588.4444444 | 2 | 50 + 1401-06-01 | 5 | 1401-06-01 | -260588.4444444 | 1 | 30 + 1401-06-01 | 5 | 1401-06-01 | -260588.4444444 | 3 | 30 + 1401-06-01 | 5 | 1401-06-01 | -260588.4444444 | 3 | 30 + 1401-06-01 | 1 | 1401-06-01 | -260588.4444444 | 4 | 40 + 1401-06-01 | 1 | 1401-06-01 | -260588.4444444 | 4 | 40 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.pn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc,ow_sale.vn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.cn asc); -- mvd 2->6; 2->7; 3,9,2->8; + pn | vn | cn | cn | cn | to_char | to_char | to_char | dt +-----+----+----+----+----+-------------------+-------------------+-------------------+------------ + 100 | 40 | 2 | 2 | 2 | 1863402.7777778 | 12.0000000 | 1.0000000 | 1401-01-01 + 200 | 10 | 1 | 1 | 1 | 1863402.7777778 | 12.0000000 | 1.0000000 | 1401-03-01 + 200 | 40 | 3 | 3 | 3 | 1863402.7777778 | 12.0000000 | 1.0000000 | 1401-04-01 + 100 | 20 | 1 | 1 | 1 | 1863402.7777778 | 12.0000000 | 1.0000000 | 1401-05-01 + 300 | 30 | 1 | 1 | 1 | 1863402.7777778 | 12.0000000 | 1.0000000 | 1401-05-02 + 400 | 50 | 1 | 1 | 1 | 1863402.7777778 | 12.0000000 | 1.0000000 | 1401-06-01 + 400 | 50 | 2 | 2 | 2 | 1863402.7777778 | 12.0000000 | 1.0000000 | 1401-06-01 + 500 | 30 | 1 | 1 | 1 | 1863402.7777778 | 12.0000000 | 1.0000000 | 1401-06-01 + 500 | 30 | 3 | 3 | 3 | 1863402.7777778 | 12.0000000 | 2.0000000 | 1401-06-01 + 600 | 30 | 3 | 3 | 3 | 1863402.7777778 | 12.0000000 | 1.0000000 | 1401-06-01 + 700 | 40 | 4 | 4 | 4 | 1863402.7777778 | 12.0000000 | 2.0000000 | 1401-06-01 + 800 | 40 | 4 | 4 | 4 | 1863402.7777778 | 12.0000000 | 1.0000000 | 1401-06-01 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between 2 preceding and floor(ow_sale.cn) preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 6->7; 4->8; + pn | pn | dt | cn | qty | vn | to_char | to_char +-----+-----+------------+----+------+----+-------------------+------------------- + 800 | 800 | 1401-06-01 | 4 | 1 | 40 | .0000000 | 1.0000000 + 700 | 700 | 1401-06-01 | 4 | 1 | 40 | .0000000 | 1.0000000 + 500 | 500 | 1401-06-01 | 3 | 12 | 30 | .0000000 | 3.0000000 + 200 | 200 | 1401-04-01 | 3 | 1 | 40 | .0000000 | 3.0000000 + 600 | 600 | 1401-06-01 | 3 | 12 | 30 | .0000000 | 3.0000000 + 400 | 400 | 1401-06-01 | 2 | 1 | 50 | .0000000 | 6.0000000 + 100 | 100 | 1401-01-01 | 2 | 1100 | 40 | .0000000 | 6.0000000 + 500 | 500 | 1401-06-01 | 1 | 12 | 30 | .0000000 | 8.0000000 + 400 | 400 | 1401-06-01 | 1 | 1 | 50 | 10000.0000000 | 8.0000000 + 300 | 300 | 1401-05-02 | 1 | 1 | 30 | 2500.0000000 | 8.0000000 + 100 | 100 | 1401-05-01 | 1 | 1 | 20 | .0000000 | 8.0000000 + 200 | 200 | 1401-03-01 | 1 | 1 | 10 | .0000000 | 8.0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty+ow_sale.qty),floor(ow_sale.pn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between 1 preceding and current row ); -- mvd 4->3; + pn | cn | to_char | vn +-----+----+-------------------+---- + 100 | 2 | .0000000 | 40 + 200 | 1 | .0000000 | 10 + 200 | 3 | .0000000 | 40 + 100 | 1 | .0000000 | 20 + 300 | 1 | .0000000 | 30 + 400 | 1 | .0000000 | 50 + 400 | 2 | .0000000 | 50 + 500 | 1 | .0000000 | 30 + 500 | 3 | .0000000 | 30 + 600 | 3 | .0000000 | 30 + 700 | 4 | .0000000 | 40 + 800 | 4 | .0000000 | 40 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn-ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.pn asc rows between 4 preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between 4 preceding and current row ); -- mvd 2->3; 2->4; + cn | pn | to_char | to_char +----+-----+-------------------+------------------- + 2 | 100 | .0000000 | 1.0000000 + 1 | 200 | 18000.0000000 | 2.0000000 + 3 | 200 | 8000.0000000 | 3.0000000 + 1 | 100 | 7500.0000000 | 4.0000000 + 1 | 300 | 5760.0000000 | 5.0000000 + 1 | 400 | .0000000 | 5.0000000 + 2 | 400 | .0000000 | 5.0000000 + 1 | 500 | -6.0000000 | 5.0000000 + 3 | 500 | -16.0000000 | 5.0000000 + 3 | 600 | -24.0000000 | 5.0000000 + 4 | 700 | -17.2000000 | 5.0000000 + 4 | 800 | -9.6000000 | 5.0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty+ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.vn) preceding and floor(ow_sale.cn+ow_sale.vn) following ); -- mvd 3->5; + cn | prc | vn | vn | to_char +----+------+----+----+------------------- + 2 | 2400 | 40 | 40 | 292595.0000000 + 1 | 0 | 10 | 10 | 292595.0000000 + 3 | 0 | 40 | 40 | 292595.0000000 + 1 | 0 | 20 | 20 | 292595.0000000 + 1 | 0 | 30 | 30 | 292595.0000000 + 1 | 0 | 50 | 50 | 292595.0000000 + 2 | 0 | 50 | 50 | 292595.0000000 + 1 | 5 | 30 | 30 | 292595.0000000 + 3 | 5 | 30 | 30 | 292595.0000000 + 3 | 5 | 30 | 30 | 292595.0000000 + 4 | 1 | 40 | 40 | 292595.0000000 + 4 | 1 | 40 | 40 | 292595.0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty+ow_sale.pn),floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.pn desc rows between 1 preceding and unbounded following ); -- mvd 3,1->2; + pn | to_char | vn +-----+-------------------+---- + 100 | 124322.2222222 | 40 + 200 | 124322.2222222 | 10 + 200 | 193861.1570248 | 40 + 100 | 190220.0000000 | 20 + 300 | 192592.5925926 | 30 + 400 | 154085.9375000 | 50 + 400 | 134481.6326531 | 50 + 500 | 120027.7777778 | 30 + 500 | 100224.0000000 | 30 + 600 | 72537.5000000 | 30 + 700 | 43733.3333333 | 40 + 800 | 10000.0000000 | 40 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 0 preceding and unbounded following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.pn order by ow_sale.vn asc); -- mvd 2->3; 2->4; 6,7->5; + qty | cn | to_char | to_char | to_char | vn | pn +------+----+-------------------+-------------------+-------------------+----+----- + 1 | 1 | 26.0408163 | 1.0000000 | 1.0000000 | 50 | 400 + 1 | 1 | 23.2727273 | 1.0000000 | 1.0000000 | 10 | 200 + 12 | 1 | 20.2400000 | 1.0000000 | 1.0000000 | 30 | 500 + 1 | 1 | 25.2592593 | 1.0000000 | 1.0000000 | 20 | 100 + 1 | 1 | 25.9531250 | 1.0000000 | 1.0000000 | 30 | 300 + 1100 | 2 | 401560.7222222 | 2.0000000 | 2.0000000 | 40 | 100 + 1 | 2 | 24.7500000 | 2.0000000 | 1.0000000 | 50 | 400 + 1 | 3 | 24.3100000 | 3.0000000 | 2.0000000 | 40 | 200 + 12 | 3 | 30.2500000 | 3.0000000 | 1.0000000 | 30 | 500 + 12 | 3 | 26.8888889 | 3.0000000 | 1.0000000 | 30 | 600 + 1 | 4 | .0000000 | 4.0000000 | 1.0000000 | 40 | 700 + 1 | 4 | .0000000 | 4.0000000 | 1.0000000 | 40 | 800 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows between current row and current row ); -- mvd 1,5->4; + cn | vn | dt | to_char | pn +----+----+------------+-------------------+----- + 2 | 40 | 1401-01-01 | .0000000 | 100 + 1 | 10 | 1401-03-01 | .0000000 | 200 + 3 | 40 | 1401-04-01 | .0000000 | 200 + 1 | 20 | 1401-05-01 | .0000000 | 100 + 1 | 30 | 1401-05-02 | .0000000 | 300 + 1 | 50 | 1401-06-01 | .0000000 | 400 + 2 | 50 | 1401-06-01 | .0000000 | 400 + 1 | 30 | 1401-06-01 | .0000000 | 500 + 3 | 30 | 1401-06-01 | .0000000 | 500 + 3 | 30 | 1401-06-01 | .0000000 | 600 + 4 | 40 | 1401-06-01 | .0000000 | 700 + 4 | 40 | 1401-06-01 | .0000000 | 800 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn*ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn asc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn+ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn asc rows between current row and current row ), +win2 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 5,3->4; 5,3->6; 1,8,5->7; 1->9; 5,3->10; + cn | cn | pn | to_char | vn | to_char | to_char | dt | to_char | to_char +----+----+-----+-------------------+----+-------------------+-------------------+------------+-------------------+------------------- + 2 | 2 | 100 | .0000000 | 40 | 4000.0000000 | 1.0000000 | 1401-01-01 | .0000000 | 1.0000000 + 1 | 1 | 200 | .0000000 | 10 | 2000.0000000 | 1.0000000 | 1401-03-01 | 200.0000000 | 1.0000000 + 3 | 3 | 200 | .0000000 | 40 | 8000.0000000 | 1.0000000 | 1401-04-01 | 400.0000000 | 1.0000000 + 1 | 1 | 100 | .0000000 | 20 | 2000.0000000 | 1.0000000 | 1401-05-01 | 300.0000000 | 1.0000000 + 1 | 1 | 300 | .0000000 | 30 | 9000.0000000 | 1.0000000 | 1401-05-02 | 400.0000000 | 1.0000000 + 1 | 1 | 400 | .0000000 | 50 | 20000.0000000 | 2.0000000 | 1401-06-01 | 400.0000000 | 1.0000000 + 2 | 2 | 400 | .0000000 | 50 | 20000.0000000 | 1.0000000 | 1401-06-01 | 500.0000000 | 1.0000000 + 1 | 1 | 500 | .0000000 | 30 | 15000.0000000 | 3.0000000 | 1401-06-01 | .0000000 | 1.0000000 + 3 | 3 | 500 | .0000000 | 30 | 15000.0000000 | 2.0000000 | 1401-06-01 | .0000000 | 1.0000000 + 3 | 3 | 600 | .0000000 | 30 | 18000.0000000 | 1.0000000 | 1401-06-01 | .0000000 | 1.0000000 + 4 | 4 | 700 | .0000000 | 40 | 28000.0000000 | 2.0000000 | 1401-06-01 | .0000000 | 1.0000000 + 4 | 4 | 800 | .0000000 | 40 | 32000.0000000 | 1.0000000 | 1401-06-01 | .0000000 | 1.0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn*ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.vn desc rows between current row and 8 following ); -- mvd 1,5->6; + vn | cn | cn | qty | pn | to_char +----+----+----+------+-----+------------------- + 40 | 2 | 2 | 1100 | 100 | 4488.8888889 + 10 | 1 | 1 | 1 | 200 | 1224.6913580 + 40 | 3 | 3 | 1 | 200 | 625.9259259 + 20 | 1 | 1 | 1 | 100 | 503.7037037 + 30 | 1 | 1 | 1 | 300 | 165.6250000 + 50 | 1 | 1 | 1 | 400 | -355.1020408 + 50 | 2 | 2 | 1 | 400 | -1230.5555556 + 30 | 1 | 1 | 12 | 500 | -2100.0000000 + 30 | 3 | 3 | 12 | 500 | -1462.5000000 + 30 | 3 | 3 | 12 | 600 | -1433.3333333 + 40 | 4 | 4 | 1 | 700 | .0000000 + 40 | 4 | 4 | 1 | 800 | .0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty*ow_sale.vn) as int),cast (floor(ow_sale.cn*ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between current row and 0 following ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.dt order by ow_sale.vn asc), +win3 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc), +win4 as (order by ow_sale.pn asc); -- mvd 7,1->6; 9,1,4,2->8; 11,7,2->10; 2->12; 7,1->13; 11,7,2->14; + vn | pn | vn | qty | vn | to_char | cn | to_char | dt | to_char | prc | to_char | to_char | to_char +----+-----+----+------+----+-------------------+----+-------------------+------------+-------------------+------+-------------------+-------------------+------------------- + 40 | 100 | 40 | 1100 | 40 | .0000000 | 2 | 1.0000000 | 1401-01-01 | .0000000 | 2400 | .1666667 | 100.0000000 | 1.0000000 + 20 | 100 | 20 | 1 | 20 | .0000000 | 1 | 1.0000000 | 1401-05-01 | .0000000 | 0 | .1666667 | 100.0000000 | 1.0000000 + 10 | 200 | 10 | 1 | 10 | .0000000 | 1 | 1.0000000 | 1401-03-01 | .0000000 | 0 | .3333333 | 200.0000000 | 1.0000000 + 40 | 200 | 40 | 1 | 40 | .0000000 | 3 | 1.0000000 | 1401-04-01 | .0000000 | 0 | .3333333 | 200.0000000 | 1.0000000 + 30 | 300 | 30 | 1 | 30 | .0000000 | 1 | 1.0000000 | 1401-05-02 | .0000000 | 0 | .4166667 | 300.0000000 | 1.0000000 + 50 | 400 | 50 | 1 | 50 | .0000000 | 2 | 1.0000000 | 1401-06-01 | .0000000 | 0 | .5833333 | 400.0000000 | 1.0000000 + 50 | 400 | 50 | 1 | 50 | .0000000 | 1 | 1.0000000 | 1401-06-01 | .0000000 | 0 | .5833333 | 400.0000000 | 1.0000000 + 30 | 500 | 30 | 12 | 30 | .0000000 | 1 | 1.0000000 | 1401-06-01 | .0000000 | 5 | .7500000 | 500.0000000 | 1.0000000 + 30 | 500 | 30 | 12 | 30 | .0000000 | 3 | 1.0000000 | 1401-06-01 | .0000000 | 5 | .7500000 | 500.0000000 | 1.0000000 + 30 | 600 | 30 | 12 | 30 | .0000000 | 3 | 1.0000000 | 1401-06-01 | .0000000 | 5 | .8333333 | 600.0000000 | 1.0000000 + 40 | 700 | 40 | 1 | 40 | .0000000 | 4 | 1.0000000 | 1401-06-01 | .0000000 | 1 | .9166667 | 700.0000000 | 1.0000000 + 40 | 800 | 40 | 1 | 40 | .0000000 | 4 | 1.0000000 | 1401-06-01 | .0000000 | 1 | 1.0000000 | 800.0000000 | 1.0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty*ow_sale.qty),floor(ow_sale.cn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.vn asc rows between current row and unbounded following ); -- mvd 4,1->3; + vn | prc | to_char | cn +----+------+-------------------+---- + 40 | 2400 | .0000000 | 2 + 10 | 0 | .0000000 | 1 + 40 | 0 | .0000000 | 3 + 20 | 0 | .0000000 | 1 + 30 | 0 | .0000000 | 1 + 50 | 0 | .0000000 | 1 + 50 | 0 | .0000000 | 2 + 30 | 5 | .0000000 | 1 + 30 | 5 | .0000000 | 3 + 30 | 5 | .0000000 | 3 + 40 | 1 | .0000000 | 4 + 40 | 1 | .0000000 | 4 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty/ow_sale.pn),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.qty order by ow_sale.vn asc), +win4 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 5->4; 5->6; 5,8->7; 10,1,5,3->9; + cn | cn | pn | to_char | vn | to_char | to_char | qty | to_char | dt +----+----+-----+-------------------+----+-------------------+-------------------+------+-------------------+------------ + 1 | 1 | 200 | .0000000 | 10 | 1.0000000 | 1.0000000 | 1 | .0000000 | 1401-03-01 + 1 | 1 | 100 | .0000000 | 20 | 2.0000000 | 1.0000000 | 1 | .0000000 | 1401-05-01 + 3 | 3 | 500 | .0000000 | 30 | 3.0000000 | 1.0000000 | 12 | .0000000 | 1401-06-01 + 1 | 1 | 500 | .0000000 | 30 | 4.0000000 | 1.0000000 | 12 | .0000000 | 1401-06-01 + 1 | 1 | 300 | .0000000 | 30 | 5.0000000 | 1.0000000 | 1 | .0000000 | 1401-05-02 + 3 | 3 | 600 | .0000000 | 30 | 6.0000000 | 1.0000000 | 12 | .0000000 | 1401-06-01 + 2 | 2 | 100 | .0000000 | 40 | 7.0000000 | 1.0000000 | 1100 | .0000000 | 1401-01-01 + 3 | 3 | 200 | .0000000 | 40 | 8.0000000 | 1.0000000 | 1 | .0000000 | 1401-04-01 + 4 | 4 | 700 | .0000000 | 40 | 9.0000000 | 1.0000000 | 1 | .0000000 | 1401-06-01 + 4 | 4 | 800 | .0000000 | 40 | 10.0000000 | 1.0000000 | 1 | .0000000 | 1401-06-01 + 2 | 2 | 400 | .0000000 | 50 | 11.0000000 | 1.0000000 | 1 | .0000000 | 1401-06-01 + 1 | 1 | 400 | .0000000 | 50 | 12.0000000 | 1.0000000 | 1 | .0000000 | 1401-06-01 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn/ow_sale.qty),floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.pn desc rows between floor(ow_sale.pn+ow_sale.cn) following and floor(ow_sale.vn+ow_sale.cn) following ); -- mvd 4,2->5; + qty | pn | qty | vn | to_char +------+-----+------+----+------------------- + 1100 | 100 | 1100 | 40 | .0000000 + 1 | 200 | 1 | 10 | .0000000 + 1 | 200 | 1 | 40 | .0000000 + 1 | 100 | 1 | 20 | .0000000 + 1 | 300 | 1 | 30 | .0000000 + 1 | 400 | 1 | 50 | .0000000 + 1 | 400 | 1 | 50 | .0000000 + 12 | 500 | 12 | 30 | .0000000 + 12 | 500 | 12 | 30 | .0000000 + 12 | 600 | 12 | 30 | .0000000 + 1 | 700 | 1 | 40 | .0000000 + 1 | 800 | 1 | 40 | .0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn/ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc rows between 4 following and 3 following ), +win2 as (order by ow_sale.vn asc); -- mvd 1->3; 1->4; 1->5; 1->6; 1->7; + vn | vn | to_char | to_char | to_char | to_char | to_char +----+----+-------------------+-------------------+-------------------+-------------------+------------------- + 10 | 10 | .0000000 | .0000000 | 1.0000000 | 1.0000000 | .0000000 + 20 | 20 | .0000000 | .0909091 | 2.0000000 | 2.0000000 | .0000000 + 30 | 30 | .0000000 | .1818182 | 6.0000000 | 6.0000000 | .0000000 + 30 | 30 | .0000000 | .1818182 | 6.0000000 | 6.0000000 | .0000000 + 30 | 30 | .0000000 | .1818182 | 6.0000000 | 6.0000000 | .0000000 + 30 | 30 | .0000000 | .1818182 | 6.0000000 | 6.0000000 | .0000000 + 40 | 40 | .0000000 | .5454545 | 10.0000000 | 10.0000000 | .0000000 + 40 | 40 | .0000000 | .5454545 | 10.0000000 | 10.0000000 | .0000000 + 40 | 40 | .0000000 | .5454545 | 10.0000000 | 10.0000000 | .0000000 + 40 | 40 | .0000000 | .5454545 | 10.0000000 | 10.0000000 | .0000000 + 50 | 50 | .0000000 | .9090909 | 12.0000000 | 12.0000000 | .0000000 + 50 | 50 | .0000000 | .9090909 | 12.0000000 | 12.0000000 | .0000000 +(12 rows) + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn/ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between floor(ow_sale.vn/ow_sale.cn) following and unbounded following ); -- mvd 1,2->3; + cn | vn | to_char +----+----+------------------- + 2 | 40 | .0000000 + 1 | 10 | .0000000 + 3 | 40 | .0000000 + 1 | 20 | .0000000 + 1 | 30 | .0000000 + 1 | 50 | .0000000 + 2 | 50 | .0000000 + 1 | 30 | .0000000 + 3 | 30 | .0000000 + 3 | 30 | .0000000 + 4 | 40 | .0000000 + 4 | 40 | .0000000 +(12 rows) + +-- COVAR_POP() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn-ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn desc,ow_sale.pn desc,ow_sale.cn asc); -- mvd 1,6,7,8->5; + cn | qty | qty | cn | to_char | dt | vn | pn +----+------+------+----+-------------------+------------+----+----- + 1 | 1 | 1 | 1 | .0000000 | 1401-03-01 | 10 | 200 + 1 | 1 | 1 | 1 | .0000000 | 1401-05-02 | 30 | 300 + 1 | 1 | 1 | 1 | .0000000 | 1401-06-01 | 50 | 400 + 2 | 1 | 1 | 2 | .2500000 | 1401-06-01 | 50 | 400 + 4 | 1 | 1 | 4 | 1.5555556 | 1401-06-01 | 40 | 800 + 4 | 1 | 1 | 4 | 1.6875000 | 1401-06-01 | 40 | 700 + 3 | 12 | 12 | 3 | .9200000 | 1401-06-01 | 30 | 600 + 1 | 12 | 12 | 1 | 3.4166667 | 1401-06-01 | 30 | 500 + 3 | 12 | 12 | 3 | 2.5102041 | 1401-06-01 | 30 | 500 + 2 | 1100 | 1100 | 2 | .0000000 | 1401-01-01 | 40 | 100 + 3 | 1 | 1 | 3 | .0000000 | 1401-04-01 | 40 | 200 + 1 | 1 | 1 | 1 | .0000000 | 1401-05-01 | 20 | 100 +(12 rows) + +-- COVAR_POP() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn/ow_sale.vn),floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +, +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.pn order by ow_sale.cn desc,ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.prc)) OVER(partition by ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.pn order by ow_sale.cn desc,ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty+ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.pn order by ow_sale.cn desc,ow_sale.vn asc), +win2 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 1,4,6,2->5; 1,4,6,2->7; 1,4,6,2->8; 1,4,6,2->9; 1,4,6,2->10; 4->11; + cn | pn | pn | vn | to_char | qty | to_char | to_char | to_char | to_char | to_char +----+-----+-----+----+-------------------+------+-------------------+-------------------+-------------------+-------------------+------------------- + 2 | 100 | 100 | 40 | .0000000 | 1100 | 1.0000000 | 1.0000000 | -1300.0000000 | .0000000 | .0000000 + 1 | 200 | 200 | 10 | .0000000 | 1 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 | .0000000 + 3 | 200 | 200 | 40 | .0000000 | 1 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 | .0000000 + 1 | 100 | 100 | 20 | .0000000 | 1 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 | .0000000 + 1 | 300 | 300 | 30 | .0000000 | 1 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 | .0000000 + 1 | 400 | 400 | 50 | .0000000 | 1 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 | .0000000 + 2 | 400 | 400 | 50 | .0000000 | 1 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 | .0000000 + 1 | 500 | 500 | 30 | .0000000 | 12 | 1.0000000 | 1.0000000 | 7.0000000 | .0000000 | .0000000 + 3 | 500 | 500 | 30 | .0000000 | 12 | 1.0000000 | 1.0000000 | 7.0000000 | .0000000 | .0000000 + 3 | 600 | 600 | 30 | .0000000 | 12 | 1.0000000 | 1.0000000 | 7.0000000 | .0000000 | .0000000 + 4 | 700 | 700 | 40 | .0000000 | 1 | 1.0000000 | 1.0000000 | .0000000 | .0000000 | .0000000 + 4 | 800 | 800 | 40 | .0000000 | 1 | 1.0000000 | 1.0000000 | .0000000 | .0000000 | .0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.qty*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.vn order by ow_sale.cn asc range unbounded preceding ); -- mvd 8,5,4,1->7; + pn | qty | dt | vn | cn | vn | to_char | prc +-----+------+------------+----+----+----+-------------------+------ + 100 | 1 | 1401-05-01 | 20 | 1 | 20 | .0000000 | 0 + 200 | 1 | 1401-03-01 | 10 | 1 | 10 | .0000000 | 0 + 200 | 1 | 1401-04-01 | 40 | 3 | 40 | .0000000 | 0 + 800 | 1 | 1401-06-01 | 40 | 4 | 40 | .0000000 | 1 + 600 | 12 | 1401-06-01 | 30 | 3 | 30 | .0000000 | 5 + 100 | 1100 | 1401-01-01 | 40 | 2 | 40 | .0000000 | 2400 + 300 | 1 | 1401-05-02 | 30 | 1 | 30 | .0000000 | 0 + 400 | 1 | 1401-06-01 | 50 | 1 | 50 | .0000000 | 0 + 400 | 1 | 1401-06-01 | 50 | 2 | 50 | .0000000 | 0 + 700 | 1 | 1401-06-01 | 40 | 4 | 40 | .0000000 | 1 + 500 | 12 | 1401-06-01 | 30 | 1 | 30 | .0000000 | 5 + 500 | 12 | 1401-06-01 | 30 | 3 | 30 | .0000000 | 5 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn/ow_sale.cn),floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn/ow_sale.pn)) OVER(partition by ow_sale.dt order by ow_sale.cn asc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn asc range unbounded preceding ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.qty order by ow_sale.cn desc), +win3 as (order by ow_sale.cn desc), +win4 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.pn order by ow_sale.pn asc); -- mvd 5,6->4; 5,6->7; 5,2,9->8; 5,6->10; 5->11; 13,5,6,1->12; + pn | qty | pn | to_char | cn | dt | to_char | to_char | vn | to_char | to_char | to_char | prc +-----+------+-----+-------------------+----+------------+-------------------+-------------------+----+-------------------+-------------------+-------------------+------ + 800 | 1 | 800 | -123.7142857 | 4 | 1401-06-01 | 1.0000000 | 1.0000000 | 40 | 7.0000000 | 1.0000000 | 1.0000000 | 1 + 700 | 1 | 700 | -123.7142857 | 4 | 1401-06-01 | 1.0000000 | 1.0000000 | 40 | 7.0000000 | 2.0000000 | 1.0000000 | 1 + 600 | 12 | 600 | -52.4000000 | 3 | 1401-06-01 | 1.0000000 | 1.0000000 | 30 | 5.0000000 | 3.0000000 | 1.0000000 | 5 + 500 | 12 | 500 | -52.4000000 | 3 | 1401-06-01 | 1.0000000 | 1.0000000 | 30 | 5.0000000 | 4.0000000 | 1.0000000 | 5 + 200 | 1 | 200 | .0000000 | 3 | 1401-04-01 | 1.0000000 | 1.0000000 | 40 | 1.0000000 | 5.0000000 | 1.0000000 | 0 + 100 | 1100 | 100 | .0000000 | 2 | 1401-01-01 | 1.0000000 | 1.0000000 | 40 | 1.0000000 | 6.0000000 | 1.0000000 | 2400 + 400 | 1 | 400 | -944.4444444 | 2 | 1401-06-01 | 1.0000000 | 1.0000000 | 50 | 3.0000000 | 7.0000000 | 1.0000000 | 0 + 200 | 1 | 200 | .0000000 | 1 | 1401-03-01 | 1.0000000 | 1.0000000 | 10 | 1.0000000 | 8.0000000 | 1.0000000 | 0 + 400 | 1 | 400 | -500.0000000 | 1 | 1401-06-01 | 1.0000000 | 1.0000000 | 50 | 2.0000000 | 9.0000000 | 1.0000000 | 0 + 500 | 12 | 500 | -500.0000000 | 1 | 1401-06-01 | 1.0000000 | 1.0000000 | 30 | 2.0000000 | 10.0000000 | 1.0000000 | 5 + 300 | 1 | 300 | .0000000 | 1 | 1401-05-02 | 1.0000000 | 1.0000000 | 30 | 1.0000000 | 11.0000000 | 1.0000000 | 0 + 100 | 1 | 100 | .0000000 | 1 | 1401-05-01 | 1.0000000 | 1.0000000 | 20 | 1.0000000 | 12.0000000 | 1.0000000 | 0 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty-ow_sale.qty),floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc order by ow_sale.pn asc range floor(ow_sale.qty) preceding ); -- mvd 2,1,3->7; + qty | prc | pn | qty | pn | vn | to_char +------+------+-----+------+-----+----+------------------- + 1 | 0 | 100 | 1 | 100 | 20 | .0000000 + 1 | 0 | 200 | 1 | 200 | 10 | .0000000 + 1 | 0 | 200 | 1 | 200 | 40 | .0000000 + 1 | 0 | 300 | 1 | 300 | 30 | .0000000 + 1 | 0 | 400 | 1 | 400 | 50 | .0000000 + 1 | 0 | 400 | 1 | 400 | 50 | .0000000 + 1 | 1 | 700 | 1 | 700 | 40 | .0000000 + 1 | 1 | 800 | 1 | 800 | 40 | .0000000 + 12 | 5 | 500 | 12 | 500 | 30 | .0000000 + 12 | 5 | 500 | 12 | 500 | 30 | .0000000 + 12 | 5 | 600 | 12 | 600 | 30 | .0000000 + 1100 | 2400 | 100 | 1100 | 100 | 40 | .0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc+ow_sale.prc),floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.prc order by ow_sale.pn asc range floor(ow_sale.pn*ow_sale.prc) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc order by ow_sale.pn asc range floor(ow_sale.pn*ow_sale.prc) preceding ); -- mvd 8,2,4->7; 8,2,4->9; + qty | cn | cn | pn | qty | qty | to_char | prc | to_char +------+----+----+-----+------+------+-------------------+------+------------------- + 1 | 1 | 1 | 100 | 1 | 1 | .0000000 | 0 | 1.0000000 + 1 | 1 | 1 | 200 | 1 | 1 | .0000000 | 0 | 1.0000000 + 1 | 1 | 1 | 300 | 1 | 1 | .0000000 | 0 | 1.0000000 + 1 | 1 | 1 | 400 | 1 | 1 | .0000000 | 0 | 1.0000000 + 12 | 1 | 1 | 500 | 12 | 12 | .0000000 | 5 | 1.0000000 + 1 | 3 | 3 | 200 | 1 | 1 | .0000000 | 0 | 1.0000000 + 12 | 3 | 3 | 500 | 12 | 12 | .0000000 | 5 | 1.0000000 + 12 | 3 | 3 | 600 | 12 | 12 | .0000000 | 5 | 2.0000000 + 1 | 4 | 4 | 700 | 1 | 1 | .0000000 | 1 | 1.0000000 + 1 | 4 | 4 | 800 | 1 | 1 | .0000000 | 1 | 2.0000000 + 1 | 2 | 2 | 400 | 1 | 1 | .0000000 | 0 | 1.0000000 + 1100 | 2 | 2 | 100 | 1100 | 1100 | .0000000 | 2400 | 1.0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc range current row ); -- mvd 1,4,6,2->5; + prc | vn | qty | cn | to_char | dt +------+----+------+----+-------------------+------------ + 0 | 10 | 1 | 1 | .0000000 | 1401-03-01 + 0 | 30 | 1 | 1 | .0000000 | 1401-05-02 + 0 | 50 | 1 | 1 | .0000000 | 1401-06-01 + 0 | 50 | 1 | 2 | .0000000 | 1401-06-01 + 5 | 30 | 12 | 1 | .0000000 | 1401-06-01 + 5 | 30 | 12 | 3 | .0000000 | 1401-06-01 + 5 | 30 | 12 | 3 | .0000000 | 1401-06-01 + 0 | 40 | 1 | 3 | .0000000 | 1401-04-01 + 0 | 20 | 1 | 1 | .0000000 | 1401-05-01 + 1 | 40 | 1 | 4 | .0000000 | 1401-06-01 + 1 | 40 | 1 | 4 | .0000000 | 1401-06-01 + 2400 | 40 | 1100 | 2 | .0000000 | 1401-01-01 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn-ow_sale.prc),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.pn)) OVER(partition by ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.vn order by ow_sale.cn asc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc/ow_sale.pn) as int),cast (floor(ow_sale.pn*ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.vn order by ow_sale.cn asc range current row ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.cn asc), +win3 as (partition by ow_sale.vn order by ow_sale.cn desc), +win4 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc); -- mvd 4,3,7,8->6; 3,10,8->9; 3,7->11; 4,3,7,8->12; 3,7,8->13; + qty | qty | cn | prc | qty | to_char | vn | pn | to_char | dt | to_char | to_char | to_char +------+------+----+------+------+-------------------+----+-----+-------------------+------------+-------------------+-------------------+------------------- + 1 | 1 | 1 | 0 | 1 | .0000000 | 10 | 200 | 1.0000000 | 1401-03-01 | .0000000 | 200.0000000 | .0000000 + 1 | 1 | 1 | 0 | 1 | .0000000 | 20 | 100 | 1.0000000 | 1401-05-01 | .0000000 | 100.0000000 | .0000000 + 12 | 12 | 3 | 5 | 12 | .0000000 | 30 | 600 | 1.0000000 | 1401-06-01 | .0000000 | 7200.0000000 | .0000000 + 12 | 12 | 3 | 5 | 12 | .0000000 | 30 | 500 | 1.0000000 | 1401-06-01 | .0000000 | 6000.0000000 | .0000000 + 1 | 1 | 1 | 0 | 1 | .0000000 | 30 | 300 | 1.0000000 | 1401-05-02 | .6666667 | 300.0000000 | .0000000 + 12 | 12 | 1 | 5 | 12 | .0000000 | 30 | 500 | 1.0000000 | 1401-06-01 | .6666667 | 6000.0000000 | .0000000 + 1 | 1 | 4 | 1 | 1 | .0000000 | 40 | 700 | 1.0000000 | 1401-06-01 | .0000000 | 700.0000000 | .0000000 + 1 | 1 | 4 | 1 | 1 | .0000000 | 40 | 800 | 1.0000000 | 1401-06-01 | .0000000 | 800.0000000 | .0000000 + 1 | 1 | 3 | 0 | 1 | .0000000 | 40 | 200 | 1.0000000 | 1401-04-01 | .6666667 | 200.0000000 | .0000000 + 1100 | 1100 | 2 | 2400 | 1100 | .0000000 | 40 | 100 | 1.0000000 | 1401-01-01 | 1.0000000 | 110000.0000000 | .0000000 + 1 | 1 | 2 | 0 | 1 | .0000000 | 50 | 400 | 1.0000000 | 1401-06-01 | .0000000 | 400.0000000 | .0000000 + 1 | 1 | 1 | 0 | 1 | .0000000 | 50 | 400 | 1.0000000 | 1401-06-01 | 1.0000000 | 400.0000000 | .0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.qty) preceding ); -- mvd 6,7,1,4->5; + vn | qty | qty | pn | to_char | cn | dt +----+------+------+-----+-------------------+----+------------ + 10 | 1 | 1 | 200 | .0000000 | 1 | 1401-03-01 + 30 | 12 | 12 | 600 | .0000000 | 3 | 1401-06-01 + 40 | 1 | 1 | 700 | .0000000 | 4 | 1401-06-01 + 20 | 1 | 1 | 100 | .0000000 | 1 | 1401-05-01 + 40 | 1100 | 1100 | 100 | .0000000 | 2 | 1401-01-01 + 40 | 1 | 1 | 200 | .0000000 | 3 | 1401-04-01 + 30 | 1 | 1 | 300 | .0000000 | 1 | 1401-05-02 + 50 | 1 | 1 | 400 | .0000000 | 1 | 1401-06-01 + 50 | 1 | 1 | 400 | .0000000 | 2 | 1401-06-01 + 30 | 12 | 12 | 500 | .0000000 | 1 | 1401-06-01 + 30 | 12 | 12 | 500 | .0000000 | 3 | 1401-06-01 + 40 | 1 | 1 | 800 | .0000000 | 4 | 1401-06-01 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn/ow_sale.cn),floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty/ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.prc order by ow_sale.pn asc range between unbounded preceding and floor(ow_sale.vn*ow_sale.pn) preceding ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.vn asc), +win3 as (order by ow_sale.pn desc), +win4 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,4,5->2; 1,4,7->6; 5->8; 3,1,7,10->9; 1,4,7->11; 3,1,7,10->12; + cn | to_char | prc | dt | pn | to_char | vn | to_char | to_char | qty | to_char | to_char +----+-------------------+------+------------+-----+-------------------+----+-------------------+-------------------+------+-------------------+------------------- + 4 | .0000000 | 1 | 1401-06-01 | 800 | 1.0000000 | 40 | 1.0000000 | .0000000 | 1 | 1.0000000 | 1.0000000 + 4 | .0000000 | 1 | 1401-06-01 | 700 | 1.0000000 | 40 | 2.0000000 | .0000000 | 1 | 1.0000000 | .5000000 + 3 | .0000000 | 5 | 1401-06-01 | 600 | 1.0000000 | 30 | 3.0000000 | .0000000 | 12 | 1.0000000 | 1.0000000 + 1 | .0000000 | 5 | 1401-06-01 | 500 | 1.0000000 | 30 | 4.0000000 | .0000000 | 12 | 1.0000000 | 1.0000000 + 3 | .0000000 | 5 | 1401-06-01 | 500 | 1.0000000 | 30 | 4.0000000 | .0000000 | 12 | 1.0000000 | .5000000 + 2 | .0000000 | 0 | 1401-06-01 | 400 | 1.0000000 | 50 | 6.0000000 | .0000000 | 1 | 1.0000000 | 1.0000000 + 1 | .0000000 | 0 | 1401-06-01 | 400 | 1.0000000 | 50 | 6.0000000 | .0000000 | 1 | 1.0000000 | 1.0000000 + 1 | .0000000 | 0 | 1401-05-02 | 300 | 1.0000000 | 30 | 8.0000000 | .0000000 | 1 | 1.0000000 | 1.0000000 + 3 | .0000000 | 0 | 1401-04-01 | 200 | 1.0000000 | 40 | 9.0000000 | .0000000 | 1 | 1.0000000 | 1.0000000 + 1 | .0000000 | 0 | 1401-03-01 | 200 | 1.0000000 | 10 | 9.0000000 | .0000000 | 1 | 1.0000000 | 1.0000000 + 1 | .0000000 | 0 | 1401-05-01 | 100 | 1.0000000 | 20 | 11.0000000 | .0000000 | 1 | 1.0000000 | 1.0000000 + 2 | .0000000 | 2400 | 1401-01-01 | 100 | 1.0000000 | 40 | 11.0000000 | .0000000 | 1100 | 1.0000000 | 1.0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty-ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.vn asc range between unbounded preceding and current row ); -- mvd 4,3->5; + cn | cn | vn | prc | to_char +----+----+----+------+------------------- + 4 | 4 | 40 | 1 | .0000000 + 4 | 4 | 40 | 1 | .0000000 + 1 | 1 | 10 | 0 | .0000000 + 1 | 1 | 20 | 0 | .0000000 + 1 | 1 | 30 | 0 | .0000000 + 3 | 3 | 40 | 0 | .0000000 + 2 | 2 | 50 | 0 | .0000000 + 1 | 1 | 50 | 0 | .0000000 + 3 | 3 | 30 | 5 | .0000000 + 1 | 1 | 30 | 5 | .0000000 + 3 | 3 | 30 | 5 | .0000000 + 2 | 2 | 40 | 2400 | .0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn*ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.vn desc range between unbounded preceding and current row ); -- mvd 6,7->5; 6,7->8; + pn | cn | qty | qty | to_char | prc | vn | to_char +-----+----+------+------+-------------------+------+----+------------------- + 800 | 4 | 1 | 1 | .0000000 | 1 | 40 | 2.0000000 + 700 | 4 | 1 | 1 | .0000000 | 1 | 40 | 2.0000000 + 400 | 1 | 1 | 1 | .0000000 | 0 | 50 | 2.0000000 + 400 | 2 | 1 | 1 | .0000000 | 0 | 50 | 2.0000000 + 200 | 3 | 1 | 1 | .0000000 | 0 | 40 | 3.0000000 + 300 | 1 | 1 | 1 | .0000000 | 0 | 30 | 4.0000000 + 100 | 1 | 1 | 1 | .0000000 | 0 | 20 | 5.0000000 + 200 | 1 | 1 | 1 | .0000000 | 0 | 10 | 6.0000000 + 500 | 3 | 12 | 12 | .0000000 | 5 | 30 | 3.0000000 + 600 | 3 | 12 | 12 | .0000000 | 5 | 30 | 3.0000000 + 500 | 1 | 12 | 12 | .0000000 | 5 | 30 | 3.0000000 + 100 | 2 | 1100 | 1100 | .0000000 | 2400 | 40 | 1.0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty*ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.dt order by ow_sale.cn desc range between unbounded preceding and 2 following ); -- mvd 4,2,5,6->3; + prc | cn | to_char | dt | vn | qty +------+----+-------------------+------------+----+------ + 0 | 1 | .0000000 | 1401-03-01 | 10 | 1 + 0 | 1 | .0000000 | 1401-05-02 | 30 | 1 + 0 | 1 | .0000000 | 1401-06-01 | 50 | 1 + 0 | 1 | .0000000 | 1401-05-01 | 20 | 1 + 5 | 1 | .0000000 | 1401-06-01 | 30 | 12 + 0 | 2 | .0000000 | 1401-06-01 | 50 | 1 + 2400 | 2 | .0000000 | 1401-01-01 | 40 | 1100 + 0 | 3 | .0000000 | 1401-04-01 | 40 | 1 + 5 | 3 | .0000000 | 1401-06-01 | 30 | 12 + 5 | 3 | .0000000 | 1401-06-01 | 30 | 12 + 1 | 4 | .0000000 | 1401-06-01 | 40 | 1 + 1 | 4 | .0000000 | 1401-06-01 | 40 | 1 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn*ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.cn)) OVER(partition by ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.vn order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.qty) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.vn order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.qty) following ); -- mvd 4,2,1->5; 4,2,1->6; + qty | vn | pn | cn | to_char | to_char +------+----+-----+----+-------------------+------------------- + 1 | 50 | 400 | 2 | .0000000 | .0000000 + 1 | 40 | 800 | 4 | .0000000 | .0000000 + 1 | 40 | 700 | 4 | .0000000 | .0000000 + 12 | 30 | 500 | 1 | .0000000 | 12.0000000 + 12 | 30 | 600 | 3 | .0000000 | 4.0000000 + 12 | 30 | 500 | 3 | .0000000 | 4.0000000 + 1 | 10 | 200 | 1 | .0000000 | 1.0000000 + 1 | 20 | 100 | 1 | .0000000 | 1.0000000 + 1 | 30 | 300 | 1 | .0000000 | 1.0000000 + 1 | 50 | 400 | 1 | .0000000 | 1.0000000 + 1 | 40 | 200 | 3 | .0000000 | .0000000 + 1100 | 40 | 100 | 2 | .0000000 | 550.0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.cn asc range between unbounded preceding and unbounded following ); -- mvd 6,7,1->5; + vn | pn | pn | pn | to_char | cn | dt +----+-----+-----+-----+-------------------+----+------------ + 10 | 200 | 200 | 200 | .0000000 | 1 | 1401-03-01 + 30 | 300 | 300 | 300 | .0000000 | 1 | 1401-05-02 + 30 | 500 | 500 | 500 | .0000000 | 1 | 1401-06-01 + 30 | 600 | 600 | 600 | .0000000 | 3 | 1401-06-01 + 30 | 500 | 500 | 500 | .0000000 | 3 | 1401-06-01 + 40 | 800 | 800 | 800 | .0000000 | 4 | 1401-06-01 + 40 | 700 | 700 | 700 | .0000000 | 4 | 1401-06-01 + 50 | 400 | 400 | 400 | .0000000 | 1 | 1401-06-01 + 50 | 400 | 400 | 400 | .0000000 | 2 | 1401-06-01 + 40 | 100 | 100 | 100 | .0000000 | 2 | 1401-01-01 + 40 | 200 | 200 | 200 | .0000000 | 3 | 1401-04-01 + 20 | 100 | 100 | 100 | .0000000 | 1 | 1401-05-01 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.cn asc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.vn asc); -- mvd 1,4->6; 4,2,8->7; 4,2,8->9; + prc | vn | vn | cn | dt | to_char | to_char | pn | to_char +------+----+----+----+------------+-------------------+-------------------+-----+------------------- + 1 | 40 | 40 | 4 | 1401-06-01 | .0000000 | 1.0000000 | 800 | 1.0000000 + 1 | 40 | 40 | 4 | 1401-06-01 | .0000000 | 1.0000000 | 700 | 1.0000000 + 0 | 20 | 20 | 1 | 1401-05-01 | 222.2222222 | 1.0000000 | 100 | 1.0000000 + 0 | 10 | 10 | 1 | 1401-03-01 | 222.2222222 | 1.0000000 | 200 | 1.0000000 + 0 | 30 | 30 | 1 | 1401-05-02 | 222.2222222 | 1.0000000 | 300 | 1.0000000 + 0 | 50 | 50 | 1 | 1401-06-01 | 222.2222222 | 1.0000000 | 400 | 1.0000000 + 0 | 50 | 50 | 2 | 1401-06-01 | 222.2222222 | 1.0000000 | 400 | 1.0000000 + 0 | 40 | 40 | 3 | 1401-04-01 | 222.2222222 | 1.0000000 | 200 | 1.0000000 + 5 | 30 | 30 | 1 | 1401-06-01 | .0000000 | 1.0000000 | 500 | 1.0000000 + 5 | 30 | 30 | 3 | 1401-06-01 | .0000000 | 1.0000000 | 600 | 1.0000000 + 5 | 30 | 30 | 3 | 1401-06-01 | .0000000 | 1.0000000 | 500 | 1.0000000 + 2400 | 40 | 40 | 2 | 1401-01-01 | .0000000 | 1.0000000 | 100 | 1.0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.pn desc range between 1 preceding and current row ); -- mvd 2,4->6; + cn | dt | qty | pn | qty | to_char +----+------------+------+-----+------+------------------- + 1 | 1401-03-01 | 1 | 200 | 1 | .0000000 + 1 | 1401-05-02 | 1 | 300 | 1 | .0000000 + 4 | 1401-06-01 | 1 | 800 | 1 | .0000000 + 4 | 1401-06-01 | 1 | 700 | 1 | .0000000 + 3 | 1401-06-01 | 12 | 600 | 12 | .0000000 + 1 | 1401-06-01 | 12 | 500 | 12 | .0000000 + 3 | 1401-06-01 | 12 | 500 | 12 | .0000000 + 2 | 1401-06-01 | 1 | 400 | 1 | .0000000 + 1 | 1401-06-01 | 1 | 400 | 1 | .0000000 + 2 | 1401-01-01 | 1100 | 100 | 1100 | .0000000 + 3 | 1401-04-01 | 1 | 200 | 1 | .0000000 + 1 | 1401-05-01 | 1 | 100 | 1 | .0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn-ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.vn order by ow_sale.cn desc range between floor(ow_sale.vn) preceding and current row ), +win2 as (partition by ow_sale.qty,ow_sale.qty order by ow_sale.cn desc), +win3 as (order by ow_sale.cn desc); -- mvd 3,4,5,1->2; 3,4,5,1->6; 3,5->7; 3->8; + vn | to_char | cn | dt | qty | to_char | to_char | to_char +----+-------------------+----+------------+------+-------------------+-------------------+------------------- + 40 | .0000000 | 4 | 1401-06-01 | 1 | 2.0000000 | .2500000 | .1666667 + 40 | .0000000 | 4 | 1401-06-01 | 1 | 2.0000000 | .2500000 | .1666667 + 40 | .0000000 | 3 | 1401-04-01 | 1 | 1.0000000 | .3750000 | .4166667 + 30 | .0000000 | 3 | 1401-06-01 | 12 | 2.0000000 | .6666667 | .4166667 + 30 | .0000000 | 3 | 1401-06-01 | 12 | 2.0000000 | .6666667 | .4166667 + 40 | .0000000 | 2 | 1401-01-01 | 1100 | 1.0000000 | 1.0000000 | .5833333 + 50 | .0000000 | 2 | 1401-06-01 | 1 | 1.0000000 | .5000000 | .5833333 + 20 | .0000000 | 1 | 1401-05-01 | 1 | 1.0000000 | 1.0000000 | 1.0000000 + 30 | .0000000 | 1 | 1401-05-02 | 1 | 1.0000000 | 1.0000000 | 1.0000000 + 50 | .0000000 | 1 | 1401-06-01 | 1 | 1.0000000 | 1.0000000 | 1.0000000 + 10 | .0000000 | 1 | 1401-03-01 | 1 | 1.0000000 | 1.0000000 | 1.0000000 + 30 | .0000000 | 1 | 1401-06-01 | 12 | 1.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.prc/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn asc range between floor(ow_sale.pn-ow_sale.pn) preceding and floor(ow_sale.pn-ow_sale.cn) following ); -- mvd 4,7->6; + pn | prc | vn | cn | vn | to_char | dt +-----+------+----+----+----+-------------------+------------ + 200 | 0 | 10 | 1 | 10 | .0000000 | 1401-03-01 + 300 | 0 | 30 | 1 | 30 | .0000000 | 1401-05-02 + 400 | 0 | 50 | 1 | 50 | 3.5714286 | 1401-06-01 + 500 | 5 | 30 | 1 | 30 | 3.5714286 | 1401-06-01 + 400 | 0 | 50 | 2 | 50 | 1.1200000 | 1401-06-01 + 500 | 5 | 30 | 3 | 30 | 1.2500000 | 1401-06-01 + 600 | 5 | 30 | 3 | 30 | 1.2500000 | 1401-06-01 + 700 | 1 | 40 | 4 | 40 | .0000000 | 1401-06-01 + 800 | 1 | 40 | 4 | 40 | .0000000 | 1401-06-01 + 100 | 2400 | 40 | 2 | 40 | .0000000 | 1401-01-01 + 200 | 0 | 40 | 3 | 40 | .0000000 | 1401-04-01 + 100 | 0 | 20 | 1 | 20 | .0000000 | 1401-05-01 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc range between floor(ow_sale.qty) preceding and 1 following ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc); -- mvd 1,3,5->4; 2->6; 2->7; 3,9,5->8; + prc | pn | cn | to_char | vn | to_char | to_char | to_char | dt +------+-----+----+-------------------+----+-------------------+-------------------+-------------------+------------ + 1 | 800 | 4 | .0000000 | 40 | 1.0000000 | .0000000 | .0000000 | 1401-06-01 + 1 | 700 | 4 | .0000000 | 40 | 2.0000000 | .0909091 | .0000000 | 1401-06-01 + 5 | 600 | 3 | .0000000 | 30 | 3.0000000 | .1818182 | .5000000 | 1401-06-01 + 5 | 500 | 1 | .0000000 | 30 | 4.0000000 | .2727273 | .0000000 | 1401-06-01 + 5 | 500 | 3 | .0000000 | 30 | 4.0000000 | .2727273 | .5000000 | 1401-06-01 + 0 | 400 | 2 | .0000000 | 50 | 6.0000000 | .4545455 | 1.0000000 | 1401-06-01 + 0 | 400 | 1 | .0000000 | 50 | 6.0000000 | .4545455 | .0000000 | 1401-06-01 + 0 | 300 | 1 | .0000000 | 30 | 8.0000000 | .6363636 | .0000000 | 1401-05-02 + 0 | 200 | 3 | .0000000 | 40 | 9.0000000 | .7272727 | .0000000 | 1401-04-01 + 0 | 200 | 1 | .0000000 | 10 | 9.0000000 | .7272727 | .0000000 | 1401-03-01 + 0 | 100 | 1 | .0000000 | 20 | 11.0000000 | .9090909 | .0000000 | 1401-05-01 + 2400 | 100 | 2 | .0000000 | 40 | 11.0000000 | .9090909 | .0000000 | 1401-01-01 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc/ow_sale.vn),floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.dt order by ow_sale.vn desc range between 3 preceding and unbounded following ); -- mvd 1,5,3,6->4; + prc | pn | cn | to_char | dt | vn +------+-----+----+-------------------+------------+---- + 0 | 100 | 1 | .0000000 | 1401-05-01 | 20 + 0 | 400 | 2 | .0000000 | 1401-06-01 | 50 + 0 | 200 | 3 | .0000000 | 1401-04-01 | 40 + 0 | 200 | 1 | .0000000 | 1401-03-01 | 10 + 0 | 300 | 1 | .0000000 | 1401-05-02 | 30 + 0 | 400 | 1 | .0000000 | 1401-06-01 | 50 + 5 | 500 | 1 | .0000000 | 1401-06-01 | 30 + 2400 | 100 | 2 | .0000000 | 1401-01-01 | 40 + 5 | 600 | 3 | .0000000 | 1401-06-01 | 30 + 5 | 500 | 3 | .0000000 | 1401-06-01 | 30 + 1 | 700 | 4 | .0000000 | 1401-06-01 | 40 + 1 | 800 | 4 | .0000000 | 1401-06-01 | 40 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn+ow_sale.vn),floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.pn order by ow_sale.pn asc range between current row and current row ); -- mvd 1,5->4; + qty | dt | vn | to_char | pn +------+------------+----+-------------------+----- + 1 | 1401-05-01 | 20 | .0000000 | 100 + 1 | 1401-03-01 | 10 | 30.0000000 | 200 + 1 | 1401-04-01 | 40 | 30.0000000 | 200 + 1 | 1401-06-01 | 40 | .0000000 | 700 + 12 | 1401-06-01 | 30 | .0000000 | 500 + 12 | 1401-06-01 | 30 | .0000000 | 500 + 1 | 1401-05-02 | 30 | .0000000 | 300 + 1 | 1401-06-01 | 50 | .0000000 | 400 + 1 | 1401-06-01 | 50 | .0000000 | 400 + 1 | 1401-06-01 | 40 | .0000000 | 800 + 12 | 1401-06-01 | 30 | .0000000 | 600 + 1100 | 1401-01-01 | 40 | .0000000 | 100 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc-ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.vn asc range between current row and current row ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc), +win4 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.pn desc), +win5 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 1,4->6; 1,4->7; 9->8; 4->10; 12,1,9->11; 4->13; + cn | cn | qty | vn | vn | to_char | to_char | to_char | pn | to_char | to_char | prc | to_char +----+----+------+----+----+-------------------+-------------------+-------------------+-----+-------------------+-------------------+------+------------------- + 2 | 2 | 1100 | 40 | 40 | .0000000 | 1100.0000000 | 11.0000000 | 100 | 1.0000000 | 1.0000000 | 2400 | .0000000 + 1 | 1 | 1 | 10 | 10 | .0000000 | 1.0000000 | 9.0000000 | 200 | 1.0000000 | 1.0000000 | 0 | 804.0000000 + 3 | 3 | 1 | 40 | 40 | .0000000 | 1.0000000 | 9.0000000 | 200 | 1.0000000 | 1.0000000 | 0 | .0000000 + 1 | 1 | 1 | 20 | 20 | .0000000 | 1.0000000 | 11.0000000 | 100 | 1.0000000 | 1.0000000 | 0 | .0000000 + 1 | 1 | 1 | 30 | 30 | .0000000 | 12.0000000 | 8.0000000 | 300 | 1.0000000 | 1.0000000 | 0 | .0000000 + 1 | 1 | 1 | 50 | 50 | .0000000 | 1.0000000 | 6.0000000 | 400 | 1.0000000 | 1.0000000 | 0 | .0000000 + 2 | 2 | 1 | 50 | 50 | .0000000 | 1.0000000 | 6.0000000 | 400 | 12.0000000 | 1.0000000 | 0 | .0000000 + 1 | 1 | 12 | 30 | 30 | .0000000 | 12.0000000 | 4.0000000 | 500 | 12.0000000 | 1.0000000 | 5 | .0000000 + 3 | 3 | 12 | 30 | 30 | .0000000 | 12.0000000 | 4.0000000 | 500 | 1.0000000 | 1.0000000 | 5 | .0000000 + 3 | 3 | 12 | 30 | 30 | .0000000 | 12.0000000 | 3.0000000 | 600 | .0000000 | 1.0000000 | 5 | .0000000 + 4 | 4 | 1 | 40 | 40 | .0000000 | 1.0000000 | 2.0000000 | 700 | .0000000 | 1.0000000 | 1 | .0000000 + 4 | 4 | 1 | 40 | 40 | .0000000 | 1.0000000 | 1.0000000 | 800 | .0000000 | 1.0000000 | 1 | .0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn/ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.pn order by ow_sale.vn asc range between current row and 4 following ); -- mvd 1,3,4->6; + qty | qty | vn | pn | cn | to_char +------+------+----+-----+----+------------------- + 1 | 1 | 10 | 200 | 1 | .0000000 + 1 | 1 | 20 | 100 | 1 | .0000000 + 12 | 12 | 30 | 500 | 1 | .0000000 + 12 | 12 | 30 | 500 | 3 | .0000000 + 1 | 1 | 40 | 200 | 3 | .0000000 + 1 | 1 | 40 | 700 | 4 | .0000000 + 1 | 1 | 30 | 300 | 1 | .0000000 + 12 | 12 | 30 | 600 | 3 | .0000000 + 1 | 1 | 40 | 800 | 4 | .0000000 + 1100 | 1100 | 40 | 100 | 2 | .0000000 + 1 | 1 | 50 | 400 | 2 | .0000000 + 1 | 1 | 50 | 400 | 1 | .0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn-ow_sale.pn),floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc/ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn*ow_sale.pn) as int),cast (floor(ow_sale.cn*ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.prc,ow_sale.pn order by ow_sale.cn asc range between current row and floor(ow_sale.vn+ow_sale.pn) following ), +win2 as (partition by ow_sale.cn,ow_sale.prc order by ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc); -- mvd 5,1,6->4; 5,1->7; 5,1->8; 5,1->9; 2,1,6->10; + cn | dt | vn | to_char | prc | pn | to_char | to_char | to_char | to_char +----+------------+----+-------------------+------+-----+-------------------+-------------------+-------------------+------------------- + 1 | 1401-05-02 | 30 | .0000000 | 0 | 300 | 1.0000000 | .0000000 | 1.0000000 | .0000000 + 1 | 1401-06-01 | 50 | .0000000 | 0 | 400 | 1.0000000 | .0000000 | 1.0000000 | .0000000 + 2 | 1401-06-01 | 50 | .0000000 | 0 | 400 | 1.0000000 | .0000000 | 1.0000000 | .0000000 + 1 | 1401-06-01 | 30 | .0000000 | 5 | 500 | 1.0000000 | .0000000 | 1.0000000 | .0000000 + 3 | 1401-06-01 | 30 | .0000000 | 5 | 500 | 1.0000000 | .0000000 | 1.0000000 | .0000000 + 4 | 1401-06-01 | 40 | .0000000 | 1 | 700 | 1.0000000 | .0000000 | 1.0000000 | .0000000 + 1 | 1401-05-01 | 20 | .0000000 | 0 | 100 | 1.0000000 | .0000000 | 1.0000000 | .0000000 + 2 | 1401-01-01 | 40 | .0000000 | 2400 | 100 | 1.0000000 | 24.0000000 | 1.0000000 | .0000000 + 1 | 1401-03-01 | 10 | .0000000 | 0 | 200 | 1.0000000 | .0000000 | 1.0000000 | .0000000 + 3 | 1401-04-01 | 40 | .0000000 | 0 | 200 | 1.0000000 | .0000000 | 1.0000000 | .0000000 + 3 | 1401-06-01 | 30 | .0000000 | 5 | 600 | 1.0000000 | .0000000 | 1.0000000 | .0000000 + 4 | 1401-06-01 | 40 | .0000000 | 1 | 800 | 1.0000000 | .0000000 | 1.0000000 | .0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.cn order by ow_sale.vn asc range between current row and unbounded following ); -- mvd 8,2,4,9,1->7; + pn | cn | pn | qty | qty | cn | to_char | prc | vn +-----+----+-----+------+------+----+-------------------+------+---- + 200 | 1 | 200 | 1 | 1 | 1 | .0000000 | 0 | 10 + 100 | 1 | 100 | 1 | 1 | 1 | .0000000 | 0 | 20 + 600 | 3 | 600 | 12 | 12 | 3 | .0000000 | 5 | 30 + 200 | 3 | 200 | 1 | 1 | 3 | .0000000 | 0 | 40 + 800 | 4 | 800 | 1 | 1 | 4 | .0000000 | 1 | 40 + 400 | 2 | 400 | 1 | 1 | 2 | .0000000 | 0 | 50 + 300 | 1 | 300 | 1 | 1 | 1 | .0000000 | 0 | 30 + 500 | 1 | 500 | 12 | 12 | 1 | .0000000 | 5 | 30 + 500 | 3 | 500 | 12 | 12 | 3 | .0000000 | 5 | 30 + 700 | 4 | 700 | 1 | 1 | 4 | .0000000 | 1 | 40 + 100 | 2 | 100 | 1100 | 1100 | 2 | .0000000 | 2400 | 40 + 400 | 1 | 400 | 1 | 1 | 1 | .0000000 | 0 | 50 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn*ow_sale.vn),floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.vn order by ow_sale.vn asc range between current row and unbounded following ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.cn desc); -- mvd 1,6,4->5; 2->7; 9->8; + dt | pn | prc | qty | to_char | vn | to_char | to_char | cn +------------+-----+------+------+-------------------+----+-------------------+-------------------+---- + 1401-06-01 | 700 | 1 | 1 | .0000000 | 40 | .1666667 | .1666667 | 4 + 1401-06-01 | 800 | 1 | 1 | .0000000 | 40 | .0833333 | .1666667 | 4 + 1401-04-01 | 200 | 0 | 1 | .0000000 | 40 | .8333333 | .4166667 | 3 + 1401-06-01 | 600 | 5 | 12 | .0000000 | 30 | .2500000 | .4166667 | 3 + 1401-06-01 | 500 | 5 | 12 | .0000000 | 30 | .4166667 | .4166667 | 3 + 1401-01-01 | 100 | 2400 | 1100 | .0000000 | 40 | 1.0000000 | .5833333 | 2 + 1401-06-01 | 400 | 0 | 1 | .0000000 | 50 | .5833333 | .5833333 | 2 + 1401-05-02 | 300 | 0 | 1 | .0000000 | 30 | .6666667 | 1.0000000 | 1 + 1401-03-01 | 200 | 0 | 1 | .0000000 | 10 | .8333333 | 1.0000000 | 1 + 1401-06-01 | 400 | 0 | 1 | .0000000 | 50 | .5833333 | 1.0000000 | 1 + 1401-05-01 | 100 | 0 | 1 | .0000000 | 20 | 1.0000000 | 1.0000000 | 1 + 1401-06-01 | 500 | 5 | 12 | .0000000 | 30 | .4166667 | 1.0000000 | 1 +(12 rows) + +-- COVAR_POP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.pn asc range between floor(ow_sale.pn+ow_sale.pn) following and floor(ow_sale.pn-ow_sale.cn) following ); -- mvd 3,1->2; + pn | to_char | vn +-----+-------------------+---- + 200 | .0000000 | 10 + 100 | .0000000 | 20 + 300 | .0000000 | 30 + 500 | .0000000 | 30 + 500 | .0000000 | 30 + 600 | .0000000 | 30 + 100 | .0000000 | 40 + 200 | .0000000 | 40 + 700 | .0000000 | 40 + 800 | .0000000 | 40 + 400 | .0000000 | 50 + 400 | .0000000 | 50 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc rows unbounded preceding ); -- mvd 1,2,3->6; + cn | vn | pn | dt | vn | to_char +----+----+-----+------------+----+------------------- + 1 | 10 | 200 | 1401-03-01 | 10 | .0000000 + 1 | 20 | 100 | 1401-05-01 | 20 | .0000000 + 1 | 30 | 300 | 1401-05-02 | 30 | .0000000 + 1 | 50 | 400 | 1401-06-01 | 50 | .0000000 + 1 | 30 | 500 | 1401-06-01 | 30 | .0000000 + 3 | 40 | 200 | 1401-04-01 | 40 | .0000000 + 3 | 30 | 500 | 1401-06-01 | 30 | .0000000 + 3 | 30 | 600 | 1401-06-01 | 30 | .0000000 + 2 | 40 | 100 | 1401-01-01 | 40 | .0000000 + 2 | 50 | 400 | 1401-06-01 | 50 | .0000000 + 4 | 40 | 700 | 1401-06-01 | 40 | .0000000 + 4 | 40 | 800 | 1401-06-01 | 40 | .0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty*ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.pn,ow_sale.pn order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows unbounded preceding ), +win2 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.cn desc), +win3 as (order by ow_sale.pn desc); -- mvd 3,7,2,8->6; 3,8->9; 3,8->10; 8->11; + prc | vn | cn | vn | vn | to_char | dt | pn | to_char | to_char | to_char +------+----+----+----+----+-------------------+------------+-----+-------------------+-------------------+------------------- + 1 | 40 | 4 | 40 | 40 | .0000000 | 1401-06-01 | 800 | 1.0000000 | 1.0000000 | .0833333 + 1 | 40 | 4 | 40 | 40 | .0000000 | 1401-06-01 | 700 | 1.0000000 | 1.0000000 | .1666667 + 5 | 30 | 3 | 30 | 30 | .0000000 | 1401-06-01 | 600 | 1.0000000 | 1.0000000 | .2500000 + 5 | 30 | 3 | 30 | 30 | .0000000 | 1401-06-01 | 500 | .5000000 | 1.0000000 | .4166667 + 5 | 30 | 1 | 30 | 30 | .0000000 | 1401-06-01 | 500 | 1.0000000 | 2.0000000 | .4166667 + 0 | 50 | 2 | 50 | 50 | .0000000 | 1401-06-01 | 400 | .5000000 | 1.0000000 | .5833333 + 0 | 50 | 1 | 50 | 50 | .0000000 | 1401-06-01 | 400 | 1.0000000 | 2.0000000 | .5833333 + 0 | 30 | 1 | 30 | 30 | .0000000 | 1401-05-02 | 300 | 1.0000000 | 1.0000000 | .6666667 + 0 | 40 | 3 | 40 | 40 | .0000000 | 1401-04-01 | 200 | .5000000 | 1.0000000 | .8333333 + 0 | 10 | 1 | 10 | 10 | .0000000 | 1401-03-01 | 200 | 1.0000000 | 2.0000000 | .8333333 + 2400 | 40 | 2 | 40 | 40 | .0000000 | 1401-01-01 | 100 | .5000000 | 1.0000000 | 1.0000000 + 0 | 20 | 1 | 20 | 20 | .0000000 | 1401-05-01 | 100 | 1.0000000 | 2.0000000 | 1.0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows 2 preceding ); -- mvd 2,6,1->5; + pn | prc | prc | qty | to_char | vn +-----+------+------+------+-------------------+---- + 300 | 0 | 0 | 1 | .0000000 | 30 + 400 | 0 | 0 | 1 | .0000000 | 50 + 400 | 0 | 0 | 1 | .0000000 | 50 + 500 | 5 | 5 | 12 | .0000000 | 30 + 500 | 5 | 5 | 12 | .0000000 | 30 + 700 | 1 | 1 | 1 | .0000000 | 40 + 100 | 0 | 0 | 1 | .0000000 | 20 + 100 | 2400 | 2400 | 1100 | .0000000 | 40 + 200 | 0 | 0 | 1 | .0000000 | 10 + 200 | 0 | 0 | 1 | .0000000 | 40 + 600 | 5 | 5 | 12 | .0000000 | 30 + 800 | 1 | 1 | 1 | .0000000 | 40 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn*ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc/ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc rows 0 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc rows 0 preceding ), +win2 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,4,1->2; 6->5; 6->7; 3,4,1->8; + pn | to_char | cn | dt | to_char | vn | to_char | to_char +-----+-------------------+----+------------+-------------------+----+-------------------+------------------- + 100 | .0000000 | 2 | 1401-01-01 | .0000000 | 40 | .0000000 | 1060.0000000 + 200 | .0000000 | 1 | 1401-03-01 | 1200.0000000 | 10 | .0909091 | -9.0000000 + 200 | .0000000 | 3 | 1401-04-01 | .0000000 | 40 | .1818182 | -39.0000000 + 100 | .0000000 | 1 | 1401-05-01 | .0000000 | 20 | .2727273 | -19.0000000 + 300 | .0000000 | 1 | 1401-05-02 | .0000000 | 30 | .3636364 | -29.0000000 + 400 | .0000000 | 1 | 1401-06-01 | .0000000 | 50 | .4545455 | -49.0000000 + 400 | .0000000 | 2 | 1401-06-01 | .0000000 | 50 | .5454545 | -49.0000000 + 500 | .0000000 | 1 | 1401-06-01 | .0000000 | 30 | .6363636 | -18.0000000 + 500 | .0000000 | 3 | 1401-06-01 | .0000000 | 30 | .7272727 | -18.0000000 + 600 | .0000000 | 3 | 1401-06-01 | .0000000 | 30 | .8181818 | -18.0000000 + 700 | .0000000 | 4 | 1401-06-01 | 1.0000000 | 40 | .9090909 | -39.0000000 + 800 | .0000000 | 4 | 1401-06-01 | .0000000 | 40 | 1.0000000 | -39.0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc,ow_sale.pn asc rows current row ); -- mvd 5,3,6->4; + dt | qty | vn | to_char | prc | pn +------------+------+----+-------------------+------+----- + 1401-06-01 | 1 | 40 | .0000000 | 1 | 700 + 1401-06-01 | 1 | 40 | .0000000 | 1 | 800 + 1401-03-01 | 1 | 10 | .0000000 | 0 | 200 + 1401-04-01 | 1 | 40 | .0000000 | 0 | 200 + 1401-05-01 | 1 | 20 | .0000000 | 0 | 100 + 1401-05-02 | 1 | 30 | .0000000 | 0 | 300 + 1401-06-01 | 1 | 50 | .0000000 | 0 | 400 + 1401-06-01 | 1 | 50 | .0000000 | 0 | 400 + 1401-06-01 | 12 | 30 | .0000000 | 5 | 500 + 1401-06-01 | 12 | 30 | .0000000 | 5 | 500 + 1401-06-01 | 12 | 30 | .0000000 | 5 | 600 + 1401-01-01 | 1100 | 40 | .0000000 | 2400 | 100 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn-ow_sale.cn) as int),cast (floor(ow_sale.prc*ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn+ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.cn asc rows current row ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc), +win4 as (order by ow_sale.cn asc); -- mvd 3,1->2; 3->4; 6,1->5; 6,1->7; 3->8; 3->9; + pn | to_char | cn | to_char | to_char | vn | to_char | to_char | to_char +-----+-------------------+----+-------------------+-------------------+----+-------------------+-------------------+------------------- + 800 | .0000000 | 4 | .1666667 | .0000000 | 40 | 1.0000000 | .9090909 | 1.0000000 + 700 | .0000000 | 4 | .1666667 | .0000000 | 40 | 1.0000000 | .9090909 | 1.0000000 + 500 | .0000000 | 3 | .4166667 | .0000000 | 30 | 2.0000000 | .6363636 | 2.0000000 + 600 | .0000000 | 3 | .4166667 | .0000000 | 30 | 1.0000000 | .6363636 | 2.0000000 + 200 | .0000000 | 3 | .4166667 | .0000000 | 40 | 1.0000000 | .6363636 | 2.0000000 + 400 | .0000000 | 2 | .5833333 | .0000000 | 50 | 2.0000000 | .4545455 | 3.0000000 + 100 | .0000000 | 2 | .5833333 | .0000000 | 40 | 1.0000000 | .4545455 | 3.0000000 + 300 | .0000000 | 1 | 1.0000000 | .0000000 | 30 | 1.0000000 | .0000000 | 4.0000000 + 200 | .0000000 | 1 | 1.0000000 | .0000000 | 10 | 1.0000000 | .0000000 | 4.0000000 + 100 | .0000000 | 1 | 1.0000000 | .0000000 | 20 | 1.0000000 | .0000000 | 4.0000000 + 500 | .0000000 | 1 | 1.0000000 | .0000000 | 30 | 1.0000000 | .0000000 | 4.0000000 + 400 | .0000000 | 1 | 1.0000000 | .0000000 | 50 | 1.0000000 | .0000000 | 4.0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc),floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and 4 preceding ); -- mvd 1,6,3,8->7; + cn | cn | vn | cn | prc | dt | to_char | pn +----+----+----+----+------+------------+-------------------+----- + 1 | 1 | 10 | 1 | 0 | 1401-03-01 | .0000000 | 200 + 3 | 3 | 40 | 3 | 0 | 1401-04-01 | .0000000 | 200 + 1 | 1 | 20 | 1 | 0 | 1401-05-01 | .0000000 | 100 + 2 | 2 | 50 | 2 | 0 | 1401-06-01 | .0000000 | 400 + 3 | 3 | 30 | 3 | 5 | 1401-06-01 | .0000000 | 600 + 4 | 4 | 40 | 4 | 1 | 1401-06-01 | .0000000 | 800 + 2 | 2 | 40 | 2 | 2400 | 1401-01-01 | .0000000 | 100 + 1 | 1 | 30 | 1 | 0 | 1401-05-02 | .0000000 | 300 + 1 | 1 | 50 | 1 | 0 | 1401-06-01 | .0000000 | 400 + 1 | 1 | 30 | 1 | 5 | 1401-06-01 | .0000000 | 500 + 3 | 3 | 30 | 3 | 5 | 1401-06-01 | .0000000 | 500 + 4 | 4 | 40 | 4 | 1 | 1401-06-01 | .0000000 | 700 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.cn)) OVER(partition by ow_sale.prc,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc,ow_sale.pn desc rows between unbounded preceding and 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc,ow_sale.pn desc rows between unbounded preceding and 1 preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 6,2,1,8->7; 6,2,1,8->9; 11->10; 11->12; + vn | dt | dt | vn | qty | prc | to_char | pn | to_char | to_char | cn | to_char +----+------------+------------+----+------+------+-------------------+-----+-------------------+-------------------+----+------------------- + 40 | 1401-06-01 | 1401-06-01 | 40 | 1 | 1 | .0000000 | 700 | .0000000 | .1666667 | 4 | .1666667 + 40 | 1401-06-01 | 1401-06-01 | 40 | 1 | 1 | .0000000 | 800 | 5.0000000 | .1666667 | 4 | .1666667 + 40 | 1401-04-01 | 1401-04-01 | 40 | 1 | 0 | .0000000 | 200 | .0000000 | .4166667 | 3 | .4166667 + 30 | 1401-06-01 | 1401-06-01 | 30 | 12 | 5 | .0000000 | 500 | 13.0000000 | .4166667 | 3 | .4166667 + 30 | 1401-06-01 | 1401-06-01 | 30 | 12 | 5 | .0000000 | 600 | 15.0000000 | .4166667 | 3 | .4166667 + 50 | 1401-06-01 | 1401-06-01 | 50 | 1 | 0 | .0000000 | 400 | 2.0000000 | .5833333 | 2 | .5833333 + 40 | 1401-01-01 | 1401-01-01 | 40 | 1100 | 2400 | .0000000 | 100 | .0000000 | .5833333 | 2 | .5833333 + 20 | 1401-05-01 | 1401-05-01 | 20 | 1 | 0 | .0000000 | 100 | .0000000 | 1.0000000 | 1 | 1.0000000 + 10 | 1401-03-01 | 1401-03-01 | 10 | 1 | 0 | .0000000 | 200 | .0000000 | 1.0000000 | 1 | 1.0000000 + 30 | 1401-06-01 | 1401-06-01 | 30 | 12 | 5 | .0000000 | 500 | .0000000 | 1.0000000 | 1 | 1.0000000 + 50 | 1401-06-01 | 1401-06-01 | 50 | 1 | 0 | .0000000 | 400 | .0000000 | 1.0000000 | 1 | 1.0000000 + 30 | 1401-05-02 | 1401-05-02 | 30 | 1 | 0 | .0000000 | 300 | .0000000 | 1.0000000 | 1 | 1.0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 1,3,4->2; + cn | to_char | dt | pn +----+-------------------+------------+----- + 3 | .0000000 | 1401-04-01 | 200 + 1 | .0000000 | 1401-05-01 | 100 + 1 | .0000000 | 1401-05-02 | 300 + 1 | .0000000 | 1401-06-01 | 400 + 1 | .0000000 | 1401-06-01 | 500 + 3 | .0000000 | 1401-06-01 | 500 + 4 | .0000000 | 1401-06-01 | 700 + 2 | .0000000 | 1401-01-01 | 100 + 1 | .0000000 | 1401-03-01 | 200 + 2 | .0000000 | 1401-06-01 | 400 + 3 | .0000000 | 1401-06-01 | 600 + 4 | .0000000 | 1401-06-01 | 800 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn/ow_sale.cn),floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and unbounded following ); -- mvd 4,5->3; + vn | dt | to_char | prc | pn +----+------------+-------------------+------+----- + 40 | 1401-06-01 | .0000000 | 1 | 700 + 40 | 1401-06-01 | .0000000 | 1 | 800 + 10 | 1401-03-01 | -3.8333333 | 0 | 200 + 40 | 1401-04-01 | -3.8333333 | 0 | 200 + 20 | 1401-05-01 | -3.8333333 | 0 | 100 + 30 | 1401-05-02 | -3.8333333 | 0 | 300 + 50 | 1401-06-01 | -3.8333333 | 0 | 400 + 50 | 1401-06-01 | -3.8333333 | 0 | 400 + 30 | 1401-06-01 | .0000000 | 5 | 500 + 30 | 1401-06-01 | .0000000 | 5 | 500 + 30 | 1401-06-01 | .0000000 | 5 | 600 + 40 | 1401-01-01 | .0000000 | 2400 | 100 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn+ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn+ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn asc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 6,1,4->5; 4->7; 4->8; 6,1,4->9; 4->10; + qty | prc | prc | pn | to_char | vn | to_char | to_char | to_char | to_char +------+------+------+-----+-------------------+----+-------------------+-------------------+-------------------+------------------- + 1100 | 2400 | 2400 | 100 | .0000000 | 40 | .1666667 | .1666667 | 100.0000000 | .0000000 + 1 | 0 | 0 | 200 | .0000000 | 10 | .3333333 | .3333333 | 200.0000000 | 41.0000000 + 1 | 0 | 0 | 200 | .0000000 | 40 | .3333333 | .3333333 | 200.0000000 | 21.0000000 + 1 | 0 | 0 | 100 | .0000000 | 20 | .1666667 | .1666667 | 100.0000000 | 31.0000000 + 1 | 0 | 0 | 300 | .0000000 | 30 | .4166667 | .4166667 | 300.0000000 | 51.0000000 + 1 | 0 | 0 | 400 | .0000000 | 50 | .5833333 | .5833333 | 400.0000000 | 51.0000000 + 1 | 0 | 0 | 400 | .0000000 | 50 | .5833333 | .5833333 | 400.0000000 | 42.0000000 + 12 | 5 | 5 | 500 | .0000000 | 30 | .7500000 | .7500000 | 500.0000000 | .0000000 + 12 | 5 | 5 | 500 | .0000000 | 30 | .7500000 | .7500000 | 500.0000000 | .0000000 + 12 | 5 | 5 | 600 | .0000000 | 30 | .8333333 | .8333333 | 600.0000000 | .0000000 + 1 | 1 | 1 | 700 | .0000000 | 40 | .9166667 | .9166667 | 700.0000000 | 41.0000000 + 1 | 1 | 1 | 800 | .0000000 | 40 | 1.0000000 | 1.0000000 | 800.0000000 | .0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows between 9 preceding and floor(ow_sale.cn) preceding ); -- mvd 6,7,8->5; + dt | qty | qty | pn | to_char | prc | cn | vn +------------+------+------+-----+-------------------+------+----+---- + 1401-06-01 | 1 | 1 | 700 | .0000000 | 1 | 4 | 40 + 1401-06-01 | 1 | 1 | 800 | .0000000 | 1 | 4 | 40 + 1401-03-01 | 1 | 1 | 200 | .0000000 | 0 | 1 | 10 + 1401-05-01 | 1 | 1 | 100 | .0000000 | 0 | 1 | 20 + 1401-05-02 | 1 | 1 | 300 | .0000000 | 0 | 1 | 30 + 1401-06-01 | 12 | 12 | 500 | .0000000 | 5 | 1 | 30 + 1401-06-01 | 12 | 12 | 500 | .0000000 | 5 | 3 | 30 + 1401-06-01 | 12 | 12 | 600 | .0000000 | 5 | 3 | 30 + 1401-04-01 | 1 | 1 | 200 | .0000000 | 0 | 3 | 40 + 1401-01-01 | 1100 | 1100 | 100 | .0000000 | 2400 | 2 | 40 + 1401-06-01 | 1 | 1 | 400 | .0000000 | 0 | 1 | 50 + 1401-06-01 | 1 | 1 | 400 | .0000000 | 0 | 2 | 50 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.cn asc rows between 4 preceding and floor(ow_sale.vn) preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.qty order by ow_sale.pn desc), +win4 as (order by ow_sale.ord, ow_sale.cn asc), +win5 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 1,4,5->3; 5->6; 8,1,9,4,5->7; 1->10; 4->11; + cn | cn | to_char | vn | pn | to_char | to_char | dt | qty | to_char | to_char +----+----+-------------------+----+-----+-------------------+-------------------+------------+------+-------------------+------------------- + 4 | 4 | .0000000 | 40 | 800 | 1.0000000 | 1.0000000 | 1401-06-01 | 1 | .0000000 | 25.0000000 + 4 | 4 | .0000000 | 40 | 700 | 2.0000000 | 2.0000000 | 1401-06-01 | 1 | 800.0000000 | 50.0000000 + 3 | 3 | .0000000 | 30 | 600 | 3.0000000 | 1.0000000 | 1401-06-01 | 12 | .0000000 | 50.0000000 + 1 | 1 | .0000000 | 30 | 500 | 4.0000000 | 1.0000000 | 1401-06-01 | 12 | .0000000 | 50.0000000 + 3 | 3 | .0000000 | 30 | 500 | 4.0000000 | 2.0000000 | 1401-06-01 | 12 | .0000000 | 50.0000000 + 2 | 2 | .0000000 | 50 | 400 | 5.0000000 | 1.0000000 | 1401-06-01 | 1 | 500.0000000 | 30.0000000 + 1 | 1 | .0000000 | 50 | 400 | 5.0000000 | 1.0000000 | 1401-06-01 | 1 | 400.0000000 | 30.0000000 + 1 | 1 | .0000000 | 30 | 300 | 6.0000000 | 1.0000000 | 1401-05-02 | 1 | 400.0000000 | 20.0000000 + 3 | 3 | .0000000 | 40 | 200 | 7.0000000 | 1.0000000 | 1401-04-01 | 1 | 100.0000000 | .0000000 + 1 | 1 | .0000000 | 10 | 200 | 7.0000000 | 1.0000000 | 1401-03-01 | 1 | 200.0000000 | -2360.0000000 + 2 | 2 | .0000000 | 40 | 100 | 8.0000000 | 1.0000000 | 1401-01-01 | 1100 | .0000000 | .0000000 + 1 | 1 | .0000000 | 20 | 100 | 8.0000000 | 1.0000000 | 1401-05-01 | 1 | 300.0000000 | 40.0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty-ow_sale.cn),floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.vn asc rows between floor(ow_sale.qty) preceding and current row ); -- mvd 6,1,3,7,8->5; + cn | qty | dt | cn | to_char | prc | vn | pn +----+------+------------+----+-------------------+------+----+----- + 3 | 1 | 1401-04-01 | 3 | .0000000 | 0 | 40 | 200 + 1 | 1 | 1401-05-01 | 1 | .0000000 | 0 | 20 | 100 + 1 | 1 | 1401-05-02 | 1 | .0000000 | 0 | 30 | 300 + 1 | 1 | 1401-06-01 | 1 | .0000000 | 0 | 50 | 400 + 4 | 1 | 1401-06-01 | 4 | .0000000 | 1 | 40 | 800 + 1 | 12 | 1401-06-01 | 1 | .0000000 | 5 | 30 | 500 + 3 | 12 | 1401-06-01 | 3 | .0000000 | 5 | 30 | 500 + 1 | 1 | 1401-03-01 | 1 | .0000000 | 0 | 10 | 200 + 2 | 1 | 1401-06-01 | 2 | .0000000 | 0 | 50 | 400 + 4 | 1 | 1401-06-01 | 4 | .0000000 | 1 | 40 | 700 + 3 | 12 | 1401-06-01 | 3 | .0000000 | 5 | 30 | 600 + 2 | 1100 | 1401-01-01 | 2 | .0000000 | 2400 | 40 | 100 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows between 1 preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows between 1 preceding and current row ); -- mvd 5,6,2,1,7->4; 5,6,2,1,7->8; + vn | qty | prc | to_char | cn | dt | pn | to_char +----+------+------+-------------------+----+------------+-----+------------------- + 40 | 1 | 0 | .0000000 | 3 | 1401-04-01 | 200 | 3.0000000 + 20 | 1 | 0 | .0000000 | 1 | 1401-05-01 | 100 | 1.0000000 + 30 | 12 | 5 | .0000000 | 1 | 1401-06-01 | 500 | 1.0000000 + 30 | 12 | 5 | .0000000 | 3 | 1401-06-01 | 500 | 1.0000000 + 30 | 12 | 5 | .0000000 | 3 | 1401-06-01 | 600 | 3.0000000 + 40 | 1100 | 2400 | .0000000 | 2 | 1401-01-01 | 100 | 2.0000000 + 10 | 1 | 0 | .0000000 | 1 | 1401-03-01 | 200 | 1.0000000 + 30 | 1 | 0 | .0000000 | 1 | 1401-05-02 | 300 | 1.0000000 + 40 | 1 | 1 | .0000000 | 4 | 1401-06-01 | 700 | 4.0000000 + 40 | 1 | 1 | .0000000 | 4 | 1401-06-01 | 800 | 4.0000000 + 50 | 1 | 0 | .0000000 | 1 | 1401-06-01 | 400 | 1.0000000 + 50 | 1 | 0 | .0000000 | 2 | 1401-06-01 | 400 | 1.0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.vn*ow_sale.vn) preceding and floor(ow_sale.vn+ow_sale.pn) following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.pn desc); -- mvd 2,8,4->7; 10,1,4->9; + vn | cn | dt | pn | vn | dt | to_char | qty | to_char | prc +----+----+------------+-----+----+------------+-------------------+------+-------------------+------ + 30 | 1 | 1401-05-02 | 300 | 30 | 1401-05-02 | .0000000 | 1 | .0000000 | 0 + 50 | 1 | 1401-06-01 | 400 | 50 | 1401-06-01 | .0000000 | 1 | .0000000 | 0 + 30 | 3 | 1401-06-01 | 600 | 30 | 1401-06-01 | .0000000 | 12 | .0000000 | 5 + 40 | 4 | 1401-06-01 | 700 | 40 | 1401-06-01 | .0000000 | 1 | .0000000 | 1 + 20 | 1 | 1401-05-01 | 100 | 20 | 1401-05-01 | .0000000 | 1 | .0000000 | 0 + 10 | 1 | 1401-03-01 | 200 | 10 | 1401-03-01 | .0000000 | 1 | .0000000 | 0 + 30 | 1 | 1401-06-01 | 500 | 30 | 1401-06-01 | .0000000 | 12 | .0000000 | 5 + 50 | 2 | 1401-06-01 | 400 | 50 | 1401-06-01 | .0000000 | 1 | .0000000 | 0 + 40 | 2 | 1401-01-01 | 100 | 40 | 1401-01-01 | .0000000 | 1100 | .0000000 | 2400 + 40 | 3 | 1401-04-01 | 200 | 40 | 1401-04-01 | .0000000 | 1 | .0000000 | 0 + 30 | 3 | 1401-06-01 | 500 | 30 | 1401-06-01 | .0000000 | 12 | .0000000 | 5 + 40 | 4 | 1401-06-01 | 800 | 40 | 1401-06-01 | .0000000 | 1 | .0000000 | 1 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.cn+ow_sale.vn) preceding and unbounded following ); -- mvd 5,6,2,1->4; + pn | qty | prc | to_char | dt | vn +-----+------+------+-------------------+------------+---- + 200 | 1 | 0 | .0000000 | 1401-04-01 | 40 + 100 | 1 | 0 | .0000000 | 1401-05-01 | 20 + 300 | 1 | 0 | .0000000 | 1401-05-02 | 30 + 400 | 1 | 0 | .0000000 | 1401-06-01 | 50 + 400 | 1 | 0 | .0000000 | 1401-06-01 | 50 + 800 | 1 | 1 | .0000000 | 1401-06-01 | 40 + 600 | 12 | 5 | .0000000 | 1401-06-01 | 30 + 200 | 1 | 0 | .0000000 | 1401-03-01 | 10 + 700 | 1 | 1 | .0000000 | 1401-06-01 | 40 + 500 | 12 | 5 | .0000000 | 1401-06-01 | 30 + 500 | 12 | 5 | .0000000 | 1401-06-01 | 30 + 100 | 1100 | 2400 | .0000000 | 1401-01-01 | 40 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc rows between floor(ow_sale.cn) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn/ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc rows between floor(ow_sale.cn) preceding and unbounded following ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.cn asc); -- mvd 6,2,1->5; 8->7; 8->9; 6,2,1->10; 8->11; + pn | vn | qty | qty | to_char | dt | to_char | cn | to_char | to_char | to_char +-----+----+------+------+-------------------+------------+-------------------+----+-------------------+-------------------+------------------- + 400 | 50 | 1 | 1 | .0000000 | 1401-06-01 | 1.0000000 | 1 | .4166667 | 2.0000000 | 5.0000000 + 300 | 30 | 1 | 1 | .0000000 | 1401-05-02 | 1.0000000 | 1 | .4166667 | 1.0000000 | 5.0000000 + 500 | 30 | 12 | 12 | .0000000 | 1401-06-01 | 1.0000000 | 1 | .4166667 | 3.0000000 | 5.0000000 + 200 | 10 | 1 | 1 | .0000000 | 1401-03-01 | 1.0000000 | 1 | .4166667 | 1.0000000 | 5.0000000 + 100 | 20 | 1 | 1 | .0000000 | 1401-05-01 | 1.0000000 | 1 | .4166667 | 1.0000000 | 5.0000000 + 100 | 40 | 1100 | 1100 | .0000000 | 1401-01-01 | 6.0000000 | 2 | .5833333 | 1.0000000 | 7.0000000 + 400 | 50 | 1 | 1 | .0000000 | 1401-06-01 | 6.0000000 | 2 | .5833333 | 2.0000000 | 7.0000000 + 600 | 30 | 12 | 12 | .0000000 | 1401-06-01 | 8.0000000 | 3 | .8333333 | 3.0000000 | 10.0000000 + 500 | 30 | 12 | 12 | .0000000 | 1401-06-01 | 8.0000000 | 3 | .8333333 | 3.0000000 | 10.0000000 + 200 | 40 | 1 | 1 | .0000000 | 1401-04-01 | 8.0000000 | 3 | .8333333 | 1.0000000 | 10.0000000 + 700 | 40 | 1 | 1 | .0000000 | 1401-06-01 | 11.0000000 | 4 | 1.0000000 | 2.0000000 | 12.0000000 + 800 | 40 | 1 | 1 | .0000000 | 1401-06-01 | 11.0000000 | 4 | 1.0000000 | 2.0000000 | 12.0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.vn asc rows between current row and current row ); -- mvd 3,4->5; + qty | dt | vn | pn | to_char +------+------------+----+-----+------------------- + 1 | 1401-03-01 | 10 | 200 | .0000000 + 1 | 1401-05-01 | 20 | 100 | .0000000 + 1 | 1401-05-02 | 30 | 300 | .0000000 + 12 | 1401-06-01 | 30 | 500 | .0000000 + 12 | 1401-06-01 | 30 | 500 | .0000000 + 12 | 1401-06-01 | 30 | 600 | .0000000 + 1100 | 1401-01-01 | 40 | 100 | .0000000 + 1 | 1401-04-01 | 40 | 200 | .0000000 + 1 | 1401-06-01 | 40 | 700 | .0000000 + 1 | 1401-06-01 | 40 | 800 | .0000000 + 1 | 1401-06-01 | 50 | 400 | .0000000 + 1 | 1401-06-01 | 50 | 400 | .0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc),floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.dt order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn asc rows between current row and current row ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.dt order by ow_sale.cn asc); -- mvd 3,1,4->2; 3,1,6->5; 3,1,6->7; 3,1,6->8; 3,1,6->9; 3,1,6->10; + cn | to_char | dt | pn | to_char | vn | to_char | to_char | to_char | to_char +----+-------------------+------------+-----+-------------------+----+-------------------+-------------------+-------------------+------------------- + 1 | .0000000 | 1401-05-01 | 100 | 1.0000000 | 20 | 1.0000000 | 1.0000000 | .0000000 | 1.0000000 + 1 | .0000000 | 1401-05-02 | 300 | 1.0000000 | 30 | 1.0000000 | 1.0000000 | .0000000 | 1.0000000 + 1 | .0000000 | 1401-06-01 | 400 | 1.0000000 | 50 | 1.0000000 | 1.0000000 | .0000000 | 1.0000000 + 1 | .0000000 | 1401-06-01 | 500 | 1.0000000 | 30 | 1.0000000 | 1.0000000 | .0000000 | 1.0000000 + 3 | .0000000 | 1401-04-01 | 200 | 1.0000000 | 40 | 1.0000000 | 1.0000000 | .0000000 | 1.0000000 + 3 | .0000000 | 1401-06-01 | 500 | 1.0000000 | 30 | 1.0000000 | 1.0000000 | .0000000 | 1.0000000 + 4 | .0000000 | 1401-06-01 | 700 | 1.0000000 | 40 | 1.0000000 | 1.0000000 | .0000000 | 1.0000000 + 1 | .0000000 | 1401-03-01 | 200 | 1.0000000 | 10 | 1.0000000 | 1.0000000 | .0000000 | 1.0000000 + 2 | .0000000 | 1401-01-01 | 100 | 1.0000000 | 40 | 1.0000000 | 1.0000000 | .0000000 | 1.0000000 + 2 | .0000000 | 1401-06-01 | 400 | 1.0000000 | 50 | 1.0000000 | 1.0000000 | .0000000 | 1.0000000 + 3 | .0000000 | 1401-06-01 | 600 | 1.0000000 | 30 | 1.0000000 | 1.0000000 | .0000000 | 1.0000000 + 4 | .0000000 | 1401-06-01 | 800 | 1.0000000 | 40 | 1.0000000 | 1.0000000 | .0000000 | 1.0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn-ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc rows between current row and floor(ow_sale.prc/ow_sale.cn) following ); -- mvd 3,1,5->6; + cn | vn | prc | vn | pn | to_char +----+----+------+----+-----+------------------- + 1 | 10 | 0 | 10 | 200 | .0000000 + 1 | 20 | 0 | 20 | 100 | .0000000 + 1 | 30 | 0 | 30 | 300 | .0000000 + 1 | 50 | 0 | 50 | 400 | .0000000 + 3 | 40 | 0 | 40 | 200 | .0000000 + 4 | 40 | 1 | 40 | 700 | .0000000 + 4 | 40 | 1 | 40 | 800 | .0000000 + 1 | 30 | 5 | 30 | 500 | .0000000 + 3 | 30 | 5 | 30 | 500 | .0000000 + 3 | 30 | 5 | 30 | 600 | .0000000 + 2 | 50 | 0 | 50 | 400 | .0000000 + 2 | 40 | 2400 | 40 | 100 | .0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn+ow_sale.cn),floor(ow_sale.pn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between current row and unbounded following ); -- mvd 3,8,2,5->7; + dt | qty | cn | qty | pn | cn | to_char | vn +------------+------+----+------+-----+----+-------------------+---- + 1401-03-01 | 1 | 1 | 1 | 200 | 1 | .0000000 | 10 + 1401-05-01 | 1 | 1 | 1 | 100 | 1 | .0000000 | 20 + 1401-06-01 | 1 | 2 | 1 | 400 | 2 | .0000000 | 50 + 1401-04-01 | 1 | 3 | 1 | 200 | 3 | .0000000 | 40 + 1401-06-01 | 12 | 3 | 12 | 600 | 3 | .0000000 | 30 + 1401-06-01 | 1 | 4 | 1 | 800 | 4 | .0000000 | 40 + 1401-05-02 | 1 | 1 | 1 | 300 | 1 | .0000000 | 30 + 1401-06-01 | 1 | 1 | 1 | 400 | 1 | .0000000 | 50 + 1401-06-01 | 12 | 1 | 12 | 500 | 1 | .0000000 | 30 + 1401-01-01 | 1100 | 2 | 1100 | 100 | 2 | .0000000 | 40 + 1401-06-01 | 12 | 3 | 12 | 500 | 3 | .0000000 | 30 + 1401-06-01 | 1 | 4 | 1 | 700 | 4 | .0000000 | 40 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty-ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.pn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 4,6,3->5; 8->7; 4,6,3->9; + prc | qty | pn | cn | to_char | dt | to_char | vn | to_char +------+------+-----+----+-------------------+------------+-------------------+----+------------------- + 2400 | 1100 | 100 | 2 | .0000000 | 1401-01-01 | .0000000 | 40 | 1.0000000 + 0 | 1 | 200 | 1 | .0000000 | 1401-03-01 | .0000000 | 10 | 1.0000000 + 0 | 1 | 200 | 3 | .0000000 | 1401-04-01 | .0000000 | 40 | 1.0000000 + 0 | 1 | 100 | 1 | .0000000 | 1401-05-01 | .0000000 | 20 | 1.0000000 + 0 | 1 | 300 | 1 | .0000000 | 1401-05-02 | .0000000 | 30 | 1.0000000 + 0 | 1 | 400 | 1 | .0000000 | 1401-06-01 | .0000000 | 50 | 1.0000000 + 0 | 1 | 400 | 2 | .0000000 | 1401-06-01 | .0000000 | 50 | 1.0000000 + 5 | 12 | 500 | 1 | .0000000 | 1401-06-01 | .0000000 | 30 | 1.0000000 + 5 | 12 | 500 | 3 | .0000000 | 1401-06-01 | .0000000 | 30 | 1.0000000 + 5 | 12 | 600 | 3 | .0000000 | 1401-06-01 | .0000000 | 30 | 1.0000000 + 1 | 1 | 700 | 4 | .0000000 | 1401-06-01 | .0000000 | 40 | 1.0000000 + 1 | 1 | 800 | 4 | .0000000 | 1401-06-01 | .0000000 | 40 | 1.0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between 1 following and 8 following ); -- mvd 3,4,5->2; + qty | to_char | prc | vn | pn +------+-------------------+------+----+----- + 1 | .0000000 | 0 | 20 | 100 + 1 | .0000000 | 0 | 10 | 200 + 1 | .0000000 | 0 | 40 | 200 + 1 | .0000000 | 1 | 40 | 800 + 12 | .0000000 | 5 | 30 | 600 + 1100 | .0000000 | 2400 | 40 | 100 + 1 | .0000000 | 0 | 30 | 300 + 1 | .0000000 | 0 | 50 | 400 + 1 | .0000000 | 0 | 50 | 400 + 1 | .0000000 | 1 | 40 | 700 + 12 | .0000000 | 5 | 30 | 500 + 12 | .0000000 | 5 | 30 | 500 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn*ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.qty+ow_sale.qty) following and 4 following ), +win2 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.vn desc); -- mvd 4,5,6,7->3; 5,1,7->8; + vn | vn | to_char | prc | cn | dt | qty | to_char +----+----+-------------------+------+----+------------+------+------------------- + 40 | 40 | .0000000 | 0 | 3 | 1401-04-01 | 1 | 1.0000000 + 20 | 20 | .0000000 | 0 | 1 | 1401-05-01 | 1 | 3.0000000 + 40 | 40 | .0000000 | 1 | 4 | 1401-06-01 | 1 | 2.0000000 + 40 | 40 | .0000000 | 1 | 4 | 1401-06-01 | 1 | 1.0000000 + 30 | 30 | .0000000 | 5 | 1 | 1401-06-01 | 12 | 1.0000000 + 30 | 30 | .0000000 | 5 | 3 | 1401-06-01 | 12 | 2.0000000 + 30 | 30 | .0000000 | 5 | 3 | 1401-06-01 | 12 | 1.0000000 + 40 | 40 | .0000000 | 2400 | 2 | 1401-01-01 | 1100 | 1.0000000 + 10 | 10 | .0000000 | 0 | 1 | 1401-03-01 | 1 | 4.0000000 + 30 | 30 | .0000000 | 0 | 1 | 1401-05-02 | 1 | 2.0000000 + 50 | 50 | .0000000 | 0 | 1 | 1401-06-01 | 1 | 1.0000000 + 50 | 50 | .0000000 | 0 | 2 | 1401-06-01 | 1 | 1.0000000 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn*ow_sale.qty),floor(ow_sale.vn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows between 5 following and unbounded following ); -- mvd 4,5,6->3; + vn | vn | to_char | cn | qty | pn +----+----+-------------------+----+------+----- + 20 | 20 | .0000000 | 1 | 1 | 100 + 10 | 10 | .0000000 | 1 | 1 | 200 + 40 | 40 | .0000000 | 3 | 1 | 200 + 30 | 30 | .0000000 | 1 | 12 | 500 + 30 | 30 | .0000000 | 3 | 12 | 500 + 40 | 40 | .0000000 | 4 | 1 | 700 + 40 | 40 | .0000000 | 2 | 1100 | 100 + 30 | 30 | .0000000 | 1 | 1 | 300 + 50 | 50 | .0000000 | 1 | 1 | 400 + 50 | 50 | .0000000 | 2 | 1 | 400 + 30 | 30 | .0000000 | 3 | 12 | 600 + 40 | 40 | .0000000 | 4 | 1 | 800 +(12 rows) + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between floor(ow_sale.qty) following and unbounded following ), +win2 as (partition by ow_sale.vn order by ow_sale.cn asc); -- mvd 1,8,9,3->7; 1,8,9,3->10; 1,9->11; 1,8,9,3->12; 1,9->13; 1,9->14; + cn | cn | pn | prc | cn | pn | to_char | dt | vn | to_char | to_char | to_char | to_char | to_char +----+----+-----+------+----+-----+-------------------+------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | 1 | 100 | 0 | 1 | 100 | .0000000 | 1401-05-01 | 20 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 3 | 3 | 200 | 0 | 3 | 200 | .0000000 | 1401-04-01 | 40 | .0000000 | 2.0000000 | .0000000 | 2.0000000 | 2.0000000 + 1 | 1 | 300 | 0 | 1 | 300 | .0000000 | 1401-05-02 | 30 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 400 | 0 | 1 | 400 | .0000000 | 1401-06-01 | 50 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 500 | 5 | 1 | 500 | .0000000 | 1401-06-01 | 30 | .0000000 | 1.0000000 | .0000000 | 2.0000000 | 1.0000000 + 3 | 3 | 500 | 5 | 3 | 500 | .0000000 | 1401-06-01 | 30 | .0000000 | 3.0000000 | .0000000 | 3.0000000 | 3.0000000 + 4 | 4 | 700 | 1 | 4 | 700 | .0000000 | 1401-06-01 | 40 | .0000000 | 3.0000000 | .0000000 | 3.0000000 | 3.0000000 + 2 | 2 | 100 | 2400 | 2 | 100 | .0000000 | 1401-01-01 | 40 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 200 | 0 | 1 | 200 | .0000000 | 1401-03-01 | 10 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 2 | 2 | 400 | 0 | 2 | 400 | .0000000 | 1401-06-01 | 50 | .0000000 | 2.0000000 | .0000000 | 2.0000000 | 2.0000000 + 3 | 3 | 600 | 5 | 3 | 600 | .0000000 | 1401-06-01 | 30 | .0000000 | 3.0000000 | .0000000 | 4.0000000 | 3.0000000 + 4 | 4 | 800 | 1 | 4 | 800 | .0000000 | 1401-06-01 | 40 | .0000000 | 3.0000000 | .0000000 | 4.0000000 | 3.0000000 +(12 rows) + +-- COVAR_SAMP() function with NULL OVER() clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (); -- mvd 6->6; + pn | qty | vn | pn | cn | to_char +-----+------+----+-----+----+------------------- + 200 | 1 | 10 | 200 | 1 | 1272.8030303 + 100 | 1 | 20 | 100 | 1 | 1272.8030303 + 200 | 1 | 40 | 200 | 3 | 1272.8030303 + 600 | 12 | 30 | 600 | 3 | 1272.8030303 + 400 | 1 | 50 | 400 | 2 | 1272.8030303 + 800 | 1 | 40 | 800 | 4 | 1272.8030303 + 300 | 1 | 30 | 300 | 1 | 1272.8030303 + 400 | 1 | 50 | 400 | 1 | 1272.8030303 + 500 | 12 | 30 | 500 | 1 | 1272.8030303 + 500 | 12 | 30 | 500 | 3 | 1272.8030303 + 100 | 1100 | 40 | 100 | 2 | 1272.8030303 + 700 | 1 | 40 | 700 | 4 | 1272.8030303 +(12 rows) + +-- COVAR_SAMP() function with NULL OVER() clause in combination with other window functions -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc-ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.cn) as int),cast (floor(ow_sale.cn+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc); -- mvd 6->6; 6->7; 3->8; 10,4,3,11->9; 10,4,3,11->12; 10,4,3,11->13; + pn | qty | cn | dt | qty | to_char | to_char | to_char | to_char | prc | vn | to_char | to_char +-----+------+----+------------+------+-------------------+-------------------+-------------------+-------------------+------+----+-------------------+------------------- + 800 | 1 | 4 | 1401-06-01 | 1 | 260317.4166667 | 12.0000000 | 1.0000000 | .0000000 | 1 | 40 | 1.0000000 | 2.0000000 + 700 | 1 | 4 | 1401-06-01 | 1 | 260317.4166667 | 12.0000000 | 2.0000000 | .0000000 | 1 | 40 | .0000000 | 1.0000000 + 500 | 12 | 3 | 1401-06-01 | 12 | 260317.4166667 | 12.0000000 | 3.0000000 | .0000000 | 5 | 30 | .0000000 | 1.0000000 + 600 | 12 | 3 | 1401-06-01 | 12 | 260317.4166667 | 12.0000000 | 4.0000000 | .0000000 | 5 | 30 | 1.0000000 | 2.0000000 + 200 | 1 | 3 | 1401-04-01 | 1 | 260317.4166667 | 12.0000000 | 5.0000000 | .0000000 | 0 | 40 | .0000000 | 1.0000000 + 400 | 1 | 2 | 1401-06-01 | 1 | 260317.4166667 | 12.0000000 | 6.0000000 | .0000000 | 0 | 50 | .0000000 | 1.0000000 + 100 | 1100 | 2 | 1401-01-01 | 1100 | 260317.4166667 | 12.0000000 | 7.0000000 | .0000000 | 2400 | 40 | .0000000 | 1.0000000 + 200 | 1 | 1 | 1401-03-01 | 1 | 260317.4166667 | 12.0000000 | 8.0000000 | .0000000 | 0 | 10 | .0000000 | 1.0000000 + 400 | 1 | 1 | 1401-06-01 | 1 | 260317.4166667 | 12.0000000 | 9.0000000 | .0000000 | 0 | 50 | .0000000 | 1.0000000 + 500 | 12 | 1 | 1401-06-01 | 12 | 260317.4166667 | 12.0000000 | 10.0000000 | .0000000 | 5 | 30 | .0000000 | 1.0000000 + 300 | 1 | 1 | 1401-05-02 | 1 | 260317.4166667 | 12.0000000 | 11.0000000 | .0000000 | 0 | 30 | .0000000 | 1.0000000 + 100 | 1 | 1 | 1401-05-01 | 1 | 260317.4166667 | 12.0000000 | 12.0000000 | .0000000 | 0 | 20 | .0000000 | 1.0000000 +(12 rows) + +-- COVAR_SAMP() function with OVER() clause having ONLY PARTITION BY -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.cn); -- mvd 4,5,6->3; + vn | vn | to_char | prc | cn | qty +----+----+-------------------+------+----+------ + 50 | 50 | .0000000 | 0 | 2 | 1 + 30 | 30 | .0000000 | 5 | 1 | 12 + 30 | 30 | .0000000 | 5 | 3 | 12 + 30 | 30 | .0000000 | 5 | 3 | 12 + 10 | 10 | .0000000 | 0 | 1 | 1 + 20 | 20 | .0000000 | 0 | 1 | 1 + 30 | 30 | .0000000 | 0 | 1 | 1 + 50 | 50 | .0000000 | 0 | 1 | 1 + 40 | 40 | .0000000 | 0 | 3 | 1 + 40 | 40 | .0000000 | 1 | 4 | 1 + 40 | 40 | .0000000 | 1 | 4 | 1 + 40 | 40 | .0000000 | 2400 | 2 | 1100 +(12 rows) + +-- COVAR_SAMP() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn*ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.qty,ow_sale.qty),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.qty,ow_sale.qty), +win2 as (order by ow_sale.vn asc); -- mvd 8,9,6,1->7; 8,9,6,1->10; 2->11; + pn | vn | pn | pn | vn | qty | to_char | prc | dt | to_char | to_char +-----+----+-----+-----+----+------+-------------------+------+------------+-------------------+------------------- + 200 | 10 | 200 | 200 | 10 | 1 | .0000000 | 0 | 1401-03-01 | 1.0000000 | 1.0000000 + 100 | 20 | 100 | 100 | 20 | 1 | .0000000 | 0 | 1401-05-01 | 1.0000000 | 2.0000000 + 600 | 30 | 600 | 600 | 30 | 12 | .0000000 | 5 | 1401-06-01 | 1.0000000 | 3.0000000 + 300 | 30 | 300 | 300 | 30 | 1 | .0000000 | 0 | 1401-05-02 | 1.0000000 | 4.0000000 + 500 | 30 | 500 | 500 | 30 | 12 | .0000000 | 5 | 1401-06-01 | 2.0000000 | 5.0000000 + 500 | 30 | 500 | 500 | 30 | 12 | .0000000 | 5 | 1401-06-01 | 2.0000000 | 6.0000000 + 100 | 40 | 100 | 100 | 40 | 1100 | .0000000 | 2400 | 1401-01-01 | 1.0000000 | 7.0000000 + 800 | 40 | 800 | 800 | 40 | 1 | .0000000 | 1 | 1401-06-01 | 1.0000000 | 8.0000000 + 700 | 40 | 700 | 700 | 40 | 1 | .0000000 | 1 | 1401-06-01 | 1.0000000 | 9.0000000 + 200 | 40 | 200 | 200 | 40 | 1 | .0000000 | 0 | 1401-04-01 | 1.0000000 | 10.0000000 + 400 | 50 | 400 | 400 | 50 | 1 | .0000000 | 0 | 1401-06-01 | 2.0000000 | 11.0000000 + 400 | 50 | 400 | 400 | 50 | 1 | .0000000 | 0 | 1401-06-01 | 2.0000000 | 12.0000000 +(12 rows) + +-- COVAR_SAMP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc/ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc); -- mvd 1->4; + cn | cn | cn | to_char +----+----+----+------------------- + 1 | 1 | 1 | .0000000 + 1 | 1 | 1 | .0000000 + 1 | 1 | 1 | .0000000 + 1 | 1 | 1 | .0000000 + 1 | 1 | 1 | .0000000 + 2 | 2 | 2 | 9404.2857143 + 2 | 2 | 2 | 9404.2857143 + 3 | 3 | 3 | 6572.0000000 + 3 | 3 | 3 | 6572.0000000 + 3 | 3 | 3 | 6572.0000000 + 4 | 4 | 4 | 5480.0000000 + 4 | 4 | 4 | 5480.0000000 +(12 rows) + +-- COVAR_SAMP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn desc); -- mvd 6,4->5; 6,4->7; 6,4->8; 6,4->9; 6,4->10; 6,4->11; + dt | vn | vn | pn | to_char | cn | to_char | to_char | to_char | to_char | to_char +------------+----+----+-----+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 1401-01-01 | 40 | 40 | 100 | .0000000 | 2 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 | .0833333 + 1401-05-01 | 20 | 20 | 100 | 200.0000000 | 1 | 2.0000000 | .0909091 | 2.0000000 | 2.0000000 | .1666667 + 1401-04-01 | 40 | 40 | 200 | 133.3333333 | 3 | 3.0000000 | .1818182 | 3.0000000 | 3.0000000 | .2500000 + 1401-03-01 | 10 | 10 | 200 | 225.0000000 | 1 | 4.0000000 | .2727273 | 4.0000000 | 4.0000000 | .3333333 + 1401-05-02 | 30 | 30 | 300 | 170.0000000 | 1 | 5.0000000 | .3636364 | 5.0000000 | 5.0000000 | .4166667 + 1401-06-01 | 50 | 50 | 400 | 216.6666667 | 2 | 6.0000000 | .4545455 | 6.0000000 | 6.0000000 | .5000000 + 1401-06-01 | 50 | 50 | 400 | 228.5714286 | 1 | 7.0000000 | .5454545 | 7.0000000 | 7.0000000 | .5833333 + 1401-06-01 | 30 | 30 | 500 | 198.2142857 | 3 | 8.0000000 | .6363636 | 8.0000000 | 8.0000000 | .6666667 + 1401-06-01 | 30 | 30 | 500 | 175.0000000 | 1 | 9.0000000 | .7272727 | 9.0000000 | 9.0000000 | .7500000 + 1401-06-01 | 30 | 30 | 600 | 156.6666667 | 3 | 10.0000000 | .8181818 | 10.0000000 | 10.0000000 | .8333333 + 1401-06-01 | 40 | 40 | 700 | 145.4545455 | 4 | 11.0000000 | .9090909 | 11.0000000 | 11.0000000 | .9166667 + 1401-06-01 | 40 | 40 | 800 | 135.6060606 | 4 | 12.0000000 | 1.0000000 | 12.0000000 | 12.0000000 | 1.0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ); -- mvd 6->5; + pn | pn | pn | dt | to_char | cn +-----+-----+-----+------------+-------------------+---- + 800 | 800 | 800 | 1401-06-01 | .0000000 | 4 + 700 | 700 | 700 | 1401-06-01 | .0000000 | 4 + 500 | 500 | 500 | 1401-06-01 | 2.0000000 | 3 + 200 | 200 | 200 | 1401-04-01 | 2.0000000 | 3 + 600 | 600 | 600 | 1401-06-01 | 2.0000000 | 3 + 400 | 400 | 400 | 1401-06-01 | -1.6666667 | 2 + 100 | 100 | 100 | 1401-01-01 | -1.6666667 | 2 + 300 | 300 | 300 | 1401-05-02 | 4.6969697 | 1 + 400 | 400 | 400 | 1401-06-01 | 4.6969697 | 1 + 500 | 500 | 500 | 1401-06-01 | 4.6969697 | 1 + 100 | 100 | 100 | 1401-05-01 | 4.6969697 | 1 + 200 | 200 | 200 | 1401-03-01 | 4.6969697 | 1 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.qty)) OVER(order by ow_sale.pn desc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.pn+ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range unbounded preceding ), +win2 as (order by ow_sale.ord, ow_sale.vn asc), +win3 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.vn asc), +win4 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.cn order by ow_sale.pn asc); -- mvd 2->7; 2->8; 1->9; 4,11,3,1->10; 11,3,13,2->12; + vn | pn | dt | prc | vn | pn | to_char | to_char | to_char | to_char | cn | to_char | qty +----+-----+------------+------+----+-----+-------------------+-------------------+-------------------+-------------------+----+-------------------+------ + 40 | 100 | 1401-01-01 | 2400 | 40 | 100 | 100125.3333333 | 1.0000000 | .0000000 | 1.0000000 | 2 | 1.0000000 | 1100 + 10 | 200 | 1401-03-01 | 0 | 10 | 200 | 28.2333333 | 1.0000000 | .0000000 | 1.0000000 | 1 | 1.0000000 | 1 + 40 | 200 | 1401-04-01 | 0 | 40 | 200 | 28.2333333 | 1.0000000 | .0000000 | 1.0000000 | 3 | 1.0000000 | 1 + 20 | 100 | 1401-05-01 | 0 | 20 | 100 | 100125.3333333 | 1.0000000 | .0000000 | 1.0000000 | 1 | 1.0000000 | 1 + 30 | 300 | 1401-05-02 | 0 | 30 | 300 | 32.4107143 | 1.0000000 | .0000000 | 1.0000000 | 1 | 1.0000000 | 1 + 50 | 400 | 1401-06-01 | 0 | 50 | 400 | 34.5714286 | 1.0000000 | .0000000 | 1.0000000 | 1 | 1.0000000 | 1 + 50 | 400 | 1401-06-01 | 0 | 50 | 400 | 34.5714286 | 1.0000000 | .0000000 | 1.0000000 | 2 | 1.0000000 | 1 + 30 | 500 | 1401-06-01 | 5 | 30 | 500 | 36.3000000 | 1.0000000 | .0000000 | 1.0000000 | 1 | 1.0000000 | 12 + 30 | 500 | 1401-06-01 | 5 | 30 | 500 | 36.3000000 | 1.0000000 | .0000000 | 1.0000000 | 3 | .5000000 | 12 + 30 | 600 | 1401-06-01 | 5 | 30 | 600 | 40.3333333 | 1.0000000 | .0000000 | 1.0000000 | 3 | 1.0000000 | 12 + 40 | 700 | 1401-06-01 | 1 | 40 | 700 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 4 | .5000000 | 1 + 40 | 800 | 1401-06-01 | 1 | 40 | 800 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 4 | 1.0000000 | 1 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range floor(ow_sale.qty*ow_sale.prc) preceding ); -- mvd 3->5; + pn | pn | vn | pn | to_char +-----+-----+----+-----+------------------- + 400 | 400 | 50 | 400 | .0000000 + 400 | 400 | 50 | 400 | .0000000 + 100 | 100 | 40 | 100 | -4.6666667 + 700 | 700 | 40 | 700 | .0000000 + 200 | 200 | 40 | 200 | .0000000 + 800 | 800 | 40 | 800 | .0000000 + 600 | 600 | 30 | 600 | -.2222222 + 300 | 300 | 30 | 300 | .0000000 + 500 | 500 | 30 | 500 | -.2222222 + 500 | 500 | 30 | 500 | -.2222222 + 100 | 100 | 20 | 100 | .0000000 + 200 | 200 | 10 | 200 | .0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn+ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.vn)) OVER(order by ow_sale.vn asc range 4 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty-ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range 4 preceding ), +win2 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 3->2; 3->4; 3->5; 3->6; 8,3,9->7; + prc | to_char | vn | to_char | to_char | to_char | to_char | cn | qty +------+-------------------+----+-------------------+-------------------+-------------------+-------------------+----+------ + 0 | .0000000 | 10 | 1.0000000 | -9.0000000 | 1.0000000 | .0000000 | 1 | 1 + 0 | .0000000 | 20 | 1.0000000 | -19.0000000 | 1.0000000 | .0000000 | 1 | 1 + 0 | .0000000 | 30 | 4.0000000 | -18.0000000 | 12.0000000 | .0000000 | 1 | 1 + 5 | .0000000 | 30 | 4.0000000 | -18.0000000 | 12.0000000 | .0000000 | 1 | 12 + 5 | .0000000 | 30 | 4.0000000 | -18.0000000 | 12.0000000 | .0000000 | 3 | 12 + 5 | .0000000 | 30 | 4.0000000 | -18.0000000 | 12.0000000 | .0000000 | 3 | 12 + 2400 | .0000000 | 40 | 4.0000000 | 1060.0000000 | 1100.0000000 | .0000000 | 2 | 1100 + 0 | .0000000 | 40 | 4.0000000 | 1060.0000000 | 1100.0000000 | .0000000 | 3 | 1 + 1 | .0000000 | 40 | 4.0000000 | 1060.0000000 | 1100.0000000 | .0000000 | 4 | 1 + 1 | .0000000 | 40 | 4.0000000 | 1060.0000000 | 1100.0000000 | .0000000 | 4 | 1 + 0 | .0000000 | 50 | 2.0000000 | -49.0000000 | 1.0000000 | .0000000 | 1 | 1 + 0 | .0000000 | 50 | 2.0000000 | -49.0000000 | 1.0000000 | .0000000 | 2 | 1 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn*ow_sale.cn),floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range current row ); -- mvd 7->6; + prc | pn | qty | cn | qty | to_char | vn +------+-----+------+----+------+-------------------+---- + 0 | 400 | 1 | 2 | 1 | .0000000 | 50 + 0 | 400 | 1 | 1 | 1 | .0000000 | 50 + 2400 | 100 | 1100 | 2 | 1100 | 12666.6666667 | 40 + 1 | 700 | 1 | 4 | 1 | 12666.6666667 | 40 + 1 | 800 | 1 | 4 | 1 | 12666.6666667 | 40 + 0 | 200 | 1 | 3 | 1 | 12666.6666667 | 40 + 5 | 600 | 12 | 3 | 12 | 3000.0000000 | 30 + 0 | 300 | 1 | 1 | 1 | 3000.0000000 | 30 + 5 | 500 | 12 | 1 | 12 | 3000.0000000 | 30 + 5 | 500 | 12 | 3 | 12 | 3000.0000000 | 30 + 0 | 100 | 1 | 1 | 1 | .0000000 | 20 + 0 | 200 | 1 | 1 | 1 | .0000000 | 10 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range current row ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc); -- mvd 1->5; 1->6; 1,8->7; + vn | prc | dt | cn | to_char | to_char | to_char | pn +----+------+------------+----+-------------------+-------------------+-------------------+----- + 10 | 0 | 1401-03-01 | 1 | .0000000 | .0000000 | 10.0000000 | 200 + 20 | 0 | 1401-05-01 | 1 | .0000000 | .0000000 | 20.0000000 | 100 + 30 | 5 | 1401-06-01 | 3 | 15833.3333333 | 5.0000000 | .0000000 | 600 + 30 | 0 | 1401-05-02 | 1 | 15833.3333333 | 5.0000000 | 30.0000000 | 300 + 30 | 5 | 1401-06-01 | 1 | 15833.3333333 | 5.0000000 | .0000000 | 500 + 30 | 5 | 1401-06-01 | 3 | 15833.3333333 | 5.0000000 | .0000000 | 500 + 40 | 1 | 1401-06-01 | 4 | 123333.3333333 | 2400.0000000 | .0000000 | 800 + 40 | 2400 | 1401-01-01 | 2 | 123333.3333333 | 2400.0000000 | .0000000 | 100 + 40 | 0 | 1401-04-01 | 3 | 123333.3333333 | 2400.0000000 | 40.0000000 | 200 + 40 | 1 | 1401-06-01 | 4 | 123333.3333333 | 2400.0000000 | .0000000 | 700 + 50 | 0 | 1401-06-01 | 1 | .0000000 | .0000000 | 50.0000000 | 400 + 50 | 0 | 1401-06-01 | 2 | .0000000 | .0000000 | 50.0000000 | 400 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and 4 preceding ); -- mvd 1->6; + pn | vn | cn | pn | pn | to_char +-----+----+----+-----+-----+------------------- + 100 | 20 | 1 | 100 | 100 | .0000000 + 100 | 40 | 2 | 100 | 100 | .0000000 + 200 | 10 | 1 | 200 | 200 | .0000000 + 200 | 40 | 3 | 200 | 200 | .0000000 + 300 | 30 | 1 | 300 | 300 | -40000.0000000 + 400 | 50 | 1 | 400 | 400 | -48000.0000000 + 400 | 50 | 2 | 400 | 400 | -48000.0000000 + 500 | 30 | 1 | 500 | 500 | -57142.8571429 + 500 | 30 | 3 | 500 | 500 | -57142.8571429 + 600 | 30 | 3 | 600 | 600 | -59750.0000000 + 700 | 40 | 4 | 700 | 700 | -60994.4444444 + 800 | 40 | 4 | 800 | 800 | -62984.5454545 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn-ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and 1 preceding ), +win2 as (order by ow_sale.vn asc), +win3 as (order by ow_sale.ord, ow_sale.vn desc), +win4 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc); -- mvd 2->4; 2->5; 2->6; 2->7; 2->8; 2,10->9; + cn | vn | cn | to_char | to_char | to_char | to_char | to_char | to_char | pn +----+----+----+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+----- + 2 | 40 | 2 | .0000000 | .8333333 | .0000000 | .0000000 | 200.0000000 | .0000000 | 100 + 1 | 10 | 1 | .0000000 | .0833333 | -2300.0000000 | .0909091 | 200.0000000 | .0000000 | 200 + 3 | 40 | 3 | .0000000 | .8333333 | .0000000 | .1818182 | 200.0000000 | .0000000 | 200 + 1 | 20 | 1 | .0000000 | .1666667 | 200.0000000 | .2727273 | 100.0000000 | .0000000 | 100 + 1 | 30 | 1 | .0000000 | .5000000 | 100.0000000 | .3636364 | 100.0000000 | .0000000 | 300 + 1 | 50 | 1 | .0000000 | 1.0000000 | 300.0000000 | .4545455 | 100.0000000 | .0000000 | 400 + 2 | 50 | 2 | .0000000 | 1.0000000 | 300.0000000 | .5454545 | 100.0000000 | .0000000 | 400 + 1 | 30 | 1 | .0000000 | .5000000 | 400.0000000 | .6363636 | 100.0000000 | .0000000 | 500 + 3 | 30 | 3 | .0000000 | .5000000 | 400.0000000 | .7272727 | 100.0000000 | .0000000 | 500 + 3 | 30 | 3 | .0000000 | .5000000 | 400.0000000 | .8181818 | 100.0000000 | .0000000 | 600 + 4 | 40 | 4 | .0000000 | .8333333 | 400.0000000 | .9090909 | 100.0000000 | .0000000 | 700 + 4 | 40 | 4 | .0000000 | .8333333 | 495.0000000 | 1.0000000 | 100.0000000 | .0000000 | 800 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty/ow_sale.qty),floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and current row ); -- mvd 5->4; + prc | dt | pn | to_char | vn +------+------------+-----+-------------------+---- + 0 | 1401-06-01 | 400 | .0000000 | 50 + 0 | 1401-06-01 | 400 | .0000000 | 50 + 2400 | 1401-01-01 | 100 | .0000000 | 40 + 1 | 1401-06-01 | 700 | .0000000 | 40 + 1 | 1401-06-01 | 800 | .0000000 | 40 + 0 | 1401-04-01 | 200 | .0000000 | 40 + 5 | 1401-06-01 | 600 | .0000000 | 30 + 0 | 1401-05-02 | 300 | .0000000 | 30 + 5 | 1401-06-01 | 500 | .0000000 | 30 + 5 | 1401-06-01 | 500 | .0000000 | 30 + 0 | 1401-05-01 | 100 | .0000000 | 20 + 0 | 1401-03-01 | 200 | .0000000 | 10 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn/ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.pn) following ); -- mvd 2->6; + qty | vn | vn | qty | cn | to_char +------+----+----+------+----+------------------- + 1 | 50 | 50 | 1 | 2 | .0000000 + 1 | 50 | 50 | 1 | 1 | .0000000 + 1100 | 40 | 40 | 1100 | 2 | .0000000 + 1 | 40 | 40 | 1 | 4 | .0000000 + 1 | 40 | 40 | 1 | 3 | .0000000 + 1 | 40 | 40 | 1 | 4 | .0000000 + 12 | 30 | 30 | 12 | 3 | .0000000 + 1 | 30 | 30 | 1 | 1 | .0000000 + 12 | 30 | 30 | 12 | 1 | .0000000 + 12 | 30 | 30 | 12 | 3 | .0000000 + 1 | 20 | 20 | 1 | 1 | .0000000 + 1 | 10 | 10 | 1 | 1 | .0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn*ow_sale.vn),floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and 1 following ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc); -- mvd 3->2; 5,6,3,7,1->4; 3->8; 5,6,3,7,1->9; + pn | to_char | vn | to_char | cn | dt | qty | to_char | to_char +-----+-------------------+----+-------------------+----+------------+------+-------------------+------------------- + 200 | .0000000 | 10 | 1.0000000 | 1 | 1401-03-01 | 1 | 200.0000000 | 1.0000000 + 100 | .0000000 | 20 | 1.0000000 | 1 | 1401-05-01 | 1 | 100.0000000 | 1.0000000 + 600 | 1351733.3333333 | 30 | 1.0000000 | 3 | 1401-06-01 | 12 | 100.0000000 | 1.0000000 + 300 | 1351733.3333333 | 30 | 1.0000000 | 1 | 1401-05-02 | 1 | 100.0000000 | 1.0000000 + 500 | 1351733.3333333 | 30 | 1.0000000 | 1 | 1401-06-01 | 12 | 100.0000000 | 1.0000000 + 500 | 1351733.3333333 | 30 | 1.0000000 | 3 | 1401-06-01 | 12 | 100.0000000 | 1.0000000 + 100 | 2577011.1111111 | 40 | 1.0000000 | 2 | 1401-01-01 | 1100 | 100.0000000 | 1.0000000 + 700 | 2577011.1111111 | 40 | 1.0000000 | 4 | 1401-06-01 | 1 | 100.0000000 | 1.0000000 + 200 | 2577011.1111111 | 40 | 1.0000000 | 3 | 1401-04-01 | 1 | 100.0000000 | 1.0000000 + 800 | 2577011.1111111 | 40 | 1.0000000 | 4 | 1401-06-01 | 1 | 100.0000000 | 1.0000000 + 400 | 2107651.5151515 | 50 | 1.0000000 | 2 | 1401-06-01 | 1 | 100.0000000 | 1.0000000 + 400 | 2107651.5151515 | 50 | 1.0000000 | 1 | 1401-06-01 | 1 | 100.0000000 | 1.0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty+ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and unbounded following ); -- mvd 3->2; + vn | to_char | cn +----+-------------------+---- + 10 | 100109.1818182 | 1 + 20 | 100109.1818182 | 1 + 30 | 100109.1818182 | 1 + 50 | 100109.1818182 | 1 + 30 | 100109.1818182 | 1 + 40 | 100109.1818182 | 2 + 50 | 100109.1818182 | 2 + 40 | 100109.1818182 | 3 + 30 | 100109.1818182 | 3 + 30 | 100109.1818182 | 3 + 40 | 100109.1818182 | 4 + 40 | 100109.1818182 | 4 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.pn asc); -- mvd 5->4; 1->6; 1->7; 1->8; 1->9; + pn | prc | pn | to_char | vn | to_char | to_char | to_char | to_char +-----+------+-----+-------------------+----+-------------------+-------------------+-------------------+------------------- + 100 | 0 | 100 | .0000000 | 20 | 1.0000000 | .1666667 | 1.0000000 | 1.0000000 + 100 | 2400 | 100 | .0000000 | 40 | 1.0000000 | .1666667 | 2.0000000 | 2.0000000 + 200 | 0 | 200 | .0000000 | 10 | 3.0000000 | .3333333 | 3.0000000 | 3.0000000 + 200 | 0 | 200 | .0000000 | 40 | 3.0000000 | .3333333 | 4.0000000 | 4.0000000 + 300 | 0 | 300 | .0000000 | 30 | 5.0000000 | .4166667 | 5.0000000 | 5.0000000 + 400 | 0 | 400 | .0000000 | 50 | 6.0000000 | .5833333 | 6.0000000 | 6.0000000 + 400 | 0 | 400 | .0000000 | 50 | 6.0000000 | .5833333 | 7.0000000 | 7.0000000 + 500 | 5 | 500 | .0000000 | 30 | 8.0000000 | .7500000 | 8.0000000 | 8.0000000 + 500 | 5 | 500 | .0000000 | 30 | 8.0000000 | .7500000 | 9.0000000 | 9.0000000 + 600 | 5 | 600 | .0000000 | 30 | 10.0000000 | .8333333 | 10.0000000 | 10.0000000 + 700 | 1 | 700 | .0000000 | 40 | 11.0000000 | .9166667 | 11.0000000 | 11.0000000 + 800 | 1 | 800 | .0000000 | 40 | 12.0000000 | 1.0000000 | 12.0000000 | 12.0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.cn-ow_sale.cn) preceding and floor(ow_sale.vn) preceding ); -- mvd 4->3; + dt | cn | to_char | vn +------------+----+-------------------+---- + 1401-03-01 | 1 | .0000000 | 10 + 1401-05-01 | 1 | .0000000 | 20 + 1401-06-01 | 3 | .0000000 | 30 + 1401-05-02 | 1 | .0000000 | 30 + 1401-06-01 | 1 | .0000000 | 30 + 1401-06-01 | 3 | .0000000 | 30 + 1401-01-01 | 2 | .0000000 | 40 + 1401-06-01 | 4 | .0000000 | 40 + 1401-04-01 | 3 | .0000000 | 40 + 1401-06-01 | 4 | .0000000 | 40 + 1401-06-01 | 2 | .0000000 | 50 + 1401-06-01 | 1 | .0000000 | 50 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn*ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 4 preceding and 0 preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 1->5; 1->6; + cn | pn | cn | pn | to_char | to_char +----+-----+----+-----+-------------------+------------------- + 2 | 100 | 2 | 100 | 148905.2380952 | .0000000 + 1 | 200 | 1 | 200 | 66477.1969697 | 10.0000000 + 3 | 200 | 3 | 200 | -83.0000000 | 40.0000000 + 1 | 100 | 1 | 100 | 66477.1969697 | 20.0000000 + 1 | 300 | 1 | 300 | 66477.1969697 | 30.0000000 + 1 | 400 | 1 | 400 | 66477.1969697 | 50.0000000 + 2 | 400 | 2 | 400 | 148905.2380952 | 50.0000000 + 1 | 500 | 1 | 500 | 66477.1969697 | .0000000 + 3 | 500 | 3 | 500 | -83.0000000 | .0000000 + 3 | 600 | 3 | 600 | -83.0000000 | .0000000 + 4 | 700 | 4 | 700 | .0000000 | 40.0000000 + 4 | 800 | 4 | 800 | .0000000 | .0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 1 preceding and current row ); -- mvd 4->3; + qty | qty | to_char | pn +------+------+-------------------+----- + 1 | 1 | .0000000 | 800 + 1 | 1 | .0000000 | 700 + 12 | 12 | .0000000 | 600 + 12 | 12 | .0000000 | 500 + 12 | 12 | .0000000 | 500 + 1 | 1 | .0000000 | 400 + 1 | 1 | .0000000 | 400 + 1 | 1 | .0000000 | 300 + 1 | 1 | .0000000 | 200 + 1 | 1 | .0000000 | 200 + 1 | 1 | .0000000 | 100 + 1100 | 1100 | .0000000 | 100 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty+ow_sale.prc),floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn/ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 3 preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (partition by ow_sale.cn order by ow_sale.vn desc); -- mvd 5->4; 1->6; 1->7; 2,1->8; + vn | cn | dt | to_char | pn | to_char | to_char | to_char +----+----+------------+-------------------+-----+-------------------+-------------------+------------------- + 40 | 2 | 1401-01-01 | 6121500.5000000 | 100 | .0000000 | 2.0000000 | 2.0000000 + 10 | 1 | 1401-03-01 | .0000000 | 200 | .0000000 | 2.0000000 | 4.0000000 + 40 | 3 | 1401-04-01 | .0000000 | 200 | .0000000 | 3.0000000 | 1.0000000 + 20 | 1 | 1401-05-01 | 6121500.5000000 | 100 | .0000000 | 3.0000000 | 3.0000000 + 30 | 1 | 1401-05-02 | .0000000 | 300 | .0000000 | 3.0000000 | 2.0000000 + 50 | 1 | 1401-06-01 | .0000000 | 400 | .0000000 | 3.0000000 | 1.0000000 + 50 | 2 | 1401-06-01 | .0000000 | 400 | .0000000 | 3.0000000 | 1.0000000 + 30 | 1 | 1401-06-01 | .0000000 | 500 | .0000000 | 3.0000000 | 2.0000000 + 30 | 3 | 1401-06-01 | .0000000 | 500 | .0000000 | 3.0000000 | 2.0000000 + 30 | 3 | 1401-06-01 | .0000000 | 600 | .0000000 | 3.0000000 | 2.0000000 + 40 | 4 | 1401-06-01 | .0000000 | 700 | .0000000 | 4.0000000 | 1.0000000 + 40 | 4 | 1401-06-01 | .0000000 | 800 | .0000000 | 4.0000000 | 1.0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.pn) preceding and floor(ow_sale.pn) following ); -- mvd 4->5; + dt | qty | cn | vn | to_char +------------+------+----+----+------------------- + 1401-06-01 | 1 | 2 | 50 | -32994772.7272727 + 1401-06-01 | 1 | 1 | 50 | -32994772.7272727 + 1401-01-01 | 1100 | 2 | 40 | -32994772.7272727 + 1401-06-01 | 1 | 4 | 40 | -32994772.7272727 + 1401-04-01 | 1 | 3 | 40 | -32994772.7272727 + 1401-06-01 | 1 | 4 | 40 | -32994772.7272727 + 1401-06-01 | 12 | 3 | 30 | -32994772.7272727 + 1401-05-02 | 1 | 1 | 30 | -32994772.7272727 + 1401-06-01 | 12 | 1 | 30 | -32994772.7272727 + 1401-06-01 | 12 | 3 | 30 | -32994772.7272727 + 1401-05-01 | 1 | 1 | 20 | -32994772.7272727 + 1401-03-01 | 1 | 1 | 10 | -32994772.7272727 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty+ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn/ow_sale.pn)) OVER(order by ow_sale.cn desc range between floor(ow_sale.prc) preceding and floor(ow_sale.pn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.prc) preceding and floor(ow_sale.pn) following ), +win2 as (order by ow_sale.cn desc); -- mvd 1->4; 1->5; 1->6; + cn | qty | cn | to_char | to_char | to_char +----+------+----+-------------------+-------------------+------------------- + 4 | 1 | 4 | 575.0000000 | 12.0000000 | .0000000 + 4 | 1 | 4 | 575.0000000 | 12.0000000 | .0000000 + 3 | 12 | 3 | 575.0000000 | 12.0000000 | .1818182 + 3 | 12 | 3 | 575.0000000 | 12.0000000 | .1818182 + 3 | 1 | 3 | 846.6666667 | 10.0000000 | .1818182 + 2 | 1 | 2 | 1307.1428571 | 7.0000000 | .4545455 + 2 | 1100 | 2 | 575.0000000 | 12.0000000 | .4545455 + 1 | 1 | 1 | 5.5000000 | 5.0000000 | .6363636 + 1 | 12 | 1 | 575.0000000 | 12.0000000 | .6363636 + 1 | 1 | 1 | 5.5000000 | 5.0000000 | .6363636 + 1 | 1 | 1 | 5.5000000 | 5.0000000 | .6363636 + 1 | 1 | 1 | 5.5000000 | 5.0000000 | .6363636 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn-ow_sale.prc),floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.vn*ow_sale.cn) preceding and unbounded following ); -- mvd 3->2; + dt | to_char | cn +------------+-------------------+---- + 1401-06-01 | -218539.4090909 | 4 + 1401-06-01 | -218539.4090909 | 4 + 1401-06-01 | -218539.4090909 | 3 + 1401-06-01 | -218539.4090909 | 3 + 1401-04-01 | -218539.4090909 | 3 + 1401-06-01 | -218539.4090909 | 2 + 1401-01-01 | -218539.4090909 | 2 + 1401-05-02 | -218539.4090909 | 1 + 1401-06-01 | -218539.4090909 | 1 + 1401-06-01 | -218539.4090909 | 1 + 1401-03-01 | -218539.4090909 | 1 + 1401-05-01 | -218539.4090909 | 1 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn-ow_sale.pn),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.pn) preceding and unbounded following ), +win2 as (order by ow_sale.pn asc); -- mvd 3->2; 5->4; + dt | to_char | vn | to_char | pn +------------+------------------+----+-------------------+----- + 1401-05-01 | ########.###### | 20 | .0000000 | 100 + 1401-01-01 | ########.###### | 40 | .0000000 | 100 + 1401-03-01 | ########.###### | 10 | .1818182 | 200 + 1401-04-01 | ########.###### | 40 | .1818182 | 200 + 1401-05-02 | ########.###### | 30 | .3636364 | 300 + 1401-06-01 | ########.###### | 50 | .4545455 | 400 + 1401-06-01 | ########.###### | 50 | .4545455 | 400 + 1401-06-01 | ########.###### | 30 | .6363636 | 500 + 1401-06-01 | ########.###### | 30 | .6363636 | 500 + 1401-06-01 | ########.###### | 30 | .8181818 | 600 + 1401-06-01 | ########.###### | 40 | .9090909 | 700 + 1401-06-01 | ########.###### | 40 | 1.0000000 | 800 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and current row ); -- mvd 4->5; + prc | vn | dt | pn | to_char +------+----+------------+-----+------------------- + 1 | 40 | 1401-06-01 | 800 | .0000000 + 1 | 40 | 1401-06-01 | 700 | .0000000 + 5 | 30 | 1401-06-01 | 600 | .0000000 + 5 | 30 | 1401-06-01 | 500 | .0000000 + 5 | 30 | 1401-06-01 | 500 | .0000000 + 0 | 50 | 1401-06-01 | 400 | .0000000 + 0 | 50 | 1401-06-01 | 400 | .0000000 + 0 | 30 | 1401-05-02 | 300 | .0000000 + 0 | 10 | 1401-03-01 | 200 | .0000000 + 0 | 40 | 1401-04-01 | 200 | .0000000 + 0 | 20 | 1401-05-01 | 100 | .0000000 + 2400 | 40 | 1401-01-01 | 100 | .0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn-ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn/ow_sale.cn)) OVER(order by ow_sale.pn asc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and current row ); -- mvd 3->2; 3->4; 3->5; + dt | to_char | pn | to_char | to_char +------------+-------------------+-----+-------------------+------------------- + 1401-05-01 | .0000000 | 100 | 50.0000000 | 21.0000000 + 1401-01-01 | .0000000 | 100 | 50.0000000 | 21.0000000 + 1401-03-01 | .0000000 | 200 | 66.0000000 | 11.0000000 + 1401-04-01 | .0000000 | 200 | 66.0000000 | 11.0000000 + 1401-05-02 | .0000000 | 300 | 300.0000000 | 31.0000000 + 1401-06-01 | .0000000 | 400 | 200.0000000 | 51.0000000 + 1401-06-01 | .0000000 | 400 | 200.0000000 | 51.0000000 + 1401-06-01 | .0000000 | 500 | 166.0000000 | 31.0000000 + 1401-06-01 | .0000000 | 500 | 166.0000000 | 31.0000000 + 1401-06-01 | .0000000 | 600 | 200.0000000 | 33.0000000 + 1401-06-01 | .0000000 | 700 | 175.0000000 | 44.0000000 + 1401-06-01 | .0000000 | 800 | 200.0000000 | 44.0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and floor(ow_sale.vn/ow_sale.cn) following ); -- mvd 1->3; + vn | vn | to_char +----+----+------------------- + 50 | 50 | 4.6969697 + 50 | 50 | -.2222222 + 40 | 40 | 3.5714286 + 40 | 40 | 5.8333333 + 40 | 40 | 3.5714286 + 40 | 40 | 3.5714286 + 30 | 30 | 4.0000000 + 30 | 30 | 2.0000000 + 30 | 30 | 2.0000000 + 30 | 30 | 4.0000000 + 20 | 20 | .0000000 + 10 | 10 | .0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn+ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and 4 following ), +win2 as (order by ow_sale.vn asc); -- mvd 2->3; 5->4; + pn | cn | to_char | to_char | vn +-----+----+-------------------+-------------------+---- + 200 | 1 | 140.3030303 | .0833333 | 10 + 100 | 1 | 140.3030303 | .1666667 | 20 + 500 | 3 | 32.0000000 | .5000000 | 30 + 300 | 1 | 140.3030303 | .5000000 | 30 + 600 | 3 | 32.0000000 | .5000000 | 30 + 500 | 1 | 140.3030303 | .5000000 | 30 + 800 | 4 | .0000000 | .8333333 | 40 + 100 | 2 | 45.9523810 | .8333333 | 40 + 200 | 3 | 32.0000000 | .8333333 | 40 + 700 | 4 | .0000000 | .8333333 | 40 + 400 | 1 | 140.3030303 | 1.0000000 | 50 + 400 | 2 | 45.9523810 | 1.0000000 | 50 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn+ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and unbounded following ); -- mvd 5->4; + cn | cn | qty | to_char | pn +----+----+------+-------------------+----- + 1 | 1 | 1 | 2086.2878788 | 100 + 2 | 2 | 1100 | 2086.2878788 | 100 + 1 | 1 | 1 | 659.4444444 | 200 + 3 | 3 | 1 | 659.4444444 | 200 + 1 | 1 | 1 | -86.7857143 | 300 + 1 | 1 | 1 | -425.7142857 | 400 + 2 | 2 | 1 | -425.7142857 | 400 + 1 | 1 | 12 | 638.0000000 | 500 + 3 | 3 | 12 | 638.0000000 | 500 + 3 | 3 | 12 | 486.6666667 | 600 + 4 | 4 | 1 | .0000000 | 700 + 4 | 4 | 1 | .0000000 | 800 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn-ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and unbounded following ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.pn order by ow_sale.cn asc); -- mvd 6->5; 1->7; 1->8; 10,6,2,1->9; + pn | qty | pn | vn | to_char | cn | to_char | to_char | to_char | dt +-----+------+-----+----+-------------------+----+-------------------+-------------------+-------------------+------------ + 100 | 1100 | 100 | 40 | 428.5714286 | 2 | 1.0000000 | 1.0000000 | 1.0000000 | 1401-01-01 + 100 | 1 | 100 | 20 | -682.5757576 | 1 | 1.0000000 | 2.0000000 | 1.0000000 | 1401-05-01 + 200 | 1 | 200 | 10 | -682.5757576 | 1 | 2.0000000 | 3.0000000 | 1.0000000 | 1401-03-01 + 200 | 1 | 200 | 40 | -20.0000000 | 3 | 2.0000000 | 4.0000000 | 1.0000000 | 1401-04-01 + 300 | 1 | 300 | 30 | -682.5757576 | 1 | 3.0000000 | 5.0000000 | 1.0000000 | 1401-05-02 + 400 | 1 | 400 | 50 | 428.5714286 | 2 | 4.0000000 | 6.0000000 | 1.0000000 | 1401-06-01 + 400 | 1 | 400 | 50 | -682.5757576 | 1 | 4.0000000 | 7.0000000 | 1.0000000 | 1401-06-01 + 500 | 12 | 500 | 30 | -20.0000000 | 3 | 5.0000000 | 8.0000000 | 1.0000000 | 1401-06-01 + 500 | 12 | 500 | 30 | -682.5757576 | 1 | 5.0000000 | 9.0000000 | 1.0000000 | 1401-06-01 + 600 | 12 | 600 | 30 | -20.0000000 | 3 | 6.0000000 | 10.0000000 | 1.0000000 | 1401-06-01 + 700 | 1 | 700 | 40 | .0000000 | 4 | 7.0000000 | 11.0000000 | 1.0000000 | 1401-06-01 + 800 | 1 | 800 | 40 | .0000000 | 4 | 8.0000000 | 12.0000000 | 1.0000000 | 1401-06-01 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc+ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 1 following and floor(ow_sale.vn) following ); -- mvd 1->4; + vn | qty | cn | to_char +----+------+----+------------------- + 10 | 1 | 1 | .0000000 + 20 | 1 | 1 | -64230.3571429 + 30 | 12 | 3 | -85206.6666667 + 30 | 1 | 1 | -85206.6666667 + 30 | 12 | 1 | -85206.6666667 + 30 | 12 | 3 | -85206.6666667 + 40 | 1100 | 2 | .0000000 + 40 | 1 | 4 | .0000000 + 40 | 1 | 3 | .0000000 + 40 | 1 | 4 | .0000000 + 50 | 1 | 2 | .0000000 + 50 | 1 | 1 | .0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.cn)) OVER(order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 1 following and floor(ow_sale.cn/ow_sale.cn) following ), +win2 as (order by ow_sale.pn asc); -- mvd 1->3; 2->4; 2->5; 1->6; 2->7; + cn | pn | to_char | to_char | to_char | to_char | to_char +----+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 2 | 100 | .0000000 | 1.0000000 | 20.0000000 | .0000000 | .1666667 + 1 | 100 | .0000000 | 1.0000000 | 20.0000000 | .0000000 | .1666667 + 1 | 200 | .0000000 | 2.0000000 | 10.0000000 | .0000000 | .3333333 + 3 | 200 | .0000000 | 2.0000000 | 10.0000000 | .0000000 | .3333333 + 1 | 300 | .0000000 | 3.0000000 | 10.0000000 | .0000000 | .4166667 + 2 | 400 | .0000000 | 4.0000000 | 10.0000000 | .0000000 | .5833333 + 1 | 400 | .0000000 | 4.0000000 | 10.0000000 | .0000000 | .5833333 + 1 | 500 | .0000000 | 5.0000000 | 10.0000000 | .0000000 | .7500000 + 3 | 500 | .0000000 | 5.0000000 | 10.0000000 | .0000000 | .7500000 + 3 | 600 | .0000000 | 6.0000000 | 10.0000000 | .0000000 | .8333333 + 4 | 700 | .0000000 | 7.0000000 | 10.0000000 | .0000000 | .9166667 + 4 | 800 | .0000000 | 8.0000000 | 10.0000000 | .0000000 | 1.0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 3 following and unbounded following ); -- mvd 2->5; + vn | cn | qty | prc | to_char +----+----+------+------+------------------- + 40 | 4 | 1 | 1 | .0000000 + 40 | 4 | 1 | 1 | .0000000 + 30 | 3 | 12 | 5 | .0000000 + 30 | 3 | 12 | 5 | .0000000 + 40 | 3 | 1 | 0 | .0000000 + 50 | 2 | 1 | 0 | .0000000 + 40 | 2 | 1100 | 2400 | .0000000 + 30 | 1 | 1 | 0 | .0000000 + 30 | 1 | 12 | 5 | .0000000 + 50 | 1 | 1 | 0 | .0000000 + 10 | 1 | 1 | 0 | .0000000 + 20 | 1 | 1 | 0 | .0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(order by ow_sale.vn desc range between 4 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 4 following and unbounded following ); -- mvd 6->7; 6->8; 6->9; + pn | dt | pn | qty | dt | vn | to_char | to_char | to_char +-----+------------+-----+------+------------+----+-------------------+-------------------+------------------- + 400 | 1401-06-01 | 400 | 1 | 1401-06-01 | 50 | .0000000 | 1.0000000 | 11.0000000 + 400 | 1401-06-01 | 400 | 1 | 1401-06-01 | 50 | .0000000 | 1.0000000 | 11.0000000 + 100 | 1401-01-01 | 100 | 1100 | 1401-01-01 | 40 | .0000000 | 1.0000000 | 11.0000000 + 700 | 1401-06-01 | 700 | 1 | 1401-06-01 | 40 | .0000000 | 1.0000000 | 11.0000000 + 200 | 1401-04-01 | 200 | 1 | 1401-04-01 | 40 | .0000000 | 1.0000000 | 11.0000000 + 800 | 1401-06-01 | 800 | 1 | 1401-06-01 | 40 | .0000000 | 1.0000000 | 11.0000000 + 600 | 1401-06-01 | 600 | 12 | 1401-06-01 | 30 | .0000000 | 1.0000000 | 11.0000000 + 300 | 1401-05-02 | 300 | 1 | 1401-05-02 | 30 | .0000000 | 1.0000000 | 11.0000000 + 500 | 1401-06-01 | 500 | 12 | 1401-06-01 | 30 | .0000000 | 1.0000000 | 11.0000000 + 500 | 1401-06-01 | 500 | 12 | 1401-06-01 | 30 | .0000000 | 1.0000000 | 11.0000000 + 100 | 1401-05-01 | 100 | 1 | 1401-05-01 | 20 | .0000000 | 1.0000000 | 11.0000000 + 200 | 1401-03-01 | 200 | 1 | 1401-03-01 | 10 | .0000000 | .0000000 | .0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc,ow_sale.cn desc rows unbounded preceding ); -- mvd 4,5->3; + pn | qty | to_char | cn | vn +-----+------+-------------------+----+---- + 100 | 1100 | .0000000 | 2 | 40 + 200 | 1 | 36000.0000000 | 1 | 10 + 200 | 1 | 12000.0000000 | 3 | 40 + 100 | 1 | 10000.0000000 | 1 | 20 + 300 | 1 | 7200.0000000 | 1 | 30 + 400 | 1 | 4000.0000000 | 1 | 50 + 400 | 1 | 2285.7142857 | 2 | 50 + 500 | 12 | 2140.1785714 | 1 | 30 + 500 | 12 | 1995.8333333 | 3 | 30 + 600 | 12 | 1861.6666667 | 3 | 30 + 700 | 1 | 1522.4545455 | 4 | 40 + 800 | 1 | 1268.1060606 | 4 | 40 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn*ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows unbounded preceding ), +win2 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 3->2; 5,6->4; 6->7; + dt | to_char | pn | to_char | cn | vn | to_char +------------+-------------------+-----+-------------------+----+----+------------------- + 1401-01-01 | .0000000 | 100 | 1.0000000 | 2 | 40 | .0000000 + 1401-03-01 | 38465.0000000 | 200 | 1.0000000 | 1 | 10 | .0000000 + 1401-04-01 | 5495.0000000 | 200 | 1.0000000 | 3 | 40 | .0000000 + 1401-05-01 | 8242.5000000 | 100 | 1.0000000 | 1 | 20 | .0000000 + 1401-05-02 | 7693.0000000 | 300 | 1.0000000 | 1 | 30 | .0000000 + 1401-06-01 | 6227.6666667 | 400 | 1.0000000 | 1 | 50 | .0000000 + 1401-06-01 | 3925.0000000 | 400 | 1.0000000 | 2 | 50 | .0000000 + 1401-06-01 | 3885.7142857 | 500 | 1.0000000 | 1 | 30 | .0000000 + 1401-06-01 | 2903.1944444 | 500 | 1.0000000 | 3 | 30 | .0000000 + 1401-06-01 | 2227.3333333 | 600 | 1.0000000 | 3 | 30 | .0000000 + 1401-06-01 | 996.0909091 | 700 | 1.0000000 | 4 | 40 | .0000000 + 1401-06-01 | 141.5151515 | 800 | 1.0000000 | 4 | 40 | .0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.vn desc rows floor(ow_sale.qty/ow_sale.vn) preceding ); -- mvd 4,1,5->3; + vn | dt | to_char | cn | pn +----+------------+-------------------+----+----- + 40 | 1401-01-01 | .0000000 | 2 | 100 + 10 | 1401-03-01 | .0000000 | 1 | 200 + 40 | 1401-04-01 | .0000000 | 3 | 200 + 20 | 1401-05-01 | .0000000 | 1 | 100 + 30 | 1401-05-02 | .0000000 | 1 | 300 + 50 | 1401-06-01 | .0000000 | 1 | 400 + 50 | 1401-06-01 | .0000000 | 2 | 400 + 30 | 1401-06-01 | .0000000 | 1 | 500 + 30 | 1401-06-01 | .0000000 | 3 | 500 + 30 | 1401-06-01 | .0000000 | 3 | 600 + 40 | 1401-06-01 | .0000000 | 4 | 700 + 40 | 1401-06-01 | .0000000 | 4 | 800 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc,ow_sale.vn asc rows current row ); -- mvd 5,6,1->4; + pn | dt | prc | to_char | cn | vn +-----+------------+------+-------------------+----+---- + 100 | 1401-01-01 | 2400 | .0000000 | 2 | 40 + 200 | 1401-03-01 | 0 | .0000000 | 1 | 10 + 200 | 1401-04-01 | 0 | .0000000 | 3 | 40 + 100 | 1401-05-01 | 0 | .0000000 | 1 | 20 + 300 | 1401-05-02 | 0 | .0000000 | 1 | 30 + 400 | 1401-06-01 | 0 | .0000000 | 1 | 50 + 400 | 1401-06-01 | 0 | .0000000 | 2 | 50 + 500 | 1401-06-01 | 5 | .0000000 | 1 | 30 + 500 | 1401-06-01 | 5 | .0000000 | 3 | 30 + 600 | 1401-06-01 | 5 | .0000000 | 3 | 30 + 700 | 1401-06-01 | 1 | .0000000 | 4 | 40 + 800 | 1401-06-01 | 1 | .0000000 | 4 | 40 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows current row ), +win2 as (order by ow_sale.vn desc); -- mvd 2->5; 7->6; + qty | pn | pn | cn | to_char | to_char | vn +------+-----+-----+----+-------------------+-------------------+---- + 1 | 400 | 400 | 2 | .0000000 | 1.0000000 | 50 + 1 | 400 | 400 | 1 | .0000000 | 1.0000000 | 50 + 1 | 800 | 800 | 4 | .0000000 | 3.0000000 | 40 + 1 | 200 | 200 | 3 | .0000000 | 3.0000000 | 40 + 1 | 700 | 700 | 4 | .0000000 | 3.0000000 | 40 + 1100 | 100 | 100 | 2 | .0000000 | 3.0000000 | 40 + 12 | 500 | 500 | 1 | .0000000 | 7.0000000 | 30 + 12 | 500 | 500 | 3 | .0000000 | 7.0000000 | 30 + 12 | 600 | 600 | 3 | .0000000 | 7.0000000 | 30 + 1 | 300 | 300 | 1 | .0000000 | 7.0000000 | 30 + 1 | 100 | 100 | 1 | .0000000 | 11.0000000 | 20 + 1 | 200 | 200 | 1 | .0000000 | 12.0000000 | 10 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn asc rows between unbounded preceding and 3 preceding ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.cn order by ow_sale.vn asc); -- mvd 2,8,1->7; 4,2,8,1->9; + pn | cn | pn | prc | dt | pn | to_char | vn | to_char +-----+----+-----+------+------------+-----+-------------------+----+------------------- + 100 | 2 | 100 | 2400 | 1401-01-01 | 100 | .0000000 | 40 | 1.0000000 + 200 | 1 | 200 | 0 | 1401-03-01 | 200 | .0000000 | 10 | 1.0000000 + 200 | 3 | 200 | 0 | 1401-04-01 | 200 | .0000000 | 40 | 1.0000000 + 100 | 1 | 100 | 0 | 1401-05-01 | 100 | .0000000 | 20 | 1.0000000 + 300 | 1 | 300 | 0 | 1401-05-02 | 300 | 2880000.0000000 | 30 | 1.0000000 + 400 | 1 | 400 | 0 | 1401-06-01 | 400 | 1920000.0000000 | 50 | 1.0000000 + 400 | 2 | 400 | 0 | 1401-06-01 | 400 | 1440000.0000000 | 50 | 1.0000000 + 500 | 1 | 500 | 5 | 1401-06-01 | 500 | 1152000.0000000 | 30 | 1.0000000 + 500 | 3 | 500 | 5 | 1401-06-01 | 500 | 960000.0000000 | 30 | 1.0000000 + 600 | 3 | 600 | 5 | 1401-06-01 | 600 | 822857.1428571 | 30 | 1.0000000 + 700 | 4 | 700 | 1 | 1401-06-01 | 700 | 719574.5535714 | 40 | 1.0000000 + 800 | 4 | 800 | 1 | 1401-06-01 | 800 | 639338.1944444 | 40 | 1.0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn/ow_sale.pn),floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between unbounded preceding and current row ); -- mvd 1,6->5; + cn | qty | dt | cn | to_char | vn +----+------+------------+----+-------------------+---- + 2 | 1100 | 1401-01-01 | 2 | .0000000 | 40 + 1 | 1 | 1401-03-01 | 1 | .0000000 | 10 + 3 | 1 | 1401-04-01 | 3 | .0000000 | 40 + 1 | 1 | 1401-05-01 | 1 | .0000000 | 20 + 1 | 1 | 1401-05-02 | 1 | .0000000 | 30 + 1 | 1 | 1401-06-01 | 1 | .0000000 | 50 + 2 | 1 | 1401-06-01 | 2 | .0000000 | 50 + 1 | 12 | 1401-06-01 | 1 | .0000000 | 30 + 3 | 12 | 1401-06-01 | 3 | .0000000 | 30 + 3 | 12 | 1401-06-01 | 3 | .0000000 | 30 + 4 | 1 | 1401-06-01 | 4 | .0000000 | 40 + 4 | 1 | 1401-06-01 | 4 | .0000000 | 40 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc*ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,1->2; 3,1->4; 3,1->5; 1->6; 3,1->7; 1->8; + pn | to_char | vn | to_char | to_char | to_char | to_char | to_char +-----+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 100 | .0000000 | 40 | 1.0000000 | 2200.0000000 | 1.0000000 | 40.0000000 | .0000000 + 100 | .9166667 | 20 | 4.0000000 | 2200.0000000 | 1.0000000 | 10.0000000 | .0000000 + 200 | .5000000 | 10 | 2.0000000 | 2200.0000000 | 3.0000000 | 10.0000000 | .0000000 + 200 | 1.0000000 | 40 | 3.0000000 | 2200.0000000 | 3.0000000 | 10.0000000 | .0000000 + 300 | .8000000 | 30 | 5.0000000 | 2200.0000000 | 5.0000000 | 10.0000000 | .0000000 + 400 | .6190476 | 50 | 7.0000000 | 2200.0000000 | 6.0000000 | 10.0000000 | .0000000 + 400 | .7000000 | 50 | 6.0000000 | 2200.0000000 | 6.0000000 | 10.0000000 | .0000000 + 500 | .5714286 | 30 | 8.0000000 | 2200.0000000 | 8.0000000 | 10.0000000 | .0000000 + 500 | .7500000 | 30 | 9.0000000 | 2200.0000000 | 8.0000000 | 10.0000000 | .0000000 + 600 | .8444444 | 30 | 10.0000000 | 2200.0000000 | 10.0000000 | 10.0000000 | .0000000 + 700 | 1.2000000 | 40 | 11.0000000 | 2200.0000000 | 11.0000000 | 10.0000000 | 3000.0000000 + 800 | 1.4242424 | 40 | 12.0000000 | 2200.0000000 | 12.0000000 | 10.0000000 | 700.0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.cn) following ); -- mvd 3->2; + pn | to_char | cn +-----+-------------------+---- + 100 | .0000000 | 2 + 200 | .0000000 | 1 + 200 | .0000000 | 3 + 100 | .0000000 | 1 + 300 | .0000000 | 1 + 400 | .0000000 | 1 + 400 | .0000000 | 2 + 500 | .0000000 | 1 + 500 | .0000000 | 3 + 600 | .0000000 | 3 + 700 | .0000000 | 4 + 800 | .0000000 | 4 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn*ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn desc rows between unbounded preceding and 1 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty-ow_sale.prc) as int),cast (floor(ow_sale.prc+ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn desc rows between unbounded preceding and 1 following ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 4,5->3; 4->6; 4,5->7; 4->8; + prc | qty | to_char | cn | pn | to_char | to_char | to_char +------+------+-------------------+----+-----+-------------------+-------------------+------------------- + 0 | 1 | -5714285.7142857 | 1 | 400 | .4166667 | 7.0000000 | 1.0000000 + 0 | 1 | -8000000.0000000 | 1 | 200 | .4166667 | 3.0000000 | 1.0000000 + 5 | 12 | -5875000.0000000 | 1 | 500 | .4166667 | 9.0000000 | .0000000 + 0 | 1 | -4800000.0000000 | 1 | 100 | .4166667 | 5.0000000 | 1.0000000 + 0 | 1 | -5600000.0000000 | 1 | 300 | .4166667 | 6.0000000 | 1.0000000 + 2400 | 1100 | -12000000.0000000 | 2 | 100 | .5833333 | 2.0000000 | .0000000 + 0 | 1 | -5919642.8571429 | 2 | 400 | .5833333 | 8.0000000 | 1.0000000 + 0 | 1 | -4000000.0000000 | 3 | 200 | .8333333 | 4.0000000 | 1.0000000 + 5 | 12 | -5948888.8888889 | 3 | 500 | .8333333 | 10.0000000 | .0000000 + 5 | 12 | -6164636.3636364 | 3 | 600 | .8333333 | 11.0000000 | .0000000 + 1 | 1 | -6397272.7272727 | 4 | 700 | 1.0000000 | 12.0000000 | 7.0000000 + 1 | 1 | -6397272.7272727 | 4 | 800 | 1.0000000 | 12.0000000 | 7.0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.prc,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between unbounded preceding and unbounded following ); -- mvd 6->5; + dt | prc | qty | prc | to_char | vn +------------+------+------+------+-------------------+---- + 1401-01-01 | 2400 | 1100 | 2400 | -35.8030303 | 40 + 1401-03-01 | 0 | 1 | 0 | -35.8030303 | 10 + 1401-04-01 | 0 | 1 | 0 | -35.8030303 | 40 + 1401-05-01 | 0 | 1 | 0 | -35.8030303 | 20 + 1401-05-02 | 0 | 1 | 0 | -35.8030303 | 30 + 1401-06-01 | 0 | 1 | 0 | -35.8030303 | 50 + 1401-06-01 | 0 | 1 | 0 | -35.8030303 | 50 + 1401-06-01 | 5 | 12 | 5 | -35.8030303 | 30 + 1401-06-01 | 5 | 12 | 5 | -35.8030303 | 30 + 1401-06-01 | 5 | 12 | 5 | -35.8030303 | 30 + 1401-06-01 | 1 | 1 | 1 | -35.8030303 | 40 + 1401-06-01 | 1 | 1 | 1 | -35.8030303 | 40 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc,ow_sale.vn desc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 4->3; 6->5; + prc | pn | to_char | vn | to_char | cn +------+-----+-------------------+----+-------------------+---- + 2400 | 100 | 135.6060606 | 40 | .0000000 | 2 + 0 | 200 | 135.6060606 | 10 | .0000000 | 1 + 0 | 200 | 135.6060606 | 40 | .0000000 | 3 + 0 | 100 | 135.6060606 | 20 | .0000000 | 1 + 0 | 300 | 135.6060606 | 30 | .0000000 | 1 + 0 | 400 | 135.6060606 | 50 | .0000000 | 1 + 0 | 400 | 135.6060606 | 50 | .0000000 | 2 + 5 | 500 | 135.6060606 | 30 | .0000000 | 1 + 5 | 500 | 135.6060606 | 30 | .0000000 | 3 + 5 | 600 | 135.6060606 | 30 | .0000000 | 3 + 1 | 700 | 135.6060606 | 40 | .0000000 | 4 + 1 | 800 | 135.6060606 | 40 | .0000000 | 4 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn+ow_sale.vn),floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc rows between 8 preceding and 3 preceding ); -- mvd 1->6; + vn | dt | cn | dt | pn | to_char +----+------------+----+------------+-----+------------------- + 40 | 1401-01-01 | 2 | 1401-01-01 | 100 | .0000000 + 10 | 1401-03-01 | 1 | 1401-03-01 | 200 | .0000000 + 40 | 1401-04-01 | 3 | 1401-04-01 | 200 | .0000000 + 20 | 1401-05-01 | 1 | 1401-05-01 | 100 | .0000000 + 30 | 1401-05-02 | 1 | 1401-05-02 | 300 | 79200000.0000000 + 50 | 1401-06-01 | 1 | 1401-06-01 | 400 | 26400000.0000000 + 50 | 1401-06-01 | 2 | 1401-06-01 | 400 | 22000000.0000000 + 30 | 1401-06-01 | 1 | 1401-06-01 | 500 | 15840000.0000000 + 30 | 1401-06-01 | 3 | 1401-06-01 | 500 | 8800000.0000000 + 30 | 1401-06-01 | 3 | 1401-06-01 | 600 | .0000000 + 40 | 1401-06-01 | 4 | 1401-06-01 | 700 | -160.0000000 + 40 | 1401-06-01 | 4 | 1401-06-01 | 800 | -240.0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn/ow_sale.pn) as int),cast (floor(ow_sale.cn*ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty+ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc rows between floor(ow_sale.vn*ow_sale.cn) preceding and floor(ow_sale.vn) preceding ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 1->5; 7,2,4,8->6; 8->9; + cn | dt | dt | vn | to_char | to_char | prc | pn | to_char +----+------------+------------+----+-------------------+-------------------+------+-----+------------------- + 2 | 1401-01-01 | 1401-01-01 | 40 | .0000000 | .0000000 | 2400 | 100 | .0000000 + 1 | 1401-03-01 | 1401-03-01 | 10 | .0000000 | .0000000 | 0 | 200 | 1140.0000000 + 3 | 1401-04-01 | 1401-04-01 | 40 | .0000000 | .0000000 | 0 | 200 | 11.0000000 + 1 | 1401-05-01 | 1401-05-01 | 20 | .0000000 | .0000000 | 0 | 100 | 41.0000000 + 1 | 1401-05-02 | 1401-05-02 | 30 | .0000000 | .0000000 | 0 | 300 | 21.0000000 + 1 | 1401-06-01 | 1401-06-01 | 50 | .0000000 | .0000000 | 0 | 400 | 31.0000000 + 2 | 1401-06-01 | 1401-06-01 | 50 | .0000000 | .0000000 | 0 | 400 | 51.0000000 + 1 | 1401-06-01 | 1401-06-01 | 30 | .0000000 | .0000000 | 5 | 500 | .0000000 + 3 | 1401-06-01 | 1401-06-01 | 30 | .0000000 | .0000000 | 5 | 500 | .0000000 + 3 | 1401-06-01 | 1401-06-01 | 30 | .0000000 | .0000000 | 5 | 600 | .0000000 + 4 | 1401-06-01 | 1401-06-01 | 40 | .0000000 | .0000000 | 1 | 700 | 42.0000000 + 4 | 1401-06-01 | 1401-06-01 | 40 | .0000000 | .0000000 | 1 | 800 | 41.0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc/ow_sale.qty),floor(ow_sale.prc*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows between floor(ow_sale.pn) preceding and current row ); -- mvd 6,7->5; + dt | qty | qty | qty | to_char | cn | pn +------------+------+------+------+-------------------+----+----- + 1401-01-01 | 1100 | 1100 | 1100 | .0000000 | 2 | 100 + 1401-03-01 | 1 | 1 | 1 | 240000.0000000 | 1 | 200 + 1401-04-01 | 1 | 1 | 1 | 160000.0000000 | 3 | 200 + 1401-05-01 | 1 | 1 | 1 | 120000.0000000 | 1 | 100 + 1401-05-02 | 1 | 1 | 1 | 96000.0000000 | 1 | 300 + 1401-06-01 | 1 | 1 | 1 | 80000.0000000 | 1 | 400 + 1401-06-01 | 1 | 1 | 1 | 68571.4285714 | 2 | 400 + 1401-06-01 | 12 | 12 | 12 | 59910.7142857 | 1 | 500 + 1401-06-01 | 12 | 12 | 12 | 53194.4444444 | 3 | 500 + 1401-06-01 | 12 | 12 | 12 | 47822.2222222 | 3 | 600 + 1401-06-01 | 1 | 1 | 1 | 41287.2727273 | 4 | 700 + 1401-06-01 | 1 | 1 | 1 | 36212.1212121 | 4 | 800 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.pn desc rows between 7 preceding and floor(ow_sale.pn) following ); -- mvd 3->2; + vn | to_char | pn +----+-------------------+----- + 40 | -31.1060606 | 100 + 10 | -31.1060606 | 200 + 40 | -31.1060606 | 200 + 20 | -31.1060606 | 100 + 30 | -31.1060606 | 300 + 50 | -31.1060606 | 400 + 50 | -31.1060606 | 400 + 30 | -31.1060606 | 500 + 30 | 5.8636364 | 500 + 30 | 2.8777778 | 600 + 40 | 3.0138889 | 700 + 40 | .0178571 | 800 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn*ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.pn desc rows between floor(ow_sale.vn) preceding and 2 following ), +win2 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.pn desc); -- mvd 4,5->3; 4,7,5->6; 4,7,5->8; 4,7,5->9; 4,5->10; 4,5->11; + vn | qty | to_char | cn | pn | to_char | dt | to_char | to_char | to_char | to_char +----+------+-------------------+----+-----+-------------------+------------+-------------------+-------------------+-------------------+------------------- + 40 | 1100 | 4029.6666667 | 2 | 100 | 1.0000000 | 1401-01-01 | 240000.0000000 | 1.0000000 | 2400.0000000 | 1.0000000 + 10 | 1 | 3022.2500000 | 1 | 200 | 1.0000000 | 1401-03-01 | .0000000 | 1.0000000 | 2400.0000000 | 1.0000000 + 40 | 1 | 2417.8000000 | 3 | 200 | 1.0000000 | 1401-04-01 | .0000000 | 1.0000000 | 2400.0000000 | 1.0000000 + 20 | 1 | 2014.8333333 | 1 | 100 | 1.0000000 | 1401-05-01 | .0000000 | 1.0000000 | 2400.0000000 | 1.0000000 + 30 | 1 | 1727.0000000 | 1 | 300 | 1.0000000 | 1401-05-02 | .0000000 | 1.0000000 | 2400.0000000 | 1.0000000 + 50 | 1 | 1508.9642857 | 1 | 400 | 1.0000000 | 1401-06-01 | 2500.0000000 | 2.0000000 | 2400.0000000 | 1.0000000 + 50 | 1 | 1339.8611111 | 2 | 400 | 1.0000000 | 1401-06-01 | .0000000 | 1.0000000 | 2400.0000000 | 1.0000000 + 30 | 12 | 1204.8666667 | 1 | 500 | .5000000 | 1401-06-01 | 2500.0000000 | 1.0000000 | 2400.0000000 | 1.0000000 + 30 | 12 | 1095.7000000 | 3 | 500 | 1.0000000 | 1401-06-01 | 3000.0000000 | 2.0000000 | 2400.0000000 | 1.0000000 + 30 | 12 | 1004.6666667 | 3 | 600 | .5000000 | 1401-06-01 | 3000.0000000 | 1.0000000 | 2400.0000000 | 1.0000000 + 40 | 1 | 1004.6666667 | 4 | 700 | 1.0000000 | 1401-06-01 | 800.0000000 | 2.0000000 | 2400.0000000 | 1.0000000 + 40 | 1 | 1004.6666667 | 4 | 800 | .5000000 | 1401-06-01 | 800.0000000 | 1.0000000 | 2400.0000000 | 1.0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.prc/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc rows between 2 preceding and unbounded following ); -- mvd 4,5->3; + dt | qty | to_char | vn | pn +------------+------+-------------------+----+----- + 1401-01-01 | 1100 | 239720.4621212 | 40 | 100 + 1401-03-01 | 1 | 239720.4621212 | 10 | 200 + 1401-04-01 | 1 | 239720.4621212 | 40 | 200 + 1401-05-01 | 1 | 2.4181818 | 20 | 100 + 1401-05-02 | 1 | 2.5666667 | 30 | 300 + 1401-06-01 | 1 | 2.7222222 | 50 | 400 + 1401-06-01 | 1 | 2.8750000 | 50 | 400 + 1401-06-01 | 12 | 3.0000000 | 30 | 500 + 1401-06-01 | 12 | 3.0333333 | 30 | 500 + 1401-06-01 | 12 | 2.8000000 | 30 | 600 + 1401-06-01 | 1 | 1.3333333 | 40 | 700 + 1401-06-01 | 1 | 1.3333333 | 40 | 800 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty*ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc rows between floor(ow_sale.prc*ow_sale.prc) preceding and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.prc,ow_sale.vn order by ow_sale.vn asc), +win3 as (order by ow_sale.vn asc), +win4 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.pn asc); -- mvd 1->6; 4,8,2,1,9->7; 1->10; 12->11; 1->13; + vn | dt | dt | prc | vn | to_char | to_char | cn | qty | to_char | to_char | pn | to_char +----+------------+------------+------+----+-------------------+-------------------+----+------+-------------------+-------------------+-----+------------------- + 10 | 1401-03-01 | 1401-03-01 | 0 | 10 | 194.5454545 | 1.0000000 | 1 | 1 | .0000000 | .0000000 | 200 | 1.0000000 + 20 | 1401-05-01 | 1401-05-01 | 0 | 20 | 230.5555556 | 1.0000000 | 1 | 1 | .0909091 | .0000000 | 100 | 2.0000000 + 30 | 1401-06-01 | 1401-06-01 | 5 | 30 | 181.8181818 | 1.0000000 | 3 | 12 | .1818182 | .0000000 | 500 | 3.0000000 + 30 | 1401-06-01 | 1401-06-01 | 5 | 30 | 181.8181818 | 1.0000000 | 1 | 12 | .1818182 | .0000000 | 500 | 3.0000000 + 30 | 1401-05-02 | 1401-05-02 | 0 | 30 | 189.2857143 | 1.0000000 | 1 | 1 | .1818182 | .0000000 | 300 | 3.0000000 + 30 | 1401-06-01 | 1401-06-01 | 5 | 30 | 181.8181818 | 1.0000000 | 3 | 12 | .1818182 | .0000000 | 600 | 3.0000000 + 40 | 1401-01-01 | 1401-01-01 | 2400 | 40 | 181.8181818 | 1.0000000 | 2 | 1100 | .5454545 | .0000000 | 100 | 7.0000000 + 40 | 1401-04-01 | 1401-04-01 | 0 | 40 | 183.3333333 | 1.0000000 | 3 | 1 | .5454545 | .0000000 | 200 | 7.0000000 + 40 | 1401-06-01 | 1401-06-01 | 1 | 40 | 50.0000000 | 1.0000000 | 4 | 1 | .5454545 | .0000000 | 700 | 7.0000000 + 40 | 1401-06-01 | 1401-06-01 | 1 | 40 | .0000000 | 1.0000000 | 4 | 1 | .5454545 | .0000000 | 800 | 7.0000000 + 50 | 1401-06-01 | 1401-06-01 | 0 | 50 | 136.6666667 | 1.0000000 | 2 | 1 | .9090909 | .0000000 | 400 | 11.0000000 + 50 | 1401-06-01 | 1401-06-01 | 0 | 50 | 161.9047619 | 1.0000000 | 1 | 1 | .9090909 | .0000000 | 400 | 11.0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.vn asc rows between current row and current row ); -- mvd 3,4->5; + qty | qty | cn | vn | to_char +------+------+----+----+------------------- + 1100 | 1100 | 2 | 40 | .0000000 + 1 | 1 | 1 | 10 | .0000000 + 1 | 1 | 3 | 40 | .0000000 + 1 | 1 | 1 | 20 | .0000000 + 1 | 1 | 1 | 30 | .0000000 + 1 | 1 | 1 | 50 | .0000000 + 1 | 1 | 2 | 50 | .0000000 + 12 | 12 | 1 | 30 | .0000000 + 12 | 12 | 3 | 30 | .0000000 + 12 | 12 | 3 | 30 | .0000000 + 1 | 1 | 4 | 40 | .0000000 + 1 | 1 | 4 | 40 | .0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.cn desc rows between current row and current row ), +win2 as (order by ow_sale.pn desc); -- mvd 8->7; 8->9; 2->10; + vn | pn | vn | pn | pn | pn | to_char | cn | to_char | to_char +----+-----+----+-----+-----+-----+-------------------+----+-------------------+------------------- + 40 | 800 | 40 | 800 | 800 | 800 | .0000000 | 4 | 4.0000000 | 1.0000000 + 40 | 700 | 40 | 700 | 700 | 700 | .0000000 | 4 | 4.0000000 | 2.0000000 + 30 | 600 | 30 | 600 | 600 | 600 | .0000000 | 3 | 3.0000000 | 3.0000000 + 30 | 500 | 30 | 500 | 500 | 500 | .0000000 | 1 | 1.0000000 | 4.0000000 + 30 | 500 | 30 | 500 | 500 | 500 | .0000000 | 3 | 3.0000000 | 5.0000000 + 50 | 400 | 50 | 400 | 400 | 400 | .0000000 | 2 | 2.0000000 | 6.0000000 + 50 | 400 | 50 | 400 | 400 | 400 | .0000000 | 1 | 1.0000000 | 7.0000000 + 30 | 300 | 30 | 300 | 300 | 300 | .0000000 | 1 | 1.0000000 | 8.0000000 + 40 | 200 | 40 | 200 | 200 | 200 | .0000000 | 3 | 3.0000000 | 9.0000000 + 10 | 200 | 10 | 200 | 200 | 200 | .0000000 | 1 | 1.0000000 | 10.0000000 + 40 | 100 | 40 | 100 | 100 | 100 | .0000000 | 2 | 2.0000000 | 11.0000000 + 20 | 100 | 20 | 100 | 100 | 100 | .0000000 | 1 | 1.0000000 | 12.0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn-ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.pn asc rows between current row and 0 following ); -- mvd 6,5->7; + vn | vn | prc | prc | pn | cn | to_char +----+----+------+------+-----+----+------------------- + 40 | 40 | 2400 | 2400 | 100 | 2 | .0000000 + 10 | 10 | 0 | 0 | 200 | 1 | .0000000 + 40 | 40 | 0 | 0 | 200 | 3 | .0000000 + 20 | 20 | 0 | 0 | 100 | 1 | .0000000 + 30 | 30 | 0 | 0 | 300 | 1 | .0000000 + 50 | 50 | 0 | 0 | 400 | 1 | .0000000 + 50 | 50 | 0 | 0 | 400 | 2 | .0000000 + 30 | 30 | 5 | 5 | 500 | 1 | .0000000 + 30 | 30 | 5 | 5 | 500 | 3 | .0000000 + 30 | 30 | 5 | 5 | 600 | 3 | .0000000 + 40 | 40 | 1 | 1 | 700 | 4 | .0000000 + 40 | 40 | 1 | 1 | 800 | 4 | .0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn/ow_sale.cn),floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc rows between current row and unbounded following ); -- mvd 3,4->2; + qty | to_char | cn | pn +------+-------------------+----+----- + 1100 | 46.5151515 | 2 | 100 + 1 | 151.9818182 | 1 | 200 + 1 | 84.2111111 | 3 | 200 + 1 | 202.2500000 | 1 | 100 + 1 | -170.6250000 | 1 | 300 + 1 | -144.3333333 | 1 | 400 + 1 | -488.3000000 | 2 | 400 + 12 | -459.7500000 | 1 | 500 + 12 | 16.5000000 | 3 | 500 + 12 | -45.8333333 | 3 | 600 + 1 | .0000000 | 4 | 700 + 1 | .0000000 | 4 | 800 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.pn-ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc*ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 5,3->4; 5,3->6; 3->7; 3->8; 3->9; 3->10; + prc | pn | vn | to_char | cn | to_char | to_char | to_char | to_char | to_char +------+-----+----+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 2400 | 100 | 40 | 30390.9090909 | 2 | 100.0000000 | 100.0000000 | 1.0000000 | .0000000 | .0000000 + 0 | 200 | 10 | 740.9090909 | 1 | 100.0000000 | 200.0000000 | 2.0000000 | 200.0000000 | .0909091 + 0 | 200 | 40 | 250.0000000 | 3 | 100.0000000 | 200.0000000 | 3.0000000 | 200.0000000 | .1818182 + 0 | 100 | 20 | 534.7222222 | 1 | 100.0000000 | 100.0000000 | 4.0000000 | 100.0000000 | .2727273 + 0 | 300 | 30 | -110.7142857 | 1 | 300.0000000 | 300.0000000 | 5.0000000 | 300.0000000 | .3636364 + 0 | 400 | 50 | -273.8095238 | 1 | 400.0000000 | 400.0000000 | 6.0000000 | 400.0000000 | .4545455 + 0 | 400 | 50 | 263.3333333 | 2 | 400.0000000 | 400.0000000 | 7.0000000 | 400.0000000 | .5454545 + 5 | 500 | 30 | 1365.0000000 | 1 | 500.0000000 | 500.0000000 | 8.0000000 | 200.0000000 | .6363636 + 5 | 500 | 30 | 1400.0000000 | 3 | 500.0000000 | 500.0000000 | 9.0000000 | 100.0000000 | .7272727 + 5 | 600 | 30 | 1050.0000000 | 3 | 600.0000000 | 600.0000000 | 10.0000000 | 300.0000000 | .8181818 + 1 | 700 | 40 | .0000000 | 4 | 700.0000000 | 700.0000000 | 11.0000000 | 600.0000000 | .9090909 + 1 | 800 | 40 | .0000000 | 4 | 800.0000000 | 800.0000000 | 12.0000000 | 700.0000000 | 1.0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.pn+ow_sale.vn) following and 6 following ); -- mvd 8->7; + pn | vn | pn | pn | pn | qty | to_char | cn +-----+----+-----+-----+-----+------+-------------------+---- + 100 | 40 | 100 | 100 | 100 | 1100 | .0000000 | 2 + 200 | 10 | 200 | 200 | 200 | 1 | .0000000 | 1 + 200 | 40 | 200 | 200 | 200 | 1 | .0000000 | 3 + 100 | 20 | 100 | 100 | 100 | 1 | .0000000 | 1 + 300 | 30 | 300 | 300 | 300 | 1 | .0000000 | 1 + 400 | 50 | 400 | 400 | 400 | 1 | .0000000 | 1 + 400 | 50 | 400 | 400 | 400 | 1 | .0000000 | 2 + 500 | 30 | 500 | 500 | 500 | 12 | .0000000 | 1 + 500 | 30 | 500 | 500 | 500 | 12 | .0000000 | 3 + 600 | 30 | 600 | 600 | 600 | 12 | .0000000 | 3 + 700 | 40 | 700 | 700 | 700 | 1 | .0000000 | 4 + 800 | 40 | 800 | 800 | 800 | 1 | .0000000 | 4 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty+ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc,ow_sale.pn asc rows between 4 following and 4 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc,ow_sale.pn asc rows between 4 following and 4 following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.cn desc), +win4 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 6,7->5; 6->8; 1,10->9; 7->11; 6,7->12; + cn | cn | cn | cn | to_char | vn | pn | to_char | to_char | dt | to_char | to_char +----+----+----+----+-------------------+----+-----+-------------------+-------------------+------------+-------------------+------------------- + 1 | 1 | 1 | 1 | .0000000 | 10 | 200 | 1.0000000 | 1.0000000 | 1401-03-01 | 100.0000000 | 50.0000000 + 1 | 1 | 1 | 1 | .0000000 | 20 | 100 | 2.0000000 | 1.0000000 | 1401-05-01 | 200.0000000 | 30.0000000 + 3 | 3 | 3 | 3 | .0000000 | 30 | 500 | 3.0000000 | 1.0000000 | 1401-06-01 | .0000000 | .0000000 + 1 | 1 | 1 | 1 | .0000000 | 30 | 500 | 3.0000000 | 1.0000000 | 1401-06-01 | .0000000 | 160.0000000 + 1 | 1 | 1 | 1 | .0000000 | 30 | 300 | 3.0000000 | 1.0000000 | 1401-05-02 | 100.0000000 | 90.0000000 + 3 | 3 | 3 | 3 | .0000000 | 30 | 600 | 3.0000000 | 1.0000000 | 1401-06-01 | .0000000 | .0000000 + 2 | 2 | 2 | 2 | .0000000 | 40 | 100 | 4.0000000 | 1.0000000 | 1401-01-01 | .0000000 | 30.0000000 + 3 | 3 | 3 | 3 | .0000000 | 40 | 200 | 4.0000000 | 1.0000000 | 1401-04-01 | 200.0000000 | 100.0000000 + 4 | 4 | 4 | 4 | .0000000 | 40 | 700 | 4.0000000 | 1.0000000 | 1401-06-01 | 500.0000000 | .0000000 + 4 | 4 | 4 | 4 | .0000000 | 40 | 800 | 4.0000000 | 1.0000000 | 1401-06-01 | 600.0000000 | .0000000 + 2 | 2 | 2 | 2 | .0000000 | 50 | 400 | 5.0000000 | 1.0000000 | 1401-06-01 | 400.0000000 | 160.0000000 + 1 | 1 | 1 | 1 | .0000000 | 50 | 400 | 5.0000000 | 1.0000000 | 1401-06-01 | 300.0000000 | 90.0000000 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn-ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc,ow_sale.cn desc rows between floor(ow_sale.qty) following and unbounded following ); -- mvd 3,6,8->7; + dt | dt | cn | cn | prc | vn | to_char | pn +------------+------------+----+----+------+----+-------------------+----- + 1401-01-01 | 1401-01-01 | 2 | 2 | 2400 | 40 | .0000000 | 100 + 1401-03-01 | 1401-03-01 | 1 | 1 | 0 | 10 | 102.4444444 | 200 + 1401-04-01 | 1401-04-01 | 3 | 3 | 0 | 40 | 112.0833333 | 200 + 1401-05-01 | 1401-05-01 | 1 | 1 | 0 | 20 | 93.9285714 | 100 + 1401-05-02 | 1401-05-02 | 1 | 1 | 0 | 30 | 101.9047619 | 300 + 1401-06-01 | 1401-06-01 | 1 | 1 | 0 | 50 | 85.3333333 | 400 + 1401-06-01 | 1401-06-01 | 2 | 2 | 0 | 50 | 42.0000000 | 400 + 1401-06-01 | 1401-06-01 | 1 | 1 | 5 | 30 | .0000000 | 500 + 1401-06-01 | 1401-06-01 | 3 | 3 | 5 | 30 | .0000000 | 500 + 1401-06-01 | 1401-06-01 | 3 | 3 | 5 | 30 | .0000000 | 600 + 1401-06-01 | 1401-06-01 | 4 | 4 | 1 | 40 | .0000000 | 700 + 1401-06-01 | 1401-06-01 | 4 | 4 | 1 | 40 | .0000000 | 800 +(12 rows) + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.cn asc rows between 1 following and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.vn order by ow_sale.vn asc), +win3 as (partition by ow_sale.cn order by ow_sale.vn asc); -- mvd 2,5->4; 1,7,2,8,5->6; 2,8->9; 2,8->10; + prc | cn | qty | to_char | pn | to_char | dt | vn | to_char | to_char +------+----+------+-------------------+-----+-------------------+------------+----+-------------------+------------------- + 2400 | 2 | 1100 | 199.8181818 | 100 | .0000000 | 1401-01-01 | 40 | .5000000 | 1.0000000 + 0 | 1 | 1 | 185.7777778 | 200 | .0000000 | 1401-03-01 | 10 | .2000000 | 1.0000000 + 0 | 3 | 1 | 232.9166667 | 200 | .0000000 | 1401-04-01 | 40 | 1.0000000 | 3.0000000 + 0 | 1 | 1 | 188.9285714 | 100 | .0000000 | 1401-05-01 | 20 | .4000000 | 2.0000000 + 0 | 1 | 1 | 159.5238095 | 300 | .0000000 | 1401-05-02 | 30 | .8000000 | 3.0000000 + 0 | 1 | 1 | 138.0000000 | 400 | .0000000 | 1401-06-01 | 50 | 1.0000000 | 5.0000000 + 0 | 2 | 1 | 130.0000000 | 400 | .0000000 | 1401-06-01 | 50 | 1.0000000 | 2.0000000 + 5 | 1 | 12 | 70.0000000 | 500 | .0000000 | 1401-06-01 | 30 | .8000000 | 4.0000000 + 5 | 3 | 12 | 53.3333333 | 500 | .0000000 | 1401-06-01 | 30 | .6666667 | 1.0000000 + 5 | 3 | 12 | .0000000 | 600 | .0000000 | 1401-06-01 | 30 | .6666667 | 2.0000000 + 1 | 4 | 1 | .0000000 | 700 | .0000000 | 1401-06-01 | 40 | 1.0000000 | 2.0000000 + 1 | 4 | 1 | .0000000 | 800 | .0000000 | 1401-06-01 | 40 | 1.0000000 | 1.0000000 +(12 rows) + +-- COVAR_SAMP() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.vn order by ow_sale.pn desc,ow_sale.pn asc); -- mvd 6,2,7,1->5; + pn | vn | vn | vn | to_char | dt | qty +-----+----+----+----+-------------------+------------+------ + 200 | 40 | 40 | 40 | .0000000 | 1401-04-01 | 1 + 100 | 20 | 20 | 20 | .0000000 | 1401-05-01 | 1 + 600 | 30 | 30 | 30 | .0000000 | 1401-06-01 | 12 + 500 | 30 | 30 | 30 | 100000.0000000 | 1401-06-01 | 12 + 500 | 30 | 30 | 30 | 100000.0000000 | 1401-06-01 | 12 + 100 | 40 | 40 | 40 | .0000000 | 1401-01-01 | 1100 + 200 | 10 | 10 | 10 | .0000000 | 1401-03-01 | 1 + 300 | 30 | 30 | 30 | .0000000 | 1401-05-02 | 1 + 800 | 40 | 40 | 40 | .0000000 | 1401-06-01 | 1 + 700 | 40 | 40 | 40 | 200000.0000000 | 1401-06-01 | 1 + 400 | 50 | 50 | 50 | .0000000 | 1401-06-01 | 1 + 400 | 50 | 50 | 50 | .0000000 | 1401-06-01 | 1 +(12 rows) + +-- COVAR_SAMP() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn/ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.prc order by ow_sale.cn asc), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc); -- mvd 4,5,6,1->3; 4,5,6,1->7; 4,5,9->8; + vn | pn | to_char | prc | cn | dt | to_char | to_char | qty +----+-----+-------------------+------+----+------------+-------------------+-------------------+------ + 20 | 100 | .0000000 | 0 | 1 | 1401-05-01 | 1.0000000 | 400.0000000 | 1 + 40 | 200 | .0000000 | 0 | 3 | 1401-04-01 | 1.0000000 | .0000000 | 1 + 50 | 400 | .0000000 | 0 | 2 | 1401-06-01 | 1.0000000 | .0000000 | 1 + 10 | 200 | .0000000 | 0 | 1 | 1401-03-01 | 1.0000000 | 300.0000000 | 1 + 30 | 300 | .0000000 | 0 | 1 | 1401-05-02 | 1.0000000 | .0000000 | 1 + 50 | 400 | .0000000 | 0 | 1 | 1401-06-01 | 1.0000000 | .0000000 | 1 + 40 | 800 | .0000000 | 1 | 4 | 1401-06-01 | 1.0000000 | .0000000 | 1 + 40 | 700 | .0000000 | 1 | 4 | 1401-06-01 | 2.0000000 | .0000000 | 1 + 30 | 500 | .0000000 | 5 | 1 | 1401-06-01 | 1.0000000 | .0000000 | 12 + 30 | 600 | .0000000 | 5 | 3 | 1401-06-01 | 1.0000000 | .0000000 | 12 + 30 | 500 | .0000000 | 5 | 3 | 1401-06-01 | 2.0000000 | .0000000 | 12 + 40 | 100 | .0000000 | 2400 | 2 | 1401-01-01 | 1.0000000 | .0000000 | 1100 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.cn desc range unbounded preceding ); -- mvd 2->6; + pn | cn | qty | qty | prc | to_char +-----+----+------+------+------+------------------- + 400 | 1 | 1 | 1 | 0 | 5.5000000 + 100 | 1 | 1 | 1 | 0 | 5.5000000 + 300 | 1 | 1 | 1 | 0 | 5.5000000 + 500 | 1 | 12 | 12 | 5 | 5.5000000 + 200 | 1 | 1 | 1 | 0 | 5.5000000 + 600 | 3 | 12 | 12 | 5 | -36.6666667 + 200 | 3 | 1 | 1 | 0 | -36.6666667 + 500 | 3 | 12 | 12 | 5 | -36.6666667 + 400 | 2 | 1 | 1 | 0 | -5495.0000000 + 100 | 2 | 1100 | 1100 | 2400 | -5495.0000000 + 800 | 4 | 1 | 1 | 1 | .0000000 + 700 | 4 | 1 | 1 | 1 | .0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty*ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc*ow_sale.prc) as int),cast (floor(ow_sale.pn-ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.prc,ow_sale.cn,ow_sale.vn order by ow_sale.vn asc range unbounded preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.pn asc); -- mvd 8,2,9,10->7; 2->11; 2->12; 2->13; 8,15->14; + qty | cn | qty | qty | cn | qty | to_char | prc | dt | vn | to_char | to_char | to_char | to_char | pn +------+----+------+------+----+------+-------------------+------+------------+----+-------------------+-------------------+-------------------+-------------------+----- + 1100 | 2 | 1100 | 1100 | 2 | 1100 | .0000000 | 2400 | 1401-01-01 | 40 | .0000000 | 1.0000000 | 1.0000000 | .0000000 | 100 + 1 | 1 | 1 | 1 | 1 | 1 | .0000000 | 0 | 1401-03-01 | 10 | 40.0000000 | 2.0000000 | 2.0000000 | .0000000 | 200 + 1 | 3 | 1 | 1 | 3 | 1 | .0000000 | 0 | 1401-04-01 | 40 | .0000000 | 3.0000000 | 3.0000000 | .0000000 | 200 + 1 | 1 | 1 | 1 | 1 | 1 | .0000000 | 0 | 1401-05-01 | 20 | .0000000 | 4.0000000 | 4.0000000 | .0000000 | 100 + 1 | 1 | 1 | 1 | 1 | 1 | .0000000 | 0 | 1401-05-02 | 30 | .0000000 | 5.0000000 | 5.0000000 | .0000000 | 300 + 1 | 1 | 1 | 1 | 1 | 1 | .0000000 | 0 | 1401-06-01 | 50 | .0000000 | 6.0000000 | 6.0000000 | .0000000 | 400 + 1 | 2 | 1 | 1 | 2 | 1 | .0000000 | 0 | 1401-06-01 | 50 | .0000000 | 7.0000000 | 7.0000000 | .0000000 | 400 + 12 | 1 | 12 | 12 | 1 | 12 | .0000000 | 5 | 1401-06-01 | 30 | .0000000 | 8.0000000 | 8.0000000 | .0000000 | 500 + 12 | 3 | 12 | 12 | 3 | 12 | .0000000 | 5 | 1401-06-01 | 30 | .0000000 | 9.0000000 | 9.0000000 | .0000000 | 500 + 12 | 3 | 12 | 12 | 3 | 12 | .0000000 | 5 | 1401-06-01 | 30 | .0000000 | 10.0000000 | 10.0000000 | .0000000 | 600 + 1 | 4 | 1 | 1 | 4 | 1 | .0000000 | 1 | 1401-06-01 | 40 | .0000000 | 11.0000000 | 11.0000000 | .0000000 | 700 + 1 | 4 | 1 | 1 | 4 | 1 | .0000000 | 1 | 1401-06-01 | 40 | .0000000 | 12.0000000 | 12.0000000 | .0000000 | 800 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn-ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.vn asc range 2 preceding ); -- mvd 2,4->5; + dt | cn | dt | vn | to_char +------------+----+------------+----+------------------- + 1401-03-01 | 1 | 1401-03-01 | 10 | .0000000 + 1401-05-01 | 1 | 1401-05-01 | 20 | .0000000 + 1401-05-02 | 1 | 1401-05-02 | 30 | 18900.0000000 + 1401-06-01 | 1 | 1401-06-01 | 30 | 18900.0000000 + 1401-06-01 | 3 | 1401-06-01 | 30 | 5000.0000000 + 1401-06-01 | 3 | 1401-06-01 | 30 | 5000.0000000 + 1401-04-01 | 3 | 1401-04-01 | 40 | .0000000 + 1401-06-01 | 1 | 1401-06-01 | 50 | .0000000 + 1401-01-01 | 2 | 1401-01-01 | 40 | .0000000 + 1401-06-01 | 4 | 1401-06-01 | 40 | 5000.0000000 + 1401-06-01 | 4 | 1401-06-01 | 40 | 5000.0000000 + 1401-06-01 | 2 | 1401-06-01 | 50 | .0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn-ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.cn order by ow_sale.pn desc range floor(ow_sale.pn) preceding ), +win2 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.cn asc); -- mvd 1,7,4,3->6; 9,1,2,3->8; 1,7,3->10; 9,1,2,3->11; + cn | qty | pn | vn | qty | to_char | dt | to_char | prc | to_char | to_char +----+------+-----+----+------+-------------------+------------+-------------------+------+-------------------+------------------- + 3 | 1 | 200 | 40 | 1 | .0000000 | 1401-04-01 | .0000000 | 0 | 1.0000000 | 1.0000000 + 1 | 1 | 100 | 20 | 1 | .0000000 | 1401-05-01 | 190.0000000 | 0 | 1.0000000 | 2.0000000 + 4 | 1 | 800 | 40 | 1 | .0000000 | 1401-06-01 | .0000000 | 1 | 1.0000000 | 2.0000000 + 4 | 1 | 700 | 40 | 1 | .0000000 | 1401-06-01 | .0000000 | 1 | 1.0000000 | 1.0000000 + 2 | 1 | 400 | 50 | 1 | .0000000 | 1401-06-01 | .0000000 | 0 | 1.0000000 | 1.0000000 + 2 | 1100 | 100 | 40 | 1100 | .0000000 | 1401-01-01 | .0000000 | 2400 | 1.0000000 | 1.0000000 + 1 | 1 | 200 | 10 | 1 | .0000000 | 1401-03-01 | .0000000 | 0 | 1.0000000 | 1.0000000 + 1 | 1 | 300 | 30 | 1 | .0000000 | 1401-05-02 | 80.0000000 | 0 | 1.0000000 | 3.0000000 + 1 | 12 | 500 | 30 | 12 | .0000000 | 1401-06-01 | .0000000 | 5 | 1.0000000 | 1.0000000 + 3 | 12 | 600 | 30 | 12 | .0000000 | 1401-06-01 | .0000000 | 5 | 1.0000000 | 2.0000000 + 3 | 12 | 500 | 30 | 12 | .0000000 | 1401-06-01 | .0000000 | 5 | 1.0000000 | 1.0000000 + 1 | 1 | 400 | 50 | 1 | .0000000 | 1401-06-01 | 270.0000000 | 0 | 1.0000000 | 4.0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.cn desc range current row ); -- mvd 3,4,5->2; + dt | to_char | cn | qty | vn +------------+-------------------+----+------+---- + 1401-03-01 | .0000000 | 1 | 1 | 10 + 1401-05-01 | .0000000 | 1 | 1 | 20 + 1401-05-02 | .0000000 | 1 | 1 | 30 + 1401-06-01 | .0000000 | 4 | 1 | 40 + 1401-06-01 | .0000000 | 4 | 1 | 40 + 1401-04-01 | .0000000 | 3 | 1 | 40 + 1401-06-01 | .0000000 | 2 | 1 | 50 + 1401-06-01 | .0000000 | 1 | 1 | 50 + 1401-06-01 | .0000000 | 3 | 12 | 30 + 1401-06-01 | .0000000 | 3 | 12 | 30 + 1401-06-01 | .0000000 | 1 | 12 | 30 + 1401-01-01 | .0000000 | 2 | 1100 | 40 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.dt order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn-ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.cn desc range current row ), +win2 as (partition by ow_sale.dt order by ow_sale.vn desc), +win3 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 2,4,7->6; 1,4->8; 1,4->9; 11,1,2,7->10; 1,4->12; 1,4->13; + dt | cn | qty | vn | vn | to_char | pn | to_char | to_char | to_char | prc | to_char | to_char +------------+----+------+----+----+-------------------+-----+-------------------+-------------------+-------------------+------+-------------------+------------------- + 1401-05-02 | 1 | 1 | 30 | 30 | .0000000 | 300 | .0000000 | 1.0000000 | .0000000 | 0 | 1.0000000 | 1.0000000 + 1401-06-01 | 3 | 12 | 30 | 30 | .0000000 | 500 | .6666667 | 1.0000000 | .0000000 | 5 | 5.0000000 | 7.0000000 + 1401-06-01 | 1 | 12 | 30 | 30 | .0000000 | 500 | .6666667 | 1.0000000 | .0000000 | 5 | 7.0000000 | 7.0000000 + 1401-06-01 | 4 | 1 | 40 | 40 | .0000000 | 800 | .3333333 | .5714286 | .0000000 | 1 | 4.0000000 | 4.0000000 + 1401-06-01 | 2 | 1 | 50 | 50 | .0000000 | 400 | .0000000 | .2857143 | .0000000 | 0 | 2.0000000 | 2.0000000 + 1401-06-01 | 1 | 1 | 50 | 50 | .0000000 | 400 | .0000000 | .2857143 | .0000000 | 0 | 1.0000000 | 2.0000000 + 1401-03-01 | 1 | 1 | 10 | 10 | .0000000 | 200 | .0000000 | 1.0000000 | .0000000 | 0 | 1.0000000 | 1.0000000 + 1401-05-01 | 1 | 1 | 20 | 20 | .0000000 | 100 | .0000000 | 1.0000000 | .0000000 | 0 | 1.0000000 | 1.0000000 + 1401-06-01 | 3 | 12 | 30 | 30 | .0000000 | 600 | .6666667 | 1.0000000 | .0000000 | 5 | 6.0000000 | 7.0000000 + 1401-01-01 | 2 | 1100 | 40 | 40 | .0000000 | 100 | .0000000 | 1.0000000 | .0000000 | 2400 | 1.0000000 | 1.0000000 + 1401-04-01 | 3 | 1 | 40 | 40 | .0000000 | 200 | .0000000 | 1.0000000 | .0000000 | 0 | 1.0000000 | 1.0000000 + 1401-06-01 | 4 | 1 | 40 | 40 | .0000000 | 700 | .3333333 | .5714286 | .0000000 | 1 | 3.0000000 | 4.0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.cn desc range between unbounded preceding and 3 preceding ); -- mvd 4,5->7; + prc | vn | pn | cn | qty | pn | to_char +------+----+-----+----+------+-----+------------------- + 0 | 50 | 400 | 2 | 1 | 400 | .0000000 + 1 | 40 | 800 | 4 | 1 | 800 | .0000000 + 1 | 40 | 700 | 4 | 1 | 700 | .0000000 + 5 | 30 | 500 | 1 | 12 | 500 | .0000000 + 5 | 30 | 600 | 3 | 12 | 600 | .0000000 + 5 | 30 | 500 | 3 | 12 | 500 | .0000000 + 0 | 20 | 100 | 1 | 1 | 100 | .0000000 + 0 | 10 | 200 | 1 | 1 | 200 | .0000000 + 0 | 30 | 300 | 1 | 1 | 300 | .0000000 + 0 | 50 | 400 | 1 | 1 | 400 | .0000000 + 0 | 40 | 200 | 3 | 1 | 200 | .0000000 + 2400 | 40 | 100 | 2 | 1100 | 100 | .0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 4->3; + vn | qty | to_char | cn +----+------+-------------------+---- + 50 | 1 | .0000000 | 1 + 20 | 1 | .0000000 | 1 + 30 | 1 | .0000000 | 1 + 30 | 12 | .0000000 | 1 + 10 | 1 | .0000000 | 1 + 30 | 12 | .0000000 | 3 + 40 | 1 | .0000000 | 3 + 30 | 12 | .0000000 | 3 + 50 | 1 | .0000000 | 2 + 40 | 1100 | .0000000 | 2 + 40 | 1 | .0000000 | 4 + 40 | 1 | .0000000 | 4 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc*ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.dt order by ow_sale.cn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.dt order by ow_sale.cn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.dt order by ow_sale.cn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.dt order by ow_sale.cn asc range between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.dt order by ow_sale.cn asc range between unbounded preceding and current row ); -- mvd 5,1,6,7->4; 5,1,6,7->8; 5,1,6,7->9; 5,1,6,7->10; 5,1,6,7->11; 5,1,6,7->12; + cn | prc | prc | to_char | dt | vn | qty | to_char | to_char | to_char | to_char | to_char +----+------+------+-------------------+------------+----+------+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | 0 | 0 | .0000000 | 1401-03-01 | 10 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 20.0000000 + 1 | 0 | 0 | .0000000 | 1401-05-02 | 30 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 60.0000000 + 1 | 0 | 0 | .0000000 | 1401-06-01 | 50 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 100.0000000 + 1 | 0 | 0 | .0000000 | 1401-05-01 | 20 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 40.0000000 + 1 | 5 | 5 | .0000000 | 1401-06-01 | 30 | 12 | 2500.0000000 | 1.0000000 | 12.0000000 | 1.0000000 | 60.0000000 + 2 | 0 | 0 | .0000000 | 1401-06-01 | 50 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 100.0000000 + 2 | 2400 | 2400 | .0000000 | 1401-01-01 | 40 | 1100 | 240000.0000000 | 1.0000000 | 1100.0000000 | 1.0000000 | 80.0000000 + 3 | 0 | 0 | .0000000 | 1401-04-01 | 40 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 80.0000000 + 3 | 5 | 5 | .0000000 | 1401-06-01 | 30 | 12 | 3000.0000000 | 2.0000000 | 12.0000000 | 2.0000000 | 60.0000000 + 3 | 5 | 5 | .0000000 | 1401-06-01 | 30 | 12 | 3000.0000000 | 2.0000000 | 12.0000000 | 2.0000000 | 60.0000000 + 4 | 1 | 1 | .0000000 | 1401-06-01 | 40 | 1 | 800.0000000 | 2.0000000 | 1.0000000 | 2.0000000 | 80.0000000 + 4 | 1 | 1 | .0000000 | 1401-06-01 | 40 | 1 | 800.0000000 | 2.0000000 | 1.0000000 | 2.0000000 | 80.0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc*ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn*ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.qty)) OVER(partition by ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.prc,ow_sale.vn,ow_sale.prc order by ow_sale.pn desc range between unbounded preceding and 2 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.prc,ow_sale.vn,ow_sale.prc order by ow_sale.pn desc range between unbounded preceding and 2 following ), +win2 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc); -- mvd 5,2,3,1->4; 7,1->6; 7,3->8; 5,2,3,1->9; + pn | qty | vn | to_char | prc | to_char | cn | to_char | to_char +-----+------+----+-------------------+------+-------------------+----+-------------------+------------------- + 200 | 1 | 10 | .0000000 | 0 | 1.0000000 | 1 | .0000000 | 11.0000000 + 100 | 1 | 20 | .0000000 | 0 | 1.0000000 | 1 | .0000000 | 21.0000000 + 300 | 1 | 30 | .0000000 | 0 | 1.0000000 | 1 | .0000000 | 31.0000000 + 200 | 1 | 40 | .0000000 | 0 | 3.0000000 | 3 | .0000000 | 41.0000000 + 400 | 1 | 50 | .0000000 | 0 | 1.0000000 | 1 | .0000000 | 51.0000000 + 400 | 1 | 50 | .0000000 | 0 | 2.0000000 | 2 | .0000000 | 51.0000000 + 600 | 12 | 30 | .0000000 | 5 | .0000000 | 3 | .0000000 | 42.0000000 + 500 | 12 | 30 | 16666.6666667 | 5 | .0000000 | 1 | .0000000 | 42.0000000 + 500 | 12 | 30 | 16666.6666667 | 5 | .0000000 | 3 | .0000000 | 42.0000000 + 800 | 1 | 40 | .0000000 | 1 | .0000000 | 4 | .0000000 | 41.0000000 + 700 | 1 | 40 | 5000.0000000 | 1 | .0000000 | 4 | .0000000 | 41.0000000 + 100 | 1100 | 40 | .0000000 | 2400 | .0000000 | 2 | .0000000 | 1140.0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn*ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.pn desc range between unbounded preceding and unbounded following ); -- mvd 6,4->5; + dt | cn | cn | pn | to_char | qty +------------+----+----+-----+-------------------+------ + 1401-05-01 | 1 | 1 | 100 | .0000000 | 1 + 1401-03-01 | 1 | 1 | 200 | 1650.0000000 | 1 + 1401-04-01 | 3 | 3 | 200 | 1650.0000000 | 1 + 1401-06-01 | 1 | 1 | 500 | .0000000 | 12 + 1401-06-01 | 3 | 3 | 500 | .0000000 | 12 + 1401-06-01 | 4 | 4 | 700 | .0000000 | 1 + 1401-01-01 | 2 | 2 | 100 | .0000000 | 1100 + 1401-05-02 | 1 | 1 | 300 | .0000000 | 1 + 1401-06-01 | 2 | 2 | 400 | .0000000 | 1 + 1401-06-01 | 1 | 1 | 400 | .0000000 | 1 + 1401-06-01 | 3 | 3 | 600 | .0000000 | 12 + 1401-06-01 | 4 | 4 | 800 | .0000000 | 1 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn/ow_sale.pn),floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.prc order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.pn asc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.prc order by ow_sale.vn desc); -- mvd 3,4->2; 6,7->5; 6,7->8; 3,4->9; + qty | to_char | dt | pn | to_char | prc | vn | to_char | to_char +------+-------------------+------------+-----+-------------------+------+----+-------------------+------------------- + 1 | .0000000 | 1401-03-01 | 200 | 1.0000000 | 0 | 10 | 1.0000000 | 1.0000000 + 1 | .0000000 | 1401-05-02 | 300 | 1.0000000 | 0 | 30 | 1.0000000 | 1.0000000 + 1 | .0000000 | 1401-06-01 | 400 | 1.0000000 | 0 | 50 | 1.0000000 | 4.0000000 + 1 | .0000000 | 1401-06-01 | 400 | 1.0000000 | 0 | 50 | 2.0000000 | 4.0000000 + 12 | .0000000 | 1401-06-01 | 500 | 1.0000000 | 5 | 30 | 1.0000000 | 4.0000000 + 12 | .0000000 | 1401-06-01 | 500 | 1.0000000 | 5 | 30 | 2.0000000 | 4.0000000 + 12 | .0000000 | 1401-06-01 | 600 | 1.0000000 | 5 | 30 | 3.0000000 | 4.0000000 + 1 | .0000000 | 1401-06-01 | 700 | 1.0000000 | 1 | 40 | 2.0000000 | 4.0000000 + 1 | .0000000 | 1401-06-01 | 800 | 1.0000000 | 1 | 40 | 1.0000000 | 4.0000000 + 1100 | .0000000 | 1401-01-01 | 100 | 1.0000000 | 2400 | 40 | 1.0000000 | 2.0000000 + 1 | .0000000 | 1401-04-01 | 200 | 1.0000000 | 0 | 40 | 1.0000000 | 3.0000000 + 1 | .0000000 | 1401-05-01 | 100 | 1.0000000 | 0 | 20 | 1.0000000 | 1.0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn-ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.pn desc range between floor(ow_sale.vn) preceding and 3 preceding ); -- mvd 4,2->3; + qty | pn | to_char | prc +------+-----+-------------------+------ + 1 | 800 | .0000000 | 1 + 1 | 700 | .0000000 | 1 + 1 | 400 | .0000000 | 0 + 1 | 400 | .0000000 | 0 + 1 | 300 | .0000000 | 0 + 1 | 200 | .0000000 | 0 + 1 | 200 | .0000000 | 0 + 1 | 100 | .0000000 | 0 + 12 | 600 | .0000000 | 5 + 12 | 500 | .0000000 | 5 + 12 | 500 | .0000000 | 5 + 1100 | 100 | .0000000 | 2400 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.prc*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.pn asc range between floor(ow_sale.qty) preceding and 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.prc)) OVER(order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.pn asc range between floor(ow_sale.qty) preceding and 2 preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.prc,ow_sale.dt order by ow_sale.cn desc), +win4 as (order by ow_sale.pn asc); -- mvd 3,4,5->2; 3,4,5->6; 4->7; 9,3,10,1->8; 5->11; 5->12; + qty | to_char | dt | vn | pn | to_char | to_char | to_char | prc | cn | to_char | to_char +------+-------------------+------------+----+-----+-------------------+-------------------+-------------------+------+----+-------------------+------------------- + 1 | .0000000 | 1401-05-01 | 20 | 100 | .0000000 | 4.0000000 | 1.0000000 | 0 | 1 | 1.0000000 | .0000000 + 1100 | .0000000 | 1401-01-01 | 40 | 100 | .0000000 | 2.0000000 | 1.0000000 | 2400 | 2 | 2.0000000 | .0000000 + 1 | .0000000 | 1401-04-01 | 40 | 200 | .0000000 | 2.0000000 | 1.0000000 | 0 | 3 | 3.0000000 | .0000000 + 1 | .0000000 | 1401-03-01 | 10 | 200 | .0000000 | 5.0000000 | 1.0000000 | 0 | 1 | 4.0000000 | .0000000 + 1 | .0000000 | 1401-05-02 | 30 | 300 | .0000000 | 3.0000000 | 1.0000000 | 0 | 1 | 5.0000000 | .0000000 + 1 | .0000000 | 1401-06-01 | 50 | 400 | .0000000 | 1.0000000 | 1.0000000 | 0 | 2 | 6.0000000 | .0000000 + 1 | .0000000 | 1401-06-01 | 50 | 400 | .0000000 | 1.0000000 | 1.0000000 | 0 | 1 | 7.0000000 | .0000000 + 12 | .0000000 | 1401-06-01 | 30 | 500 | .0000000 | 3.0000000 | 1.0000000 | 5 | 3 | 8.0000000 | .0000000 + 12 | .0000000 | 1401-06-01 | 30 | 500 | .0000000 | 3.0000000 | 1.0000000 | 5 | 1 | 9.0000000 | .0000000 + 12 | .0000000 | 1401-06-01 | 30 | 600 | .0000000 | 3.0000000 | 2.0000000 | 5 | 3 | 10.0000000 | .0000000 + 1 | .0000000 | 1401-06-01 | 40 | 700 | .0000000 | 2.0000000 | 2.0000000 | 1 | 4 | 11.0000000 | .0000000 + 1 | .0000000 | 1401-06-01 | 40 | 800 | .0000000 | 2.0000000 | 1.0000000 | 1 | 4 | 12.0000000 | .0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.cn desc range between 0 preceding and 4 following ); -- mvd 4,5->3; + pn | pn | to_char | cn | qty +-----+-----+-------------------+----+------ + 400 | 400 | .0000000 | 2 | 1 + 800 | 800 | .0000000 | 4 | 1 + 700 | 700 | .0000000 | 4 | 1 + 500 | 500 | .0000000 | 1 | 12 + 600 | 600 | .0000000 | 3 | 12 + 500 | 500 | .0000000 | 3 | 12 + 200 | 200 | .0000000 | 1 | 1 + 100 | 100 | .0000000 | 1 | 1 + 300 | 300 | .0000000 | 1 | 1 + 400 | 400 | .0000000 | 1 | 1 + 200 | 200 | .0000000 | 3 | 1 + 100 | 100 | .0000000 | 2 | 1100 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.vn asc range between 0 preceding and floor(ow_sale.prc+ow_sale.cn) following ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,5->6; 8->7; 8->9; 8->10; 4,5->11; 1->12; + cn | qty | dt | prc | vn | to_char | to_char | pn | to_char | to_char | to_char | to_char +----+------+------------+------+----+-------------------+-------------------+-----+-------------------+-------------------+-------------------+------------------- + 2 | 1100 | 1401-01-01 | 2400 | 40 | .0000000 | .1666667 | 100 | .0000000 | 1.0000000 | 3500.0000000 | .0000000 + 1 | 1 | 1401-03-01 | 0 | 10 | .0000000 | .3333333 | 200 | .1818182 | 1.0000000 | 1.0000000 | 1.0000000 + 3 | 1 | 1401-04-01 | 0 | 40 | .0000000 | .3333333 | 200 | .1818182 | 1.0000000 | 1.0000000 | .0000000 + 1 | 1 | 1401-05-01 | 0 | 20 | .0000000 | .1666667 | 100 | .0000000 | 1.0000000 | 1.0000000 | .0000000 + 1 | 1 | 1401-05-02 | 0 | 30 | .0000000 | .4166667 | 300 | .3636364 | 1.0000000 | 1.0000000 | .0000000 + 1 | 1 | 1401-06-01 | 0 | 50 | .0000000 | .5833333 | 400 | .4545455 | 1.0000000 | 1.0000000 | .0000000 + 2 | 1 | 1401-06-01 | 0 | 50 | .0000000 | .5833333 | 400 | .4545455 | 1.0000000 | 1.0000000 | .0000000 + 1 | 12 | 1401-06-01 | 5 | 30 | .0000000 | .7500000 | 500 | .6363636 | 1.0000000 | 17.0000000 | .0000000 + 3 | 12 | 1401-06-01 | 5 | 30 | .0000000 | .7500000 | 500 | .6363636 | 1.0000000 | 17.0000000 | .0000000 + 3 | 12 | 1401-06-01 | 5 | 30 | .0000000 | .8333333 | 600 | .8181818 | 1.0000000 | 17.0000000 | .0000000 + 4 | 1 | 1401-06-01 | 1 | 40 | .0000000 | .9166667 | 700 | .9090909 | 1.0000000 | 2.0000000 | .0000000 + 4 | 1 | 1401-06-01 | 1 | 40 | .0000000 | 1.0000000 | 800 | 1.0000000 | 1.0000000 | 2.0000000 | .0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn*ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.dt order by ow_sale.pn asc range between 0 preceding and unbounded following ), +win2 as (order by ow_sale.cn desc); -- mvd 7,8,9,1->6; 8->10; + pn | vn | pn | vn | vn | to_char | dt | cn | qty | to_char +-----+----+-----+----+----+-------------------+------------+----+------+------------------- + 800 | 40 | 800 | 40 | 40 | .0000000 | 1401-06-01 | 4 | 1 | .0000000 + 700 | 40 | 700 | 40 | 40 | .0000000 | 1401-06-01 | 4 | 1 | .0000000 + 200 | 40 | 200 | 40 | 40 | .0000000 | 1401-04-01 | 3 | 1 | .1818182 + 600 | 30 | 600 | 30 | 30 | .0000000 | 1401-06-01 | 3 | 12 | .1818182 + 500 | 30 | 500 | 30 | 30 | .0000000 | 1401-06-01 | 3 | 12 | .1818182 + 400 | 50 | 400 | 50 | 50 | .0000000 | 1401-06-01 | 2 | 1 | .4545455 + 100 | 40 | 100 | 40 | 40 | .0000000 | 1401-01-01 | 2 | 1100 | .4545455 + 100 | 20 | 100 | 20 | 20 | .0000000 | 1401-05-01 | 1 | 1 | .6363636 + 400 | 50 | 400 | 50 | 50 | .0000000 | 1401-06-01 | 1 | 1 | .6363636 + 300 | 30 | 300 | 30 | 30 | .0000000 | 1401-05-02 | 1 | 1 | .6363636 + 200 | 10 | 200 | 10 | 10 | .0000000 | 1401-03-01 | 1 | 1 | .6363636 + 500 | 30 | 500 | 30 | 30 | .0000000 | 1401-06-01 | 1 | 12 | .6363636 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn+ow_sale.cn),floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.vn desc range between current row and current row ); -- mvd 3,1,4->2; + vn | to_char | cn | qty +----+-------------------+----+------ + 50 | .0000000 | 2 | 1 + 40 | 5000.0000000 | 4 | 1 + 40 | 5000.0000000 | 4 | 1 + 30 | .0000000 | 1 | 12 + 30 | 5000.0000000 | 3 | 12 + 30 | 5000.0000000 | 3 | 12 + 50 | .0000000 | 1 | 1 + 30 | .0000000 | 1 | 1 + 20 | .0000000 | 1 | 1 + 10 | .0000000 | 1 | 1 + 40 | .0000000 | 3 | 1 + 40 | .0000000 | 2 | 1100 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.cn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn/ow_sale.pn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc range between current row and current row ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.cn order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 7,8,9->6; 7,9,2->10; 7,9,2->11; 2->12; 2->13; 7,8,9->14; + qty | pn | qty | qty | qty | to_char | cn | dt | vn | to_char | to_char | to_char | to_char | to_char +------+-----+------+------+------+-------------------+----+------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 1100 | 100 | 1100 | 1100 | 1100 | .0000000 | 2 | 1401-01-01 | 40 | 1.0000000 | 2440.0000000 | .0000000 | .0833333 | 100.0000000 + 1 | 200 | 1 | 1 | 1 | .0000000 | 1 | 1401-03-01 | 10 | 1.0000000 | 10.0000000 | .0000000 | .1666667 | 200.0000000 + 1 | 200 | 1 | 1 | 1 | .0000000 | 3 | 1401-04-01 | 40 | 1.0000000 | 40.0000000 | .0000000 | .2500000 | 200.0000000 + 1 | 100 | 1 | 1 | 1 | .0000000 | 1 | 1401-05-01 | 20 | 1.0000000 | 20.0000000 | .0000000 | .3333333 | 100.0000000 + 1 | 300 | 1 | 1 | 1 | .0000000 | 1 | 1401-05-02 | 30 | 1.0000000 | 30.0000000 | .0000000 | .4166667 | 300.0000000 + 1 | 400 | 1 | 1 | 1 | .0000000 | 1 | 1401-06-01 | 50 | 1.0000000 | 50.0000000 | .0000000 | .5000000 | 400.0000000 + 1 | 400 | 1 | 1 | 1 | .0000000 | 2 | 1401-06-01 | 50 | 1.0000000 | 50.0000000 | .0000000 | .5833333 | 400.0000000 + 12 | 500 | 12 | 12 | 12 | .0000000 | 1 | 1401-06-01 | 30 | 1.0000000 | 35.0000000 | .0000000 | .6666667 | 500.0000000 + 12 | 500 | 12 | 12 | 12 | .0000000 | 3 | 1401-06-01 | 30 | 1.0000000 | 35.0000000 | .0000000 | .7500000 | 500.0000000 + 12 | 600 | 12 | 12 | 12 | .0000000 | 3 | 1401-06-01 | 30 | 1.0000000 | 35.0000000 | .0000000 | .8333333 | 500.0000000 + 1 | 700 | 1 | 1 | 1 | .0000000 | 4 | 1401-06-01 | 40 | 1.0000000 | 41.0000000 | .0000000 | .9166667 | 700.0000000 + 1 | 800 | 1 | 1 | 1 | .0000000 | 4 | 1401-06-01 | 40 | 1.0000000 | 41.0000000 | .0000000 | 1.0000000 | 700.0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.prc,ow_sale.cn order by ow_sale.vn asc range between current row and floor(ow_sale.prc/ow_sale.vn) following ), +win2 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.vn desc); -- mvd 5,2,1->4; 7,1,3->6; + vn | cn | qty | to_char | prc | to_char | dt +----+----+------+-------------------+------+-------------------+------------ + 10 | 1 | 1 | .0000000 | 0 | 1.0000000 | 1401-03-01 + 20 | 1 | 1 | .0000000 | 0 | 1.0000000 | 1401-05-01 + 30 | 1 | 1 | .0000000 | 0 | 1.0000000 | 1401-05-02 + 50 | 1 | 1 | .0000000 | 0 | 1.0000000 | 1401-06-01 + 30 | 1 | 12 | .0000000 | 5 | 1.0000000 | 1401-06-01 + 40 | 3 | 1 | .0000000 | 0 | 1.0000000 | 1401-04-01 + 30 | 3 | 12 | .0000000 | 5 | 1.0000000 | 1401-06-01 + 30 | 3 | 12 | .0000000 | 5 | 1.0000000 | 1401-06-01 + 40 | 4 | 1 | .0000000 | 1 | 1.0000000 | 1401-06-01 + 40 | 4 | 1 | .0000000 | 1 | 1.0000000 | 1401-06-01 + 50 | 2 | 1 | .0000000 | 0 | 1.0000000 | 1401-06-01 + 40 | 2 | 1100 | .0000000 | 2400 | 1.0000000 | 1401-01-01 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.prc order by ow_sale.vn desc range between current row and unbounded following ); -- mvd 4,2,5,1,6->3; + vn | dt | to_char | prc | cn | pn +----+------------+-------------------+------+----+----- + 20 | 1401-05-01 | .0000000 | 0 | 1 | 100 + 30 | 1401-05-02 | .0000000 | 0 | 1 | 300 + 50 | 1401-06-01 | .0000000 | 0 | 1 | 400 + 30 | 1401-06-01 | .0000000 | 5 | 1 | 500 + 40 | 1401-04-01 | .0000000 | 0 | 3 | 200 + 30 | 1401-06-01 | .0000000 | 5 | 3 | 500 + 40 | 1401-06-01 | .0000000 | 1 | 4 | 800 + 10 | 1401-03-01 | .0000000 | 0 | 1 | 200 + 40 | 1401-01-01 | .0000000 | 2400 | 2 | 100 + 50 | 1401-06-01 | .0000000 | 0 | 2 | 400 + 30 | 1401-06-01 | .0000000 | 5 | 3 | 600 + 40 | 1401-06-01 | .0000000 | 1 | 4 | 700 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn+ow_sale.cn),floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn-ow_sale.vn)) OVER(partition by ow_sale.dt order by ow_sale.vn asc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn asc range between current row and unbounded following ), +win2 as (order by ow_sale.cn asc); -- mvd 2,7->6; 1->8; 2,7->9; 1->10; 1->11; + cn | dt | cn | pn | pn | to_char | vn | to_char | to_char | to_char | to_char +----+------------+----+-----+-----+-------------------+----+-------------------+-------------------+-------------------+------------------- + 1 | 1401-03-01 | 1 | 200 | 200 | .0000000 | 10 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 1401-05-02 | 1 | 300 | 300 | .0000000 | 30 | .0000000 | 1.0000000 | 2.0000000 | 2.0000000 + 1 | 1401-06-01 | 1 | 500 | 500 | .0000000 | 30 | .0000000 | 7.0000000 | 3.0000000 | 3.0000000 + 1 | 1401-06-01 | 1 | 400 | 400 | .0000000 | 50 | .0000000 | 2.0000000 | 4.0000000 | 4.0000000 + 1 | 1401-05-01 | 1 | 100 | 100 | .0000000 | 20 | .0000000 | 1.0000000 | 5.0000000 | 5.0000000 + 2 | 1401-01-01 | 2 | 100 | 100 | .0000000 | 40 | .4545455 | 1.0000000 | 6.0000000 | 6.0000000 + 2 | 1401-06-01 | 2 | 400 | 400 | .0000000 | 50 | .4545455 | 2.0000000 | 7.0000000 | 7.0000000 + 3 | 1401-06-01 | 3 | 500 | 500 | .0000000 | 30 | .6363636 | 7.0000000 | 8.0000000 | 8.0000000 + 3 | 1401-06-01 | 3 | 600 | 600 | .0000000 | 30 | .6363636 | 7.0000000 | 9.0000000 | 9.0000000 + 3 | 1401-04-01 | 3 | 200 | 200 | .0000000 | 40 | .6363636 | 1.0000000 | 10.0000000 | 10.0000000 + 4 | 1401-06-01 | 4 | 700 | 700 | .0000000 | 40 | .9090909 | 4.0000000 | 11.0000000 | 11.0000000 + 4 | 1401-06-01 | 4 | 800 | 800 | .0000000 | 40 | .9090909 | 4.0000000 | 12.0000000 | 12.0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc range between 4 following and floor(ow_sale.prc) following ), +win2 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.dt order by ow_sale.cn desc); -- mvd 3,4,5->2; 3,4,5,7->6; 3,4,5,7->8; + vn | to_char | prc | cn | dt | to_char | qty | to_char +----+-------------------+------+----+------------+-------------------+------+------------------- + 40 | .0000000 | 0 | 3 | 1401-04-01 | 1.0000000 | 1 | 3.0000000 + 20 | .0000000 | 0 | 1 | 1401-05-01 | 1.0000000 | 1 | 1.0000000 + 50 | .0000000 | 0 | 2 | 1401-06-01 | .5000000 | 1 | 2.0000000 + 40 | .0000000 | 2400 | 2 | 1401-01-01 | 1.0000000 | 1100 | 2.0000000 + 10 | .0000000 | 0 | 1 | 1401-03-01 | 1.0000000 | 1 | 1.0000000 + 30 | .0000000 | 0 | 1 | 1401-05-02 | 1.0000000 | 1 | 1.0000000 + 50 | .0000000 | 0 | 1 | 1401-06-01 | 1.0000000 | 1 | 1.0000000 + 30 | .0000000 | 5 | 1 | 1401-06-01 | 1.0000000 | 12 | 1.0000000 + 30 | .0000000 | 5 | 3 | 1401-06-01 | .6666667 | 12 | 3.0000000 + 30 | .0000000 | 5 | 3 | 1401-06-01 | .6666667 | 12 | 3.0000000 + 40 | .0000000 | 1 | 4 | 1401-06-01 | 1.0000000 | 1 | 4.0000000 + 40 | .0000000 | 1 | 4 | 1401-06-01 | 1.0000000 | 1 | 4.0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn/ow_sale.qty),floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.cn asc range between 4 following and unbounded following ); -- mvd 1,5->7; + cn | vn | qty | prc | pn | pn | to_char +----+----+------+------+-----+-----+------------------- + 1 | 30 | 1 | 0 | 300 | 300 | .0000000 + 1 | 50 | 1 | 0 | 400 | 400 | .0000000 + 2 | 50 | 1 | 0 | 400 | 400 | .0000000 + 1 | 30 | 12 | 5 | 500 | 500 | .0000000 + 3 | 30 | 12 | 5 | 500 | 500 | .0000000 + 4 | 40 | 1 | 1 | 800 | 800 | .0000000 + 1 | 20 | 1 | 0 | 100 | 100 | .0000000 + 2 | 40 | 1100 | 2400 | 100 | 100 | .0000000 + 1 | 10 | 1 | 0 | 200 | 200 | .0000000 + 3 | 40 | 1 | 0 | 200 | 200 | .0000000 + 3 | 30 | 12 | 5 | 600 | 600 | .0000000 + 4 | 40 | 1 | 1 | 700 | 700 | .0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty/ow_sale.cn),floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.pn desc range between floor(ow_sale.vn) following and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc); -- mvd 4,5->3; 7,4,5->6; 7,4,5->8; + prc | qty | to_char | vn | pn | to_char | cn | to_char +------+------+-------------------+----+-----+-------------------+----+------------------- + 0 | 1 | .0000000 | 30 | 300 | .0000000 | 1 | 1.0000000 + 0 | 1 | .0000000 | 50 | 400 | .0000000 | 2 | 1.0000000 + 0 | 1 | .0000000 | 50 | 400 | .0000000 | 1 | 1.0000000 + 5 | 12 | .0000000 | 30 | 500 | .0000000 | 1 | 1.0000000 + 5 | 12 | .0000000 | 30 | 500 | .0000000 | 3 | 1.0000000 + 1 | 1 | .0000000 | 40 | 800 | .0000000 | 4 | 1.0000000 + 0 | 1 | .0000000 | 20 | 100 | .0000000 | 1 | 1.0000000 + 2400 | 1100 | .0000000 | 40 | 100 | .0000000 | 2 | 1.0000000 + 0 | 1 | .0000000 | 10 | 200 | .0000000 | 1 | 1.0000000 + 0 | 1 | .0000000 | 40 | 200 | .0000000 | 3 | 1.0000000 + 5 | 12 | .0000000 | 30 | 600 | .0000000 | 3 | 1.0000000 + 1 | 1 | .0000000 | 40 | 700 | .0000000 | 4 | 1.0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows unbounded preceding ); -- mvd 2,5,6->4; + prc | cn | qty | to_char | vn | pn +------+----+------+-------------------+----+----- + 0 | 1 | 1 | .0000000 | 10 | 200 + 0 | 1 | 1 | .0000000 | 20 | 100 + 5 | 3 | 12 | .0000000 | 30 | 600 + 0 | 3 | 1 | .0000000 | 40 | 200 + 1 | 4 | 1 | .0000000 | 40 | 800 + 0 | 2 | 1 | .0000000 | 50 | 400 + 0 | 1 | 1 | .0000000 | 30 | 300 + 5 | 1 | 12 | .0000000 | 30 | 500 + 5 | 3 | 12 | .0000000 | 30 | 500 + 2400 | 2 | 1100 | .0000000 | 40 | 100 + 1 | 4 | 1 | .0000000 | 40 | 700 + 0 | 1 | 1 | .0000000 | 50 | 400 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.prc order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows unbounded preceding ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.dt order by ow_sale.vn asc), +win3 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.prc order by ow_sale.pn asc); -- mvd 3,1,4,5->2; 3,1,4,5->6; 8,3,1->7; 10,3,1,4,5->9; 8,3,1->11; 10,3,1,4,5->12; + vn | to_char | cn | qty | pn | to_char | to_char | dt | to_char | prc | to_char | to_char +----+-------------------+----+------+-----+-------------------+-------------------+------------+-------------------+------+-------------------+------------------- + 20 | .0000000 | 1 | 1 | 100 | 1.0000000 | 1.0000000 | 1401-05-01 | .0000000 | 0 | 1.0000000 | .0000000 + 10 | .0000000 | 1 | 1 | 200 | 1.0000000 | 1.0000000 | 1401-03-01 | .0000000 | 0 | 1.0000000 | .0000000 + 40 | .0000000 | 3 | 1 | 200 | 1.0000000 | 1.0000000 | 1401-04-01 | .0000000 | 0 | 9.0000000 | .0000000 + 50 | .0000000 | 2 | 1 | 400 | 1.0000000 | 1.0000000 | 1401-06-01 | .0000000 | 0 | 4.0000000 | .0000000 + 40 | .0000000 | 4 | 1 | 800 | 1.0000000 | 2.0000000 | 1401-06-01 | 1.0000000 | 1 | 16.0000000 | 1.0000000 + 30 | .0000000 | 1 | 12 | 500 | 1.0000000 | 1.0000000 | 1401-06-01 | .0000000 | 5 | 1.0000000 | 5.0000000 + 30 | .0000000 | 3 | 12 | 500 | 1.0000000 | 1.0000000 | 1401-06-01 | .0000000 | 5 | 9.0000000 | 5.0000000 + 40 | .0000000 | 2 | 1100 | 100 | 1.0000000 | 1.0000000 | 1401-01-01 | .0000000 | 2400 | 4.0000000 | 2400.0000000 + 30 | .0000000 | 1 | 1 | 300 | 1.0000000 | 1.0000000 | 1401-05-02 | .0000000 | 0 | 1.0000000 | .0000000 + 50 | .0000000 | 1 | 1 | 400 | 1.0000000 | 1.0000000 | 1401-06-01 | .0000000 | 0 | 1.0000000 | .0000000 + 40 | .0000000 | 4 | 1 | 700 | 1.0000000 | 1.0000000 | 1401-06-01 | .0000000 | 1 | 16.0000000 | 1.0000000 + 30 | .0000000 | 3 | 12 | 600 | 1.0000000 | 2.0000000 | 1401-06-01 | 1.0000000 | 5 | 9.0000000 | 5.0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows 6 preceding ); -- mvd 1->2; + vn | to_char +----+------------------- + 10 | .0000000 + 20 | .0000000 + 30 | .0000000 + 30 | 1100.0000000 + 30 | 733.3333333 + 30 | 641.6666667 + 40 | .0000000 + 40 | -54950.0000000 + 40 | -128216.6666667 + 40 | -128216.6666667 + 50 | .0000000 + 50 | .0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows 1 preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.qty order by ow_sale.vn desc); -- mvd 4,5->3; 5->6; 8,4->7; + cn | dt | to_char | vn | pn | to_char | to_char | qty +----+------------+-------------------+----+-----+-------------------+-------------------+------ + 4 | 1401-06-01 | .0000000 | 40 | 800 | .0833333 | 3.0000000 | 1 + 4 | 1401-06-01 | .0000000 | 40 | 700 | .1666667 | 1.0000000 | 1 + 3 | 1401-06-01 | .0000000 | 30 | 600 | .2500000 | 1.0000000 | 12 + 1 | 1401-06-01 | .0000000 | 30 | 500 | .4166667 | 2.0000000 | 12 + 3 | 1401-06-01 | .0000000 | 30 | 500 | .4166667 | 3.0000000 | 12 + 1 | 1401-06-01 | .0000000 | 50 | 400 | .5833333 | 1.0000000 | 1 + 2 | 1401-06-01 | .0000000 | 50 | 400 | .5833333 | 2.0000000 | 1 + 1 | 1401-05-02 | .0000000 | 30 | 300 | .6666667 | 1.0000000 | 1 + 1 | 1401-03-01 | .0000000 | 10 | 200 | .8333333 | 1.0000000 | 1 + 3 | 1401-04-01 | .0000000 | 40 | 200 | .8333333 | 2.0000000 | 1 + 2 | 1401-01-01 | .0000000 | 40 | 100 | 1.0000000 | 1.0000000 | 1100 + 1 | 1401-05-01 | -1317600.0000000 | 20 | 100 | 1.0000000 | 1.0000000 | 1 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty*ow_sale.qty),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows current row ); -- mvd 3,2,5,6,1->4; + pn | cn | prc | to_char | dt | vn +-----+----+------+-------------------+------------+---- + 200 | 1 | 0 | .0000000 | 1401-03-01 | 10 + 800 | 4 | 1 | .0000000 | 1401-06-01 | 40 + 600 | 3 | 5 | .0000000 | 1401-06-01 | 30 + 100 | 2 | 2400 | .0000000 | 1401-01-01 | 40 + 200 | 3 | 0 | .0000000 | 1401-04-01 | 40 + 100 | 1 | 0 | .0000000 | 1401-05-01 | 20 + 300 | 1 | 0 | .0000000 | 1401-05-02 | 30 + 400 | 1 | 0 | .0000000 | 1401-06-01 | 50 + 400 | 2 | 0 | .0000000 | 1401-06-01 | 50 + 700 | 4 | 1 | .0000000 | 1401-06-01 | 40 + 500 | 1 | 5 | .0000000 | 1401-06-01 | 30 + 500 | 3 | 5 | .0000000 | 1401-06-01 | 30 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty/ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.prc) as int),cast (floor(ow_sale.vn*ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.cn desc rows current row ), +win2 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc); -- mvd 4,5,6,1->3; 8,6,1->7; 8,6,1->9; + pn | pn | to_char | prc | cn | vn | to_char | dt | to_char +-----+-----+-------------------+------+----+----+-------------------+------------+------------------- + 200 | 200 | .0000000 | 0 | 1 | 10 | .0000000 | 1401-03-01 | 1.0000000 + 100 | 100 | .0000000 | 0 | 1 | 20 | .0000000 | 1401-05-01 | 1.0000000 + 300 | 300 | .0000000 | 0 | 1 | 30 | .0000000 | 1401-05-02 | 1.0000000 + 400 | 400 | .0000000 | 0 | 1 | 50 | .0000000 | 1401-06-01 | 1.0000000 + 500 | 500 | .0000000 | 5 | 1 | 30 | .0000000 | 1401-06-01 | 1.0000000 + 200 | 200 | .0000000 | 0 | 3 | 40 | .0000000 | 1401-04-01 | 1.0000000 + 500 | 500 | .0000000 | 5 | 3 | 30 | .0000000 | 1401-06-01 | 2.0000000 + 600 | 600 | .0000000 | 5 | 3 | 30 | .0000000 | 1401-06-01 | 1.0000000 + 700 | 700 | .0000000 | 1 | 4 | 40 | .0000000 | 1401-06-01 | 1.0000000 + 800 | 800 | .0000000 | 1 | 4 | 40 | .0000000 | 1401-06-01 | 1.0000000 + 400 | 400 | .0000000 | 0 | 2 | 50 | .0000000 | 1401-06-01 | 2.0000000 + 100 | 100 | .0000000 | 2400 | 2 | 40 | .0000000 | 1401-01-01 | 1.0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and 3 preceding ); -- mvd 8,2->7; + cn | pn | cn | pn | cn | qty | to_char | vn +----+-----+----+-----+----+------+-------------------+---- + 1 | 200 | 1 | 200 | 1 | 1 | .0000000 | 10 + 1 | 100 | 1 | 100 | 1 | 1 | .0000000 | 20 + 1 | 300 | 1 | 300 | 1 | 1 | .0000000 | 30 + 1 | 500 | 1 | 500 | 1 | 12 | .0000000 | 30 + 3 | 500 | 3 | 500 | 3 | 12 | .0000000 | 30 + 3 | 600 | 3 | 600 | 3 | 12 | .0000000 | 30 + 2 | 100 | 2 | 100 | 2 | 1100 | .0000000 | 40 + 3 | 200 | 3 | 200 | 3 | 1 | .0000000 | 40 + 4 | 700 | 4 | 700 | 4 | 1 | .0000000 | 40 + 4 | 800 | 4 | 800 | 4 | 1 | .0000000 | 40 + 1 | 400 | 1 | 400 | 1 | 1 | .0000000 | 50 + 2 | 400 | 2 | 400 | 2 | 1 | .0000000 | 50 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn+ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and current row ); -- mvd 6,7,4,1->5; + pn | qty | pn | dt | to_char | prc | cn +-----+------+-----+------------+-------------------+------+---- + 100 | 1 | 100 | 1401-05-01 | .0000000 | 0 | 1 + 200 | 1 | 200 | 1401-04-01 | .0000000 | 0 | 3 + 300 | 1 | 300 | 1401-05-02 | .0000000 | 0 | 1 + 400 | 1 | 400 | 1401-06-01 | .0000000 | 0 | 1 + 500 | 12 | 500 | 1401-06-01 | .0000000 | 5 | 1 + 500 | 12 | 500 | 1401-06-01 | .0000000 | 5 | 3 + 800 | 1 | 800 | 1401-06-01 | .0000000 | 1 | 4 + 100 | 1100 | 100 | 1401-01-01 | .0000000 | 2400 | 2 + 200 | 1 | 200 | 1401-03-01 | .0000000 | 0 | 1 + 400 | 1 | 400 | 1401-06-01 | .0000000 | 0 | 2 + 600 | 12 | 600 | 1401-06-01 | .0000000 | 5 | 3 + 700 | 1 | 700 | 1401-06-01 | .0000000 | 1 | 4 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.prc*ow_sale.cn) following ); -- mvd 4,1,5,6->3; + cn | vn | to_char | prc | dt | pn +----+----+-------------------+------+------------+----- + 3 | 40 | .0000000 | 0 | 1401-04-01 | 200 + 1 | 20 | .0000000 | 0 | 1401-05-01 | 100 + 2 | 50 | .0000000 | 0 | 1401-06-01 | 400 + 2 | 40 | .0000000 | 2400 | 1401-01-01 | 100 + 1 | 10 | .0000000 | 0 | 1401-03-01 | 200 + 1 | 30 | .0000000 | 0 | 1401-05-02 | 300 + 1 | 50 | .0000000 | 0 | 1401-06-01 | 400 + 1 | 30 | .0000000 | 5 | 1401-06-01 | 500 + 3 | 30 | .0000000 | 5 | 1401-06-01 | 500 + 3 | 30 | .0000000 | 5 | 1401-06-01 | 600 + 4 | 40 | .0000000 | 1 | 1401-06-01 | 700 + 4 | 40 | .0000000 | 1 | 1401-06-01 | 800 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn-ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and 3 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and 3 following ), +win2 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.cn order by ow_sale.cn desc), +win3 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.cn desc); -- mvd 6,7,1->5; 6,7,2,3->8; 7,3->9; 6,7,1->10; + pn | vn | qty | qty | to_char | prc | cn | to_char | to_char | to_char +-----+----+------+------+-------------------+------+----+-------------------+-------------------+------------------- + 100 | 20 | 1 | 1 | .0000000 | 0 | 1 | 1.0000000 | 2.0000000 | 1.0000000 + 200 | 10 | 1 | 1 | .0000000 | 0 | 1 | 1.0000000 | 1.0000000 | 1.0000000 + 200 | 40 | 1 | 1 | .0000000 | 0 | 3 | 1.0000000 | 1.0000000 | 1.0000000 + 400 | 50 | 1 | 1 | .0000000 | 0 | 2 | 1.0000000 | 1.0000000 | 1.0000000 + 600 | 30 | 12 | 12 | .0000000 | 5 | 3 | 1.0000000 | 1.0000000 | 1.0000000 + 700 | 40 | 1 | 1 | .0000000 | 1 | 4 | 1.0000000 | 1.0000000 | 1.0000000 + 100 | 40 | 1100 | 1100 | .0000000 | 2400 | 2 | 1.0000000 | 1.0000000 | 1.0000000 + 300 | 30 | 1 | 1 | .0000000 | 0 | 1 | 1.0000000 | 3.0000000 | 1.0000000 + 400 | 50 | 1 | 1 | .0000000 | 0 | 1 | 1.0000000 | 4.0000000 | 1.0000000 + 500 | 30 | 12 | 12 | .0000000 | 5 | 1 | 1.0000000 | 1.0000000 | 1.0000000 + 500 | 30 | 12 | 12 | .0000000 | 5 | 3 | 1.0000000 | 2.0000000 | 1.0000000 + 800 | 40 | 1 | 1 | .0000000 | 1 | 4 | 1.0000000 | 2.0000000 | 1.0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc,ow_sale.vn desc rows between unbounded preceding and unbounded following ); -- mvd 6,7,8,1,2->5; + vn | pn | pn | vn | to_char | dt | cn | qty +----+-----+-----+----+-------------------+------------+----+------ + 10 | 200 | 200 | 10 | .0000000 | 1401-03-01 | 1 | 1 + 20 | 100 | 100 | 20 | .0000000 | 1401-05-01 | 1 | 1 + 30 | 600 | 600 | 30 | .0000000 | 1401-06-01 | 3 | 12 + 40 | 200 | 200 | 40 | .0000000 | 1401-04-01 | 3 | 1 + 40 | 800 | 800 | 40 | .0000000 | 1401-06-01 | 4 | 1 + 50 | 400 | 400 | 50 | .0000000 | 1401-06-01 | 2 | 1 + 30 | 300 | 300 | 30 | .0000000 | 1401-05-02 | 1 | 1 + 30 | 500 | 500 | 30 | .0000000 | 1401-06-01 | 1 | 12 + 30 | 500 | 500 | 30 | .0000000 | 1401-06-01 | 3 | 12 + 40 | 100 | 100 | 40 | .0000000 | 1401-01-01 | 2 | 1100 + 40 | 700 | 700 | 40 | .0000000 | 1401-06-01 | 4 | 1 + 50 | 400 | 400 | 50 | .0000000 | 1401-06-01 | 1 | 1 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.dt order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.dt order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.dt order by ow_sale.cn desc), +win3 as (partition by ow_sale.qty,ow_sale.prc order by ow_sale.pn asc); -- mvd 4,6->5; 4,6->7; 9,10,4,1->8; 9,10,4,1->11; 9,1,6->12; 9,10,4,1->13; + qty | vn | qty | cn | to_char | pn | to_char | to_char | prc | dt | to_char | to_char | to_char +------+----+------+----+-------------------+-----+-------------------+-------------------+------+------------+-------------------+-------------------+------------------- + 1 | 30 | 1 | 1 | .0000000 | 300 | .0000000 | 1.0000000 | 0 | 1401-05-02 | .0000000 | 3.0000000 | 1.0000000 + 1 | 50 | 1 | 1 | .0000000 | 400 | .0000000 | 1.0000000 | 0 | 1401-06-01 | .0000000 | 4.0000000 | 1.0000000 + 1 | 50 | 1 | 2 | .0000000 | 400 | .0000000 | 1.0000000 | 0 | 1401-06-01 | .0000000 | 4.0000000 | 1.0000000 + 12 | 30 | 12 | 1 | .0000000 | 500 | 5.0000000 | 1.0000000 | 5 | 1401-06-01 | .0000000 | 1.0000000 | 1.0000000 + 12 | 30 | 12 | 3 | .0000000 | 500 | 5.0000000 | 1.0000000 | 5 | 1401-06-01 | .0000000 | 1.0000000 | 1.0000000 + 1 | 40 | 1 | 4 | .0000000 | 800 | 1.0000000 | 1.0000000 | 1 | 1401-06-01 | .0000000 | 2.0000000 | 1.0000000 + 1100 | 40 | 1100 | 2 | .0000000 | 100 | 2400.0000000 | 1.0000000 | 2400 | 1401-01-01 | .0000000 | 1.0000000 | 1.0000000 + 1 | 20 | 1 | 1 | .0000000 | 100 | 2400.0000000 | 1.0000000 | 0 | 1401-05-01 | .0000000 | 1.0000000 | 1.0000000 + 1 | 10 | 1 | 1 | .0000000 | 200 | .0000000 | 1.0000000 | 0 | 1401-03-01 | .0000000 | 2.0000000 | 1.0000000 + 1 | 40 | 1 | 3 | .0000000 | 200 | .0000000 | 1.0000000 | 0 | 1401-04-01 | .0000000 | 2.0000000 | 1.0000000 + 12 | 30 | 12 | 3 | .0000000 | 600 | 5.0000000 | 1.0000000 | 5 | 1401-06-01 | .0000000 | 2.0000000 | 1.0000000 + 1 | 40 | 1 | 4 | .0000000 | 700 | 1.0000000 | 1.0000000 | 1 | 1401-06-01 | .0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn+ow_sale.prc),floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.cn)) OVER(partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc rows between 0 preceding and 4 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc rows between 0 preceding and 4 preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.prc order by ow_sale.pn asc); -- mvd 3,4->6; 3,4->7; 4->8; 4->9; 4->10; 12,2,1,4->11; + qty | cn | vn | pn | dt | to_char | to_char | to_char | to_char | to_char | to_char | prc +------+----+----+-----+------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+------ + 1100 | 2 | 40 | 100 | 1401-01-01 | .0000000 | .0000000 | .0000000 | 1.0000000 | 40.0000000 | 1.0000000 | 2400 + 1 | 1 | 10 | 200 | 1401-03-01 | .0000000 | .0000000 | 1.0000000 | 2.0000000 | 10.0000000 | 1.0000000 | 0 + 1 | 3 | 40 | 200 | 1401-04-01 | .0000000 | .0000000 | 1.0000000 | 3.0000000 | 10.0000000 | 1.0000000 | 0 + 1 | 1 | 20 | 100 | 1401-05-01 | .0000000 | .0000000 | 1.0000000 | 4.0000000 | 10.0000000 | 1.0000000 | 0 + 1 | 1 | 30 | 300 | 1401-05-02 | .0000000 | .0000000 | 1.0000000 | 5.0000000 | 10.0000000 | 1.0000000 | 0 + 1 | 1 | 50 | 400 | 1401-06-01 | .0000000 | .0000000 | 12.0000000 | 6.0000000 | 10.0000000 | 1.0000000 | 0 + 1 | 2 | 50 | 400 | 1401-06-01 | .0000000 | .0000000 | 12.0000000 | 7.0000000 | 10.0000000 | 1.0000000 | 0 + 12 | 1 | 30 | 500 | 1401-06-01 | .0000000 | .0000000 | .0000000 | 8.0000000 | 10.0000000 | 1.0000000 | 5 + 12 | 3 | 30 | 500 | 1401-06-01 | .0000000 | .0000000 | .0000000 | 9.0000000 | 10.0000000 | 1.0000000 | 5 + 12 | 3 | 30 | 600 | 1401-06-01 | .0000000 | .0000000 | .0000000 | 10.0000000 | 10.0000000 | 1.0000000 | 5 + 1 | 4 | 40 | 700 | 1401-06-01 | .0000000 | .0000000 | .0000000 | 11.0000000 | 10.0000000 | 1.0000000 | 1 + 1 | 4 | 40 | 800 | 1401-06-01 | .0000000 | .0000000 | .0000000 | 12.0000000 | 10.0000000 | 1.0000000 | 1 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc rows between 0 preceding and current row ); -- mvd 5,6,7,8->4; + dt | dt | dt | to_char | prc | cn | qty | pn +------------+------------+------------+-------------------+------+----+------+----- + 1401-06-01 | 1401-06-01 | 1401-06-01 | .0000000 | 0 | 2 | 1 | 400 + 1401-06-01 | 1401-06-01 | 1401-06-01 | .0000000 | 5 | 1 | 12 | 500 + 1401-06-01 | 1401-06-01 | 1401-06-01 | .0000000 | 5 | 3 | 12 | 500 + 1401-06-01 | 1401-06-01 | 1401-06-01 | .0000000 | 5 | 3 | 12 | 600 + 1401-03-01 | 1401-03-01 | 1401-03-01 | .0000000 | 0 | 1 | 1 | 200 + 1401-05-01 | 1401-05-01 | 1401-05-01 | .0000000 | 0 | 1 | 1 | 100 + 1401-05-02 | 1401-05-02 | 1401-05-02 | .0000000 | 0 | 1 | 1 | 300 + 1401-06-01 | 1401-06-01 | 1401-06-01 | .0000000 | 0 | 1 | 1 | 400 + 1401-04-01 | 1401-04-01 | 1401-04-01 | .0000000 | 0 | 3 | 1 | 200 + 1401-06-01 | 1401-06-01 | 1401-06-01 | .0000000 | 1 | 4 | 1 | 700 + 1401-06-01 | 1401-06-01 | 1401-06-01 | .0000000 | 1 | 4 | 1 | 800 + 1401-01-01 | 1401-01-01 | 1401-01-01 | .0000000 | 2400 | 2 | 1100 | 100 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.prc/ow_sale.cn) preceding and floor(ow_sale.pn) following ); -- mvd 2,3->6; + prc | cn | vn | qty | pn | to_char +------+----+----+------+-----+------------------- + 0 | 1 | 10 | 1 | 200 | .0000000 + 0 | 1 | 20 | 1 | 100 | .0000000 + 0 | 1 | 30 | 1 | 300 | 1.6666667 + 5 | 1 | 30 | 12 | 500 | 1.6666667 + 5 | 3 | 30 | 12 | 500 | .0000000 + 5 | 3 | 30 | 12 | 600 | .0000000 + 2400 | 2 | 40 | 1100 | 100 | -999.5000000 + 0 | 3 | 40 | 1 | 200 | .3333333 + 1 | 4 | 40 | 1 | 700 | .0000000 + 1 | 4 | 40 | 1 | 800 | .0000000 + 0 | 1 | 50 | 1 | 400 | .0000000 + 0 | 2 | 50 | 1 | 400 | .0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows between 3 preceding and floor(ow_sale.vn/ow_sale.qty) following ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.cn desc), +win4 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.pn asc); -- mvd 6,7,8->5; 2->9; 2->10; 1,8->11; 2->12; 1,8->13; + dt | cn | dt | prc | to_char | vn | qty | pn | to_char | to_char | to_char | to_char | to_char +------------+----+------------+------+-------------------+----+------+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 1401-06-01 | 4 | 1401-06-01 | 1 | 103516.6666667 | 40 | 1 | 700 | 12.0000000 | .1666667 | .0000000 | 12.0000000 | 1.0000000 + 1401-06-01 | 4 | 1401-06-01 | 1 | 103516.6666667 | 40 | 1 | 800 | 11.0000000 | .1666667 | .0000000 | 12.0000000 | 1.0000000 + 1401-04-01 | 3 | 1401-04-01 | 0 | 103516.6666667 | 40 | 1 | 200 | 8.0000000 | .4166667 | .0000000 | 10.0000000 | 1.0000000 + 1401-06-01 | 3 | 1401-06-01 | 5 | 3366.6666667 | 30 | 12 | 600 | 10.0000000 | .4166667 | .0000000 | 10.0000000 | 1.0000000 + 1401-06-01 | 3 | 1401-06-01 | 5 | 3366.6666667 | 30 | 12 | 500 | 9.0000000 | .4166667 | .0000000 | 10.0000000 | 1.0000000 + 1401-06-01 | 2 | 1401-06-01 | 0 | .0000000 | 50 | 1 | 400 | 7.0000000 | .5833333 | .0000000 | 7.0000000 | 1.0000000 + 1401-01-01 | 2 | 1401-01-01 | 2400 | .0000000 | 40 | 1100 | 100 | 6.0000000 | .5833333 | .0000000 | 7.0000000 | 1.0000000 + 1401-06-01 | 1 | 1401-06-01 | 0 | .0000000 | 50 | 1 | 400 | 1.0000000 | 1.0000000 | .0000000 | 5.0000000 | 1.0000000 + 1401-06-01 | 1 | 1401-06-01 | 5 | 3366.6666667 | 30 | 12 | 500 | 5.0000000 | 1.0000000 | .0000000 | 5.0000000 | 1.0000000 + 1401-03-01 | 1 | 1401-03-01 | 0 | .0000000 | 10 | 1 | 200 | 4.0000000 | 1.0000000 | .0000000 | 5.0000000 | 1.0000000 + 1401-05-02 | 1 | 1401-05-02 | 0 | .0000000 | 30 | 1 | 300 | 3.0000000 | 1.0000000 | .0000000 | 5.0000000 | 1.0000000 + 1401-05-01 | 1 | 1401-05-01 | 0 | .0000000 | 20 | 1 | 100 | 2.0000000 | 1.0000000 | .0000000 | 5.0000000 | 1.0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.pn desc rows between 0 preceding and unbounded following ); -- mvd 4,5,6,1,7->3; + vn | vn | to_char | prc | cn | dt | pn +----+----+-------------------+------+----+------------+----- + 40 | 40 | .0000000 | 0 | 3 | 1401-04-01 | 200 + 20 | 20 | .0000000 | 0 | 1 | 1401-05-01 | 100 + 50 | 50 | .0000000 | 0 | 2 | 1401-06-01 | 400 + 40 | 40 | .0000000 | 2400 | 2 | 1401-01-01 | 100 + 10 | 10 | .0000000 | 0 | 1 | 1401-03-01 | 200 + 30 | 30 | .0000000 | 0 | 1 | 1401-05-02 | 300 + 50 | 50 | .0000000 | 0 | 1 | 1401-06-01 | 400 + 30 | 30 | .0000000 | 5 | 1 | 1401-06-01 | 500 + 30 | 30 | .0000000 | 5 | 3 | 1401-06-01 | 500 + 30 | 30 | .0000000 | 5 | 3 | 1401-06-01 | 600 + 40 | 40 | .0000000 | 1 | 4 | 1401-06-01 | 700 + 40 | 40 | .0000000 | 1 | 4 | 1401-06-01 | 800 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between 2 preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between 2 preceding and unbounded following ), +win2 as (order by ow_sale.pn desc); -- mvd 3,4,5->2; 5->6; 3,4,5->7; + prc | to_char | cn | vn | pn | to_char | to_char +------+-------------------+----+----+-----+-------------------+------------------- + 1 | .0000000 | 4 | 40 | 800 | 1.0000000 | 40.0000000 + 1 | .0000000 | 4 | 40 | 700 | 2.0000000 | 40.0000000 + 5 | .0000000 | 3 | 30 | 600 | 3.0000000 | 360.0000000 + 5 | .0000000 | 1 | 30 | 500 | 4.0000000 | 360.0000000 + 5 | .0000000 | 3 | 30 | 500 | 4.0000000 | 360.0000000 + 0 | .0000000 | 1 | 50 | 400 | 6.0000000 | 50.0000000 + 0 | .0000000 | 2 | 50 | 400 | 6.0000000 | 50.0000000 + 0 | .0000000 | 1 | 30 | 300 | 8.0000000 | 30.0000000 + 0 | .0000000 | 1 | 10 | 200 | 9.0000000 | 10.0000000 + 0 | .0000000 | 3 | 40 | 200 | 9.0000000 | 40.0000000 + 0 | .0000000 | 1 | 20 | 100 | 11.0000000 | 20.0000000 + 2400 | .0000000 | 2 | 40 | 100 | 11.0000000 | 44000.0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc rows between current row and current row ); -- mvd 8,3,1->7; + pn | prc | vn | vn | qty | vn | to_char | cn +-----+------+----+----+------+----+-------------------+---- + 200 | 0 | 10 | 10 | 1 | 10 | .0000000 | 1 + 100 | 0 | 20 | 20 | 1 | 20 | .0000000 | 1 + 300 | 0 | 30 | 30 | 1 | 30 | .0000000 | 1 + 500 | 5 | 30 | 30 | 12 | 30 | .0000000 | 1 + 500 | 5 | 30 | 30 | 12 | 30 | .0000000 | 3 + 600 | 5 | 30 | 30 | 12 | 30 | .0000000 | 3 + 100 | 2400 | 40 | 40 | 1100 | 40 | .0000000 | 2 + 200 | 0 | 40 | 40 | 1 | 40 | .0000000 | 3 + 700 | 1 | 40 | 40 | 1 | 40 | .0000000 | 4 + 800 | 1 | 40 | 40 | 1 | 40 | .0000000 | 4 + 400 | 0 | 50 | 50 | 1 | 50 | .0000000 | 1 + 400 | 0 | 50 | 50 | 1 | 50 | .0000000 | 2 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(partition by ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.pn desc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.pn desc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.pn desc rows between current row and current row ), +win2 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.pn desc); -- mvd 7,1,4,2->6; 7,1,4,2->8; 7,1,4,2->9; 3,2->10; + vn | pn | prc | qty | vn | to_char | cn | to_char | to_char | to_char +----+-----+------+------+----+-------------------+----+-------------------+-------------------+------------------- + 20 | 100 | 0 | 1 | 20 | .0000000 | 1 | 1.0000000 | 20.0000000 | 20.0000000 + 10 | 200 | 0 | 1 | 10 | .0000000 | 1 | 1.0000000 | 10.0000000 | 10.0000000 + 40 | 200 | 0 | 1 | 40 | .0000000 | 3 | 1.0000000 | 40.0000000 | 40.0000000 + 30 | 500 | 5 | 12 | 30 | .0000000 | 1 | 12.0000000 | 30.0000000 | .0000000 + 30 | 500 | 5 | 12 | 30 | .0000000 | 3 | 12.0000000 | 30.0000000 | .0000000 + 40 | 700 | 1 | 1 | 40 | .0000000 | 4 | 1.0000000 | 40.0000000 | .0000000 + 40 | 100 | 2400 | 1100 | 40 | .0000000 | 2 | 1100.0000000 | 40.0000000 | .0000000 + 30 | 300 | 0 | 1 | 30 | .0000000 | 1 | 1.0000000 | 30.0000000 | 30.0000000 + 50 | 400 | 0 | 1 | 50 | .0000000 | 1 | 1.0000000 | 50.0000000 | 50.0000000 + 50 | 400 | 0 | 1 | 50 | .0000000 | 2 | 1.0000000 | 50.0000000 | 50.0000000 + 30 | 600 | 5 | 12 | 30 | .0000000 | 3 | 12.0000000 | 30.0000000 | .0000000 + 40 | 800 | 1 | 1 | 40 | .0000000 | 4 | 1.0000000 | 40.0000000 | 40.0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn-ow_sale.pn),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc rows between current row and floor(ow_sale.pn/ow_sale.cn) following ); -- mvd 6,7->5; + qty | qty | pn | pn | to_char | dt | vn +------+------+-----+-----+-------------------+------------+---- + 1 | 1 | 200 | 200 | .0000000 | 1401-03-01 | 10 + 1 | 1 | 300 | 300 | .0000000 | 1401-05-02 | 30 + 12 | 12 | 500 | 500 | -3332.0000000 | 1401-06-01 | 30 + 12 | 12 | 500 | 500 | -5000.0000000 | 1401-06-01 | 30 + 12 | 12 | 600 | 600 | .0000000 | 1401-06-01 | 30 + 1 | 1 | 700 | 700 | -5000.0000000 | 1401-06-01 | 40 + 1 | 1 | 800 | 800 | .0000000 | 1401-06-01 | 40 + 1 | 1 | 400 | 400 | .5000000 | 1401-06-01 | 50 + 1 | 1 | 400 | 400 | .0000000 | 1401-06-01 | 50 + 1100 | 1100 | 100 | 100 | .0000000 | 1401-01-01 | 40 + 1 | 1 | 200 | 200 | .0000000 | 1401-04-01 | 40 + 1 | 1 | 100 | 100 | .0000000 | 1401-05-01 | 20 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn/ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc-ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc rows between current row and floor(ow_sale.qty+ow_sale.prc) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc rows between current row and floor(ow_sale.qty+ow_sale.prc) following ), +win2 as (order by ow_sale.cn desc); -- mvd 3,4,5->2; 3,4,5->6; 3,4,5->7; 3->8; 3->9; + qty | to_char | cn | vn | pn | to_char | to_char | to_char | to_char +------+-------------------+----+----+-----+-------------------+-------------------+-------------------+------------------- + 1 | .0000000 | 4 | 40 | 800 | -799.0000000 | 1.0000000 | 1.0000000 | .1666667 + 1 | .0000000 | 4 | 40 | 700 | -699.0000000 | 1.0000000 | 1.0000000 | .1666667 + 12 | .0000000 | 3 | 30 | 500 | -495.0000000 | 1.0000000 | 3.0000000 | .4166667 + 1 | .0000000 | 3 | 40 | 200 | -200.0000000 | 1.0000000 | 3.0000000 | .4166667 + 12 | .0000000 | 3 | 30 | 600 | -595.0000000 | 1.0000000 | 3.0000000 | .4166667 + 1 | .0000000 | 2 | 50 | 400 | -400.0000000 | 1.0000000 | 6.0000000 | .5833333 + 1100 | .0000000 | 2 | 40 | 100 | 2300.0000000 | 1.0000000 | 6.0000000 | .5833333 + 1 | .0000000 | 1 | 30 | 300 | -300.0000000 | 1.0000000 | 8.0000000 | 1.0000000 + 1 | .0000000 | 1 | 50 | 400 | -400.0000000 | 1.0000000 | 8.0000000 | 1.0000000 + 12 | .0000000 | 1 | 30 | 500 | -495.0000000 | 1.0000000 | 8.0000000 | 1.0000000 + 1 | .0000000 | 1 | 20 | 100 | -100.0000000 | 1.0000000 | 8.0000000 | 1.0000000 + 1 | .0000000 | 1 | 10 | 200 | -200.0000000 | 1.0000000 | 8.0000000 | 1.0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc rows between current row and unbounded following ); -- mvd 3,4,1->2; + pn | to_char | prc | vn +-----+-------------------+------+---- + 300 | .0000000 | 0 | 30 + 400 | .0000000 | 0 | 50 + 400 | .0000000 | 0 | 50 + 700 | .0000000 | 1 | 40 + 500 | .0000000 | 5 | 30 + 500 | .0000000 | 5 | 30 + 100 | .0000000 | 0 | 20 + 200 | .0000000 | 0 | 10 + 200 | .0000000 | 0 | 40 + 800 | .0000000 | 1 | 40 + 600 | .0000000 | 5 | 30 + 100 | .0000000 | 2400 | 40 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc*ow_sale.cn) as int),cast (floor(ow_sale.pn*ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 6,7,3,2->5; 3->8; 3->9; + vn | qty | cn | pn | to_char | prc | dt | to_char | to_char +----+------+----+-----+-------------------+------+------------+-------------------+------------------- + 40 | 1100 | 2 | 100 | .0000000 | 2400 | 1401-01-01 | .0000000 | .0833333 + 10 | 1 | 1 | 200 | .0000000 | 0 | 1401-03-01 | .0000000 | .1666667 + 40 | 1 | 3 | 200 | .0000000 | 0 | 1401-04-01 | .0000000 | .2500000 + 20 | 1 | 1 | 100 | .0000000 | 0 | 1401-05-01 | .0000000 | .3333333 + 30 | 1 | 1 | 300 | .0000000 | 0 | 1401-05-02 | .0000000 | .4166667 + 50 | 1 | 1 | 400 | .0000000 | 0 | 1401-06-01 | .0000000 | .5000000 + 50 | 1 | 2 | 400 | .0000000 | 0 | 1401-06-01 | .0000000 | .5833333 + 30 | 12 | 1 | 500 | .0000000 | 5 | 1401-06-01 | .0000000 | .6666667 + 30 | 12 | 3 | 500 | 5000.0000000 | 5 | 1401-06-01 | .0000000 | .7500000 + 30 | 12 | 3 | 600 | .0000000 | 5 | 1401-06-01 | .0000000 | .8333333 + 40 | 1 | 4 | 700 | 5000.0000000 | 1 | 1401-06-01 | .0000000 | .9166667 + 40 | 1 | 4 | 800 | .0000000 | 1 | 1401-06-01 | .0000000 | 1.0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows between floor(ow_sale.pn) following and 6 following ); -- mvd 1,5,6->4; + prc | qty | pn | to_char | cn | vn +------+------+-----+-------------------+----+---- + 0 | 1 | 200 | .0000000 | 1 | 10 + 0 | 1 | 100 | .0000000 | 1 | 20 + 0 | 1 | 300 | .0000000 | 1 | 30 + 0 | 1 | 400 | .0000000 | 1 | 50 + 0 | 1 | 200 | .0000000 | 3 | 40 + 1 | 1 | 700 | .0000000 | 4 | 40 + 1 | 1 | 800 | .0000000 | 4 | 40 + 5 | 12 | 500 | .0000000 | 1 | 30 + 5 | 12 | 500 | .0000000 | 3 | 30 + 5 | 12 | 600 | .0000000 | 3 | 30 + 0 | 1 | 400 | .0000000 | 2 | 50 + 2400 | 1100 | 100 | .0000000 | 2 | 40 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.qty) following and 3 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.qty) following and 3 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.qty) following and 3 following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.cn asc); -- mvd 5,6,3->4; 6->7; 6->8; 5,6,3->9; 5,6,3->10; 6->11; + qty | qty | pn | to_char | prc | cn | to_char | to_char | to_char | to_char | to_char +------+------+-----+-------------------+------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | 1 | 700 | .0000000 | 1 | 4 | 1.0000000 | 3.0000000 | .0000000 | .0000000 | .9090909 + 1 | 1 | 800 | .0000000 | 1 | 4 | 1.0000000 | 3.0000000 | .0000000 | .0000000 | .9090909 + 12 | 12 | 500 | .0000000 | 5 | 3 | 3.0000000 | -9.0000000 | .0000000 | .0000000 | .6363636 + 12 | 12 | 600 | .0000000 | 5 | 3 | 3.0000000 | -9.0000000 | .0000000 | .0000000 | .6363636 + 1 | 1 | 200 | .0000000 | 0 | 3 | 3.0000000 | -9.0000000 | .0000000 | .0000000 | .6363636 + 1 | 1 | 400 | .0000000 | 0 | 2 | 6.0000000 | -1098.0000000 | .0000000 | .0000000 | .4545455 + 1100 | 1100 | 100 | .0000000 | 2400 | 2 | 6.0000000 | -1098.0000000 | .0000000 | .0000000 | .4545455 + 1 | 1 | 300 | .0000000 | 0 | 1 | 8.0000000 | -1098.0000000 | .0000000 | .0000000 | .0000000 + 1 | 1 | 200 | .0000000 | 0 | 1 | 8.0000000 | -1098.0000000 | 1.0000000 | 1.0000000 | .0000000 + 1 | 1 | 100 | .0000000 | 0 | 1 | 8.0000000 | -1098.0000000 | .0000000 | .0000000 | .0000000 + 12 | 12 | 500 | .0000000 | 5 | 1 | 8.0000000 | -1098.0000000 | .0000000 | .0000000 | .0000000 + 1 | 1 | 400 | .0000000 | 0 | 1 | 8.0000000 | -1098.0000000 | 1.0000000 | 1.0000000 | .0000000 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc rows between 6 following and unbounded following ); -- mvd 7,3,1->6; + pn | vn | dt | vn | prc | to_char | cn +-----+----+------------+----+------+-------------------+---- + 200 | 40 | 1401-04-01 | 40 | 0 | .0000000 | 3 + 100 | 20 | 1401-05-01 | 20 | 0 | .0000000 | 1 + 400 | 50 | 1401-06-01 | 50 | 0 | .0000000 | 2 + 700 | 40 | 1401-06-01 | 40 | 1 | .0000000 | 4 + 800 | 40 | 1401-06-01 | 40 | 1 | .0000000 | 4 + 100 | 40 | 1401-01-01 | 40 | 2400 | .0000000 | 2 + 200 | 10 | 1401-03-01 | 10 | 0 | .0000000 | 1 + 300 | 30 | 1401-05-02 | 30 | 0 | .0000000 | 1 + 400 | 50 | 1401-06-01 | 50 | 0 | .0000000 | 1 + 500 | 30 | 1401-06-01 | 30 | 5 | .0000000 | 1 + 500 | 30 | 1401-06-01 | 30 | 5 | .0000000 | 3 + 600 | 30 | 1401-06-01 | 30 | 5 | .0000000 | 3 +(12 rows) + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty/ow_sale.pn)) OVER(partition by ow_sale.prc,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc rows between 3 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn-ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc rows between 3 following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.cn asc); -- mvd 3,1->4; 3,1->5; 7->6; 7->8; 10,7,11->9; 3,1->12; + vn | qty | prc | to_char | to_char | to_char | cn | to_char | to_char | dt | pn | to_char +----+------+------+-------------------+-------------------+-------------------+----+-------------------+-------------------+------------+-----+------------------- + 40 | 1100 | 2400 | .0000000 | .0000000 | .0000000 | 2 | 1.0000000 | 1.0000000 | 1401-01-01 | 100 | .0000000 + 10 | 1 | 0 | .0000000 | .0000000 | 760.0000000 | 1 | 2.0000000 | 1.0000000 | 1401-03-01 | 200 | .0000000 + 40 | 1 | 0 | .0000000 | .0000000 | .0000000 | 3 | 3.0000000 | 1.0000000 | 1401-04-01 | 200 | .0000000 + 20 | 1 | 0 | .0000000 | .0000000 | .0000000 | 1 | 4.0000000 | 1.0000000 | 1401-05-01 | 100 | .0000000 + 30 | 1 | 0 | .0000000 | .0000000 | .0000000 | 1 | 5.0000000 | 1.0000000 | 1401-05-02 | 300 | .0000000 + 50 | 1 | 0 | .0000000 | .0000000 | .0000000 | 1 | 6.0000000 | 1.0000000 | 1401-06-01 | 400 | .0000000 + 50 | 1 | 0 | .0000000 | .0000000 | .0000000 | 2 | 7.0000000 | 1.0000000 | 1401-06-01 | 400 | .0000000 + 30 | 12 | 5 | .0000000 | .0000000 | .0000000 | 1 | 8.0000000 | 1.0000000 | 1401-06-01 | 500 | .0000000 + 30 | 12 | 5 | .0000000 | .0000000 | .0000000 | 3 | 9.0000000 | 1.0000000 | 1401-06-01 | 500 | .0000000 + 30 | 12 | 5 | .0000000 | .0000000 | .0000000 | 3 | 10.0000000 | 1.0000000 | 1401-06-01 | 600 | .0000000 + 40 | 1 | 1 | .0000000 | .0000000 | .0000000 | 4 | 11.0000000 | 1.0000000 | 1401-06-01 | 700 | .0000000 + 40 | 1 | 1 | .0000000 | .0000000 | .0000000 | 4 | 12.0000000 | 1.0000000 | 1401-06-01 | 800 | .0000000 +(12 rows) + +-- REGR_AVGX() function with NULL OVER() clause -- +SELECT ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn+ow_sale.cn),floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (); -- mvd 6->6; + dt | prc | pn | cn | pn | to_char +------------+------+-----+----+-----+------------------- + 1401-05-02 | 0 | 300 | 1 | 300 | 3780.0000000 + 1401-06-01 | 0 | 400 | 1 | 400 | 3780.0000000 + 1401-06-01 | 5 | 500 | 1 | 500 | 3780.0000000 + 1401-06-01 | 5 | 500 | 3 | 500 | 3780.0000000 + 1401-01-01 | 2400 | 100 | 2 | 100 | 3780.0000000 + 1401-06-01 | 1 | 700 | 4 | 700 | 3780.0000000 + 1401-03-01 | 0 | 200 | 1 | 200 | 3780.0000000 + 1401-05-01 | 0 | 100 | 1 | 100 | 3780.0000000 + 1401-04-01 | 0 | 200 | 3 | 200 | 3780.0000000 + 1401-06-01 | 5 | 600 | 3 | 600 | 3780.0000000 + 1401-06-01 | 0 | 400 | 2 | 400 | 3780.0000000 + 1401-06-01 | 1 | 800 | 4 | 800 | 3780.0000000 +(12 rows) + +-- REGR_AVGX() function with NULL OVER() clause in combination with other window functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn*ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.cn order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.cn order by ow_sale.pn desc); -- mvd 7->7; 1->8; 2,4->9; 2,4->10; + vn | cn | dt | pn | pn | prc | to_char | to_char | to_char | to_char +----+----+------------+-----+-----+------+-------------------+-------------------+-------------------+------------------- + 50 | 1 | 1401-06-01 | 400 | 400 | 0 | 400.0000000 | 1.0000000 | .2500000 | 2.0000000 + 50 | 2 | 1401-06-01 | 400 | 400 | 0 | 400.0000000 | 1.0000000 | .0000000 | 1.0000000 + 40 | 2 | 1401-01-01 | 100 | 100 | 2400 | 400.0000000 | 3.0000000 | 1.0000000 | 2.0000000 + 40 | 4 | 1401-06-01 | 800 | 800 | 1 | 400.0000000 | 3.0000000 | .0000000 | 1.0000000 + 40 | 4 | 1401-06-01 | 700 | 700 | 1 | 400.0000000 | 3.0000000 | 1.0000000 | 2.0000000 + 40 | 3 | 1401-04-01 | 200 | 200 | 0 | 400.0000000 | 3.0000000 | 1.0000000 | 3.0000000 + 30 | 1 | 1401-06-01 | 500 | 500 | 5 | 400.0000000 | 7.0000000 | .0000000 | 1.0000000 + 30 | 1 | 1401-05-02 | 300 | 300 | 0 | 400.0000000 | 7.0000000 | .5000000 | 3.0000000 + 30 | 3 | 1401-06-01 | 600 | 600 | 5 | 400.0000000 | 7.0000000 | .0000000 | 1.0000000 + 30 | 3 | 1401-06-01 | 500 | 500 | 5 | 400.0000000 | 7.0000000 | .5000000 | 2.0000000 + 20 | 1 | 1401-05-01 | 100 | 100 | 0 | 400.0000000 | 11.0000000 | 1.0000000 | 5.0000000 + 10 | 1 | 1401-03-01 | 200 | 200 | 0 | 400.0000000 | 12.0000000 | .7500000 | 4.0000000 +(12 rows) + +-- REGR_AVGX() function with OVER() clause having ONLY PARTITION BY -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.prc); -- mvd 8,9,4->7; + qty | qty | pn | cn | vn | cn | to_char | prc | dt +------+------+-----+----+----+----+-------------------+------+------------ + 1 | 1 | 100 | 1 | 20 | 1 | -99.0000000 | 0 | 1401-05-01 + 1 | 1 | 400 | 2 | 50 | 2 | -398.0000000 | 0 | 1401-06-01 + 1 | 1 | 200 | 3 | 40 | 3 | -197.0000000 | 0 | 1401-04-01 + 1 | 1 | 200 | 1 | 10 | 1 | -199.0000000 | 0 | 1401-03-01 + 1 | 1 | 300 | 1 | 30 | 1 | -299.0000000 | 0 | 1401-05-02 + 1 | 1 | 400 | 1 | 50 | 1 | -399.0000000 | 0 | 1401-06-01 + 12 | 12 | 500 | 1 | 30 | 1 | -499.0000000 | 5 | 1401-06-01 + 1100 | 1100 | 100 | 2 | 40 | 2 | -98.0000000 | 2400 | 1401-01-01 + 12 | 12 | 500 | 3 | 30 | 3 | -547.0000000 | 5 | 1401-06-01 + 12 | 12 | 600 | 3 | 30 | 3 | -547.0000000 | 5 | 1401-06-01 + 1 | 1 | 800 | 4 | 40 | 4 | -746.0000000 | 1 | 1401-06-01 + 1 | 1 | 700 | 4 | 40 | 4 | -746.0000000 | 1 | 1401-06-01 +(12 rows) + +-- REGR_AVGX() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- +SELECT ow_sale.dt,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn*ow_sale.vn),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn), +win2 as (order by ow_sale.cn desc); -- mvd 5->4; 5->6; 8->7; + dt | prc | dt | to_char | pn | to_char | to_char | cn +------------+------+------------+-------------------+-----+-------------------+-------------------+---- + 1401-06-01 | 1 | 1401-06-01 | .0000000 | 800 | 1600.0000000 | .0000000 | 4 + 1401-06-01 | 1 | 1401-06-01 | .0000000 | 700 | 1400.0000000 | .0000000 | 4 + 1401-04-01 | 0 | 1401-04-01 | .0000000 | 200 | 400.0000000 | .1818182 | 3 + 1401-06-01 | 5 | 1401-06-01 | .0000000 | 600 | 1200.0000000 | .1818182 | 3 + 1401-06-01 | 5 | 1401-06-01 | .0000000 | 500 | 1000.0000000 | .1818182 | 3 + 1401-06-01 | 0 | 1401-06-01 | .0000000 | 400 | 800.0000000 | .4545455 | 2 + 1401-01-01 | 2400 | 1401-01-01 | .0000000 | 100 | 200.0000000 | .4545455 | 2 + 1401-05-01 | 0 | 1401-05-01 | .0000000 | 100 | 200.0000000 | .6363636 | 1 + 1401-03-01 | 0 | 1401-03-01 | .0000000 | 200 | 400.0000000 | .6363636 | 1 + 1401-05-02 | 0 | 1401-05-02 | .0000000 | 300 | 600.0000000 | .6363636 | 1 + 1401-06-01 | 0 | 1401-06-01 | .0000000 | 400 | 800.0000000 | .6363636 | 1 + 1401-06-01 | 5 | 1401-06-01 | .0000000 | 500 | 1000.0000000 | .6363636 | 1 +(12 rows) + +-- REGR_AVGX() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc,ow_sale.pn asc,ow_sale.vn desc); -- mvd 2,1->3; + pn | vn | to_char +-----+----+------------------- + 200 | 10 | 199.0000000 + 100 | 20 | 149.0000000 + 300 | 30 | 199.0000000 + 500 | 30 | 314.6000000 + 500 | 30 | 314.6000000 + 600 | 30 | 360.1666667 + 100 | 40 | 165.8571429 + 200 | 40 | 170.0000000 + 700 | 40 | 228.7777778 + 800 | 40 | 285.8000000 + 400 | 50 | 304.6666667 + 400 | 50 | 304.6666667 +(12 rows) + +-- REGR_AVGX() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc-ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn/ow_sale.qty)) OVER(order by ow_sale.pn desc,ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc,ow_sale.pn asc); -- mvd 3->4; 3->5; 3->6; 3->7; + cn | vn | pn | to_char | to_char | to_char | to_char +----+----+-----+-------------------+-------------------+-------------------+------------------- + 4 | 40 | 800 | 1.0000000 | 1.0000000 | .0833333 | 1.0000000 + 4 | 40 | 700 | 1.0000000 | 2.0000000 | .1666667 | 2.0000000 + 3 | 30 | 600 | 2.3333333 | 3.0000000 | .2500000 | 3.0000000 + 1 | 30 | 500 | 3.4000000 | 5.0000000 | .4166667 | 4.0000000 + 3 | 30 | 500 | 3.4000000 | 5.0000000 | .4166667 | 4.0000000 + 1 | 50 | 400 | 2.4285714 | 7.0000000 | .5833333 | 6.0000000 + 2 | 50 | 400 | 2.4285714 | 7.0000000 | .5833333 | 6.0000000 + 1 | 30 | 300 | 2.1250000 | 8.0000000 | .6666667 | 8.0000000 + 1 | 10 | 200 | 1.7000000 | 10.0000000 | .8333333 | 9.0000000 + 3 | 40 | 200 | 1.7000000 | 10.0000000 | .8333333 | 9.0000000 + 1 | 20 | 100 | 201.4166667 | 12.0000000 | 1.0000000 | 11.0000000 + 2 | 40 | 100 | 201.4166667 | 12.0000000 | 1.0000000 | 11.0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc*ow_sale.prc),floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range unbounded preceding ); -- mvd 6->5; + cn | qty | pn | pn | to_char | vn +----+------+-----+-----+-------------------+---- + 2 | 1 | 400 | 400 | .5000000 | 50 + 1 | 1 | 400 | 400 | .5000000 | 50 + 2 | 1100 | 100 | 100 | -181.5000000 | 40 + 4 | 1 | 700 | 700 | -181.5000000 | 40 + 3 | 1 | 200 | 200 | -181.5000000 | 40 + 4 | 1 | 800 | 800 | -181.5000000 | 40 + 3 | 12 | 600 | 600 | -111.8000000 | 30 + 1 | 1 | 300 | 300 | -111.8000000 | 30 + 1 | 12 | 500 | 500 | -111.8000000 | 30 + 3 | 12 | 500 | 500 | -111.8000000 | 30 + 1 | 1 | 100 | 100 | -101.6363636 | 20 + 1 | 1 | 200 | 200 | -93.1666667 | 10 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc*ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.cn)) OVER(order by ow_sale.vn desc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc*ow_sale.vn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range unbounded preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.cn order by ow_sale.pn asc); -- mvd 1->5; 1->6; 1->7; 9->8; 2,9->10; 2,9->11; + vn | cn | vn | qty | to_char | to_char | to_char | to_char | pn | to_char | to_char +----+----+----+------+-------------------+-------------------+-------------------+-------------------+-----+-------------------+------------------- + 40 | 4 | 40 | 1 | 43.3333333 | 16.0000000 | 200.0000000 | .0000000 | 800 | 2.0000000 | 40.0000000 + 40 | 4 | 40 | 1 | 43.3333333 | 16.0000000 | 200.0000000 | .0909091 | 700 | 1.0000000 | 40.0000000 + 30 | 3 | 30 | 12 | 38.0000000 | 16.0000000 | 200.0000000 | .1818182 | 600 | 3.0000000 | 150.0000000 + 30 | 1 | 30 | 12 | 38.0000000 | 16.0000000 | 200.0000000 | .2727273 | 500 | 5.0000000 | 150.0000000 + 30 | 3 | 30 | 12 | 38.0000000 | 16.0000000 | 200.0000000 | .2727273 | 500 | 2.0000000 | 150.0000000 + 50 | 1 | 50 | 1 | 50.0000000 | 4.0000000 | 400.0000000 | .4545455 | 400 | 4.0000000 | .0000000 + 50 | 2 | 50 | 1 | 50.0000000 | 4.0000000 | 400.0000000 | .4545455 | 400 | 2.0000000 | 96000.0000000 + 30 | 1 | 30 | 1 | 38.0000000 | 16.0000000 | 200.0000000 | .6363636 | 300 | 3.0000000 | .0000000 + 40 | 3 | 40 | 1 | 43.3333333 | 16.0000000 | 200.0000000 | .7272727 | 200 | 1.0000000 | .0000000 + 10 | 1 | 10 | 1 | 34.1666667 | 16.0000000 | 100.0000000 | .7272727 | 200 | 2.0000000 | .0000000 + 40 | 2 | 40 | 1100 | 43.3333333 | 16.0000000 | 200.0000000 | .9090909 | 100 | 1.0000000 | 96000.0000000 + 20 | 1 | 20 | 1 | 36.3636364 | 16.0000000 | 100.0000000 | .9090909 | 100 | 1.0000000 | .0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn*ow_sale.cn),floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range floor(ow_sale.vn) preceding ); -- mvd 8->7; + cn | qty | cn | qty | cn | cn | to_char | pn +----+------+----+------+----+----+-------------------+----- + 4 | 1 | 4 | 1 | 4 | 4 | 3200.0000000 | 800 + 4 | 1 | 4 | 1 | 4 | 4 | 2800.0000000 | 700 + 3 | 12 | 3 | 12 | 3 | 3 | 1800.0000000 | 600 + 1 | 12 | 1 | 12 | 1 | 1 | 1000.0000000 | 500 + 3 | 12 | 3 | 12 | 3 | 3 | 1000.0000000 | 500 + 1 | 1 | 1 | 1 | 1 | 1 | 600.0000000 | 400 + 2 | 1 | 2 | 1 | 2 | 2 | 600.0000000 | 400 + 1 | 1 | 1 | 1 | 1 | 1 | 300.0000000 | 300 + 1 | 1 | 1 | 1 | 1 | 1 | 400.0000000 | 200 + 3 | 1 | 3 | 1 | 3 | 3 | 400.0000000 | 200 + 1 | 1 | 1 | 1 | 1 | 1 | 150.0000000 | 100 + 2 | 1100 | 2 | 1100 | 2 | 2 | 150.0000000 | 100 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range 4 preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 1->2; 4->3; 4->5; + vn | to_char | to_char | cn | to_char +----+-------------------+-------------------+----+------------------- + 40 | 600.5000000 | .0000000 | 2 | 1140.0000000 + 10 | .0000000 | 40.0000000 | 1 | 11.0000000 + 40 | 600.5000000 | .0000000 | 3 | 11.0000000 + 20 | .0000000 | 40.0000000 | 1 | 11.0000000 + 30 | 3.7500000 | 20.0000000 | 1 | 11.0000000 + 50 | .0000000 | 30.0000000 | 1 | 11.0000000 + 50 | .0000000 | 30.0000000 | 2 | 11.0000000 + 30 | 3.7500000 | 50.0000000 | 1 | 11.0000000 + 30 | 3.7500000 | 50.0000000 | 3 | 11.0000000 + 30 | 3.7500000 | 50.0000000 | 3 | 11.0000000 + 40 | 600.5000000 | 50.0000000 | 4 | 11.0000000 + 40 | 600.5000000 | 30.0000000 | 4 | 11.0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ); -- mvd 5->4; + vn | dt | dt | to_char | cn +----+------------+------------+-------------------+---- + 40 | 1401-06-01 | 1401-06-01 | 1.0000000 | 4 + 40 | 1401-06-01 | 1401-06-01 | 1.0000000 | 4 + 30 | 1401-06-01 | 1401-06-01 | 8.3333333 | 3 + 30 | 1401-06-01 | 1401-06-01 | 8.3333333 | 3 + 40 | 1401-04-01 | 1401-04-01 | 8.3333333 | 3 + 50 | 1401-06-01 | 1401-06-01 | 550.5000000 | 2 + 40 | 1401-01-01 | 1401-01-01 | 550.5000000 | 2 + 30 | 1401-05-02 | 1401-05-02 | 3.2000000 | 1 + 30 | 1401-06-01 | 1401-06-01 | 3.2000000 | 1 + 50 | 1401-06-01 | 1401-06-01 | 3.2000000 | 1 + 10 | 1401-03-01 | 1401-03-01 | 3.2000000 | 1 + 20 | 1401-05-01 | 1401-05-01 | 3.2000000 | 1 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn),floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range current row ); -- mvd 3->6; 3->7; + dt | dt | cn | cn | vn | to_char | to_char +------------+------------+----+----+----+-------------------+------------------- + 1401-03-01 | 1401-03-01 | 1 | 1 | 10 | -2.2000000 | 1.0000000 + 1401-05-01 | 1401-05-01 | 1 | 1 | 20 | -2.2000000 | 1.0000000 + 1401-05-02 | 1401-05-02 | 1 | 1 | 30 | -2.2000000 | 1.0000000 + 1401-06-01 | 1401-06-01 | 1 | 1 | 30 | -2.2000000 | 1.0000000 + 1401-06-01 | 1401-06-01 | 1 | 1 | 50 | -2.2000000 | 1.0000000 + 1401-01-01 | 1401-01-01 | 2 | 2 | 40 | 649.5000000 | 2.0000000 + 1401-06-01 | 1401-06-01 | 2 | 2 | 50 | 649.5000000 | 2.0000000 + 1401-06-01 | 1401-06-01 | 3 | 3 | 30 | -5.0000000 | 3.0000000 + 1401-04-01 | 1401-04-01 | 3 | 3 | 40 | -5.0000000 | 3.0000000 + 1401-06-01 | 1401-06-01 | 3 | 3 | 30 | -5.0000000 | 3.0000000 + 1401-06-01 | 1401-06-01 | 4 | 4 | 40 | .0000000 | 4.0000000 + 1401-06-01 | 1401-06-01 | 4 | 4 | 40 | .0000000 | 4.0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and 3 preceding ); -- mvd 1->5; + pn | vn | vn | cn | to_char +-----+----+----+----+------------------- + 100 | 20 | 20 | 1 | .0000000 + 100 | 40 | 40 | 2 | .0000000 + 200 | 10 | 10 | 1 | 1200.0000000 + 200 | 40 | 40 | 3 | 1200.0000000 + 300 | 30 | 30 | 1 | 600.0000000 + 400 | 50 | 50 | 1 | 480.0000000 + 400 | 50 | 50 | 2 | 480.0000000 + 500 | 30 | 30 | 1 | 342.8571429 + 500 | 30 | 30 | 3 | 342.8571429 + 600 | 30 | 30 | 3 | 267.7777778 + 700 | 40 | 40 | 4 | 241.5000000 + 800 | 40 | 40 | 4 | 219.6363636 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn) preceding ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.cn asc); -- mvd 6->5; 6,1,2->7; 6,1,2->8; + dt | pn | vn | qty | to_char | cn | to_char | to_char +------------+-----+----+------+-------------------+----+-------------------+------------------- + 1401-03-01 | 200 | 10 | 1 | .0000000 | 1 | 1.0000000 | .0000000 + 1401-06-01 | 400 | 50 | 1 | .0000000 | 1 | 1.0000000 | .0000000 + 1401-05-01 | 100 | 20 | 1 | .0000000 | 1 | 1.0000000 | .0000000 + 1401-06-01 | 500 | 30 | 12 | .0000000 | 1 | 1.0000000 | .0000000 + 1401-05-02 | 300 | 30 | 1 | .0000000 | 1 | 1.0000000 | .0000000 + 1401-01-01 | 100 | 40 | 1100 | .0000000 | 2 | 1.0000000 | .0000000 + 1401-06-01 | 400 | 50 | 1 | .0000000 | 2 | 2.0000000 | 1.0000000 + 1401-04-01 | 200 | 40 | 1 | .0000000 | 3 | 1.0000000 | .0000000 + 1401-06-01 | 500 | 30 | 12 | .0000000 | 3 | 2.0000000 | 1.0000000 + 1401-06-01 | 600 | 30 | 12 | .0000000 | 3 | 1.0000000 | .0000000 + 1401-06-01 | 700 | 40 | 1 | .0000000 | 4 | 1.0000000 | .0000000 + 1401-06-01 | 800 | 40 | 1 | .0000000 | 4 | 1.0000000 | .0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 6->5; + dt | vn | dt | vn | to_char | cn +------------+----+------------+----+-------------------+---- + 1401-06-01 | 40 | 1401-06-01 | 40 | 1.0000000 | 4 + 1401-06-01 | 40 | 1401-06-01 | 40 | 1.0000000 | 4 + 1401-06-01 | 30 | 1401-06-01 | 30 | 5.4000000 | 3 + 1401-06-01 | 30 | 1401-06-01 | 30 | 5.4000000 | 3 + 1401-04-01 | 40 | 1401-04-01 | 40 | 5.4000000 | 3 + 1401-06-01 | 50 | 1401-06-01 | 50 | 161.1428571 | 2 + 1401-01-01 | 40 | 1401-01-01 | 40 | 161.1428571 | 2 + 1401-05-02 | 30 | 1401-05-02 | 30 | 95.3333333 | 1 + 1401-06-01 | 30 | 1401-06-01 | 30 | 95.3333333 | 1 + 1401-06-01 | 50 | 1401-06-01 | 50 | 95.3333333 | 1 + 1401-03-01 | 10 | 1401-03-01 | 10 | 95.3333333 | 1 + 1401-05-01 | 20 | 1401-05-01 | 20 | 95.3333333 | 1 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.pn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.vn asc), +win3 as (order by ow_sale.cn desc), +win4 as (order by ow_sale.cn desc); -- mvd 5->4; 5->6; 2->7; 9->8; 2->10; 9->11; + dt | vn | dt | to_char | pn | to_char | to_char | to_char | cn | to_char | to_char +------------+----+------------+-------------------+-----+-------------------+-------------------+-------------------+----+-------------------+------------------- + 1401-06-01 | 40 | 1401-06-01 | 34.1666667 | 800 | 50.0000000 | 1.0000000 | .0000000 | 4 | 2400.0000000 | 1.0000000 + 1401-06-01 | 40 | 1401-06-01 | 33.6363636 | 700 | 50.0000000 | 2.0000000 | .0000000 | 4 | 2400.0000000 | 1.0000000 + 1401-06-01 | 30 | 1401-06-01 | 33.3333333 | 500 | 50.0000000 | 1.0000000 | .1818182 | 3 | 2400.0000000 | 2.0000000 + 1401-04-01 | 40 | 1401-04-01 | 27.5000000 | 200 | 40.0000000 | .0000000 | .1818182 | 3 | 2400.0000000 | 2.0000000 + 1401-06-01 | 30 | 1401-06-01 | 33.0000000 | 600 | 50.0000000 | 2.0000000 | .1818182 | 3 | 2400.0000000 | 2.0000000 + 1401-06-01 | 50 | 1401-06-01 | 34.2857143 | 400 | 50.0000000 | 1.0000000 | .4545455 | 2 | 2400.0000000 | 3.0000000 + 1401-01-01 | 40 | 1401-01-01 | 30.0000000 | 100 | 40.0000000 | .0000000 | .4545455 | 2 | 2400.0000000 | 3.0000000 + 1401-06-01 | 30 | 1401-06-01 | 33.3333333 | 500 | 50.0000000 | 2.0000000 | .6363636 | 1 | 2400.0000000 | 4.0000000 + 1401-06-01 | 50 | 1401-06-01 | 34.2857143 | 400 | 50.0000000 | 1.0000000 | .6363636 | 1 | 2400.0000000 | 4.0000000 + 1401-05-02 | 30 | 1401-05-02 | 28.0000000 | 300 | 40.0000000 | 1.0000000 | .6363636 | 1 | 2400.0000000 | 4.0000000 + 1401-05-01 | 20 | 1401-05-01 | 30.0000000 | 100 | 40.0000000 | 3.0000000 | .6363636 | 1 | 2400.0000000 | 4.0000000 + 1401-03-01 | 10 | 1401-03-01 | 27.5000000 | 200 | 40.0000000 | 2.0000000 | .6363636 | 1 | 2400.0000000 | 4.0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.qty) following ); -- mvd 3->4; + qty | prc | cn | to_char +------+------+----+------------------- + 1 | 1 | 4 | 7.6000000 + 1 | 1 | 4 | 7.6000000 + 12 | 5 | 3 | 403.5833333 + 1 | 0 | 3 | 691.1428571 + 12 | 5 | 3 | 403.5833333 + 1 | 0 | 2 | 403.5833333 + 1100 | 2400 | 2 | 403.5833333 + 1 | 0 | 1 | 403.5833333 + 1 | 0 | 1 | 403.5833333 + 12 | 5 | 1 | 403.5833333 + 1 | 0 | 1 | 403.5833333 + 1 | 0 | 1 | 403.5833333 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn*ow_sale.prc),floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.cn,ow_sale.qty order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty*ow_sale.prc)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.vn order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and 1 following ), +win2 as (partition by ow_sale.cn,ow_sale.qty order by ow_sale.vn desc), +win3 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.vn order by ow_sale.vn asc); -- mvd 3->2; 3,1,5->4; 3,1,5->6; 8,1->7; 8,1->9; 3->10; + vn | to_char | cn | to_char | qty | to_char | to_char | dt | to_char | to_char +----+-------------------+----+-------------------+------+-------------------+-------------------+------------+-------------------+------------------- + 30 | 686.4285714 | 1 | 1.0000000 | 12 | 1.0000000 | 1.0000000 | 1401-06-01 | 60.0000000 | 10.0000000 + 50 | 686.4285714 | 1 | 1.0000000 | 1 | .2500000 | 1.0000000 | 1401-06-01 | .0000000 | 10.0000000 + 30 | 686.4285714 | 1 | 2.0000000 | 1 | .5000000 | 1.0000000 | 1401-05-02 | .0000000 | 10.0000000 + 20 | 686.4285714 | 1 | 3.0000000 | 1 | .7500000 | 1.0000000 | 1401-05-01 | .0000000 | 10.0000000 + 10 | 686.4285714 | 1 | 4.0000000 | 1 | 1.0000000 | 1.0000000 | 1401-03-01 | .0000000 | 10.0000000 + 40 | 483.5000000 | 2 | 1.0000000 | 1100 | 1.0000000 | 1.0000000 | 1401-01-01 | 2640000.0000000 | 10.0000000 + 50 | 483.5000000 | 2 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1401-06-01 | .0000000 | 10.0000000 + 30 | 403.5833333 | 3 | 1.0000000 | 12 | 1.0000000 | 1.0000000 | 1401-06-01 | 60.0000000 | 10.0000000 + 30 | 403.5833333 | 3 | 1.0000000 | 12 | 1.0000000 | 1.0000000 | 1401-06-01 | 60.0000000 | 10.0000000 + 40 | 403.5833333 | 3 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1401-04-01 | .0000000 | 10.0000000 + 40 | 403.5833333 | 4 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | 10.0000000 + 40 | 403.5833333 | 4 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | 10.0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 1->2; + vn | to_char +----+------------------- + 10 | 203.5833333 + 20 | 203.5833333 + 30 | 203.5833333 + 30 | 203.5833333 + 30 | 203.5833333 + 30 | 203.5833333 + 40 | 203.5833333 + 40 | 203.5833333 + 40 | 203.5833333 + 40 | 203.5833333 + 50 | 203.5833333 + 50 | 203.5833333 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn),floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.prc)) OVER(order by ow_sale.pn desc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.vn asc); -- mvd 1->4; 1->5; 2,7->6; + pn | cn | qty | to_char | to_char | to_char | vn +-----+----+------+-------------------+-------------------+-------------------+---- + 800 | 4 | 1 | 3780.0000000 | 3500.0000000 | 1.0000000 | 40 + 700 | 4 | 1 | 3780.0000000 | 3500.0000000 | 1.0000000 | 40 + 600 | 3 | 12 | 3780.0000000 | 3500.0000000 | .6666667 | 30 + 500 | 3 | 12 | 3780.0000000 | 3500.0000000 | .6666667 | 30 + 500 | 1 | 12 | 3780.0000000 | 3500.0000000 | .8000000 | 30 + 400 | 1 | 1 | 3780.0000000 | 3500.0000000 | 1.0000000 | 50 + 400 | 2 | 1 | 3780.0000000 | 3500.0000000 | 1.0000000 | 50 + 300 | 1 | 1 | 3780.0000000 | 3500.0000000 | .8000000 | 30 + 200 | 3 | 1 | 3780.0000000 | 3500.0000000 | 1.0000000 | 40 + 200 | 1 | 1 | 3780.0000000 | 3500.0000000 | .2000000 | 10 + 100 | 1 | 1 | 3780.0000000 | 3500.0000000 | .4000000 | 20 + 100 | 2 | 1100 | 3780.0000000 | 3500.0000000 | .5000000 | 40 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 1 preceding and 0 preceding ); -- mvd 8->7; + qty | vn | dt | dt | dt | pn | to_char | cn +------+----+------------+------------+------------+-----+-------------------+---- + 1 | 10 | 1401-03-01 | 1401-03-01 | 1401-03-01 | 200 | 3.2000000 | 1 + 1 | 20 | 1401-05-01 | 1401-05-01 | 1401-05-01 | 100 | 3.2000000 | 1 + 1 | 30 | 1401-05-02 | 1401-05-02 | 1401-05-02 | 300 | 3.2000000 | 1 + 1 | 50 | 1401-06-01 | 1401-06-01 | 1401-06-01 | 400 | 3.2000000 | 1 + 12 | 30 | 1401-06-01 | 1401-06-01 | 1401-06-01 | 500 | 3.2000000 | 1 + 1100 | 40 | 1401-01-01 | 1401-01-01 | 1401-01-01 | 100 | 159.5714286 | 2 + 1 | 50 | 1401-06-01 | 1401-06-01 | 1401-06-01 | 400 | 159.5714286 | 2 + 1 | 40 | 1401-04-01 | 1401-04-01 | 1401-04-01 | 200 | 225.2000000 | 3 + 12 | 30 | 1401-06-01 | 1401-06-01 | 1401-06-01 | 600 | 225.2000000 | 3 + 12 | 30 | 1401-06-01 | 1401-06-01 | 1401-06-01 | 500 | 225.2000000 | 3 + 1 | 40 | 1401-06-01 | 1401-06-01 | 1401-06-01 | 700 | 5.4000000 | 4 + 1 | 40 | 1401-06-01 | 1401-06-01 | 1401-06-01 | 800 | 5.4000000 | 4 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn),floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 4 preceding and 1 preceding ), +win2 as (partition by ow_sale.pn order by ow_sale.vn desc); -- mvd 4->3; 4,1->5; + pn | pn | to_char | vn | to_char +-----+-----+-------------------+----+------------------- + 200 | 200 | .0000000 | 10 | 1.0000000 + 100 | 100 | .0000000 | 20 | 1.0000000 + 600 | 600 | .0000000 | 30 | .0000000 + 300 | 300 | .0000000 | 30 | .0000000 + 500 | 500 | .0000000 | 30 | .0000000 + 500 | 500 | .0000000 | 30 | .0000000 + 800 | 800 | .0000000 | 40 | .0000000 + 100 | 100 | .0000000 | 40 | .0000000 + 200 | 200 | .0000000 | 40 | .0000000 + 700 | 700 | .0000000 | 40 | .0000000 + 400 | 400 | .0000000 | 50 | .0000000 + 400 | 400 | .0000000 | 50 | .0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.dt,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.qty) preceding and current row ); -- mvd 5->7; + vn | vn | prc | dt | pn | qty | to_char +----+----+------+------------+-----+------+------------------- + 20 | 20 | 0 | 1401-05-01 | 100 | 1 | 30.0000000 + 40 | 40 | 2400 | 1401-01-01 | 100 | 1100 | 30.0000000 + 10 | 10 | 0 | 1401-03-01 | 200 | 1 | 25.0000000 + 40 | 40 | 0 | 1401-04-01 | 200 | 1 | 25.0000000 + 30 | 30 | 0 | 1401-05-02 | 300 | 1 | 30.0000000 + 50 | 50 | 0 | 1401-06-01 | 400 | 1 | 50.0000000 + 50 | 50 | 0 | 1401-06-01 | 400 | 1 | 50.0000000 + 30 | 30 | 5 | 1401-06-01 | 500 | 12 | 30.0000000 + 30 | 30 | 5 | 1401-06-01 | 500 | 12 | 30.0000000 + 30 | 30 | 5 | 1401-06-01 | 600 | 12 | 30.0000000 + 40 | 40 | 1 | 1401-06-01 | 700 | 1 | 40.0000000 + 40 | 40 | 1 | 1401-06-01 | 800 | 1 | 40.0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.cn) preceding and current row ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc), +win3 as (order by ow_sale.pn desc), +win4 as (order by ow_sale.cn desc); -- mvd 4->5; 7,4,8,2,9->6; 7,4,8,2,9->10; 9->11; 4->12; 9->13; + prc | qty | prc | cn | to_char | to_char | dt | vn | pn | to_char | to_char | to_char | to_char +------+------+------+----+-------------------+-------------------+------------+----+-----+-------------------+-------------------+-------------------+------------------- + 1 | 1 | 1 | 4 | 1.0000000 | .0000000 | 1401-06-01 | 40 | 800 | 40.0000000 | .0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 1 | 4 | 1.0000000 | .0000000 | 1401-06-01 | 40 | 700 | 40.0000000 | .0909091 | 1.0000000 | 2.0000000 + 5 | 12 | 5 | 3 | 5.4000000 | .0000000 | 1401-06-01 | 30 | 600 | 30.0000000 | .1818182 | 3.0000000 | 3.0000000 + 5 | 12 | 5 | 1 | 159.5714286 | .0000000 | 1401-06-01 | 30 | 500 | 30.0000000 | .2727273 | 8.0000000 | 4.0000000 + 5 | 12 | 5 | 3 | 5.4000000 | .0000000 | 1401-06-01 | 30 | 500 | 30.0000000 | .2727273 | 3.0000000 | 4.0000000 + 0 | 1 | 0 | 1 | 159.5714286 | .0000000 | 1401-06-01 | 50 | 400 | 50.0000000 | .4545455 | 8.0000000 | 6.0000000 + 0 | 1 | 0 | 2 | 161.1428571 | .0000000 | 1401-06-01 | 50 | 400 | 50.0000000 | .4545455 | 6.0000000 | 6.0000000 + 0 | 1 | 0 | 1 | 159.5714286 | .0000000 | 1401-05-02 | 30 | 300 | 30.0000000 | .6363636 | 8.0000000 | 8.0000000 + 0 | 1 | 0 | 1 | 159.5714286 | .0000000 | 1401-03-01 | 10 | 200 | 10.0000000 | .7272727 | 8.0000000 | 9.0000000 + 0 | 1 | 0 | 3 | 5.4000000 | .0000000 | 1401-04-01 | 40 | 200 | 40.0000000 | .7272727 | 3.0000000 | 9.0000000 + 2400 | 1100 | 2400 | 2 | 161.1428571 | .0000000 | 1401-01-01 | 40 | 100 | 40.0000000 | .9090909 | 6.0000000 | 11.0000000 + 0 | 1 | 0 | 1 | 159.5714286 | .0000000 | 1401-05-01 | 20 | 100 | 20.0000000 | .9090909 | 8.0000000 | 11.0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn),floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 0 preceding and floor(ow_sale.cn+ow_sale.pn) following ); -- mvd 5->4; + cn | prc | prc | to_char | vn +----+------+------+-------------------+---- + 2 | 0 | 0 | 167.2500000 | 50 + 1 | 0 | 0 | 167.2500000 | 50 + 2 | 2400 | 2400 | 210.7000000 | 40 + 4 | 1 | 1 | 210.7000000 | 40 + 3 | 0 | 0 | 210.7000000 | 40 + 4 | 1 | 1 | 210.7000000 | 40 + 3 | 5 | 5 | -22.5000000 | 30 + 1 | 0 | 0 | -22.5000000 | 30 + 1 | 5 | 5 | -22.5000000 | 30 + 3 | 5 | 5 | -22.5000000 | 30 + 1 | 0 | 0 | -15.0000000 | 20 + 1 | 0 | 0 | -10.0000000 | 10 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc*ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.qty order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.vn*ow_sale.qty) preceding and 3 following ), +win2 as (partition by ow_sale.dt,ow_sale.qty order by ow_sale.pn desc), +win3 as (order by ow_sale.pn desc); -- mvd 4->3; 4->5; 7,8,1->6; 1->9; 7,8,1->10; + pn | pn | to_char | vn | to_char | to_char | dt | qty | to_char | to_char +-----+-----+-------------------+----+-------------------+-------------------+------------+------+-------------------+------------------- + 800 | 800 | 31.0000000 | 40 | .0000000 | .2500000 | 1401-06-01 | 1 | 1.0000000 | .0000000 + 700 | 700 | 31.0000000 | 40 | .0000000 | .5000000 | 1401-06-01 | 1 | 2.0000000 | .0000000 + 600 | 600 | 25.0000000 | 30 | .0000000 | .3333333 | 1401-06-01 | 12 | 3.0000000 | .0000000 + 500 | 500 | 25.0000000 | 30 | .0000000 | 1.0000000 | 1401-06-01 | 12 | 4.0000000 | .0000000 + 500 | 500 | 25.0000000 | 30 | .0000000 | 1.0000000 | 1401-06-01 | 12 | 4.0000000 | .0000000 + 400 | 400 | 34.1666667 | 50 | .0000000 | 1.0000000 | 1401-06-01 | 1 | 5.0000000 | .0000000 + 400 | 400 | 34.1666667 | 50 | .0000000 | 1.0000000 | 1401-06-01 | 1 | 5.0000000 | .0000000 + 300 | 300 | 25.0000000 | 30 | .0000000 | 1.0000000 | 1401-05-02 | 1 | 6.0000000 | .0000000 + 200 | 200 | 31.0000000 | 40 | .0000000 | 1.0000000 | 1401-04-01 | 1 | 7.0000000 | .0000000 + 200 | 200 | 10.0000000 | 10 | .0000000 | 1.0000000 | 1401-03-01 | 1 | 7.0000000 | .0000000 + 100 | 100 | 15.0000000 | 20 | .0000000 | 1.0000000 | 1401-05-01 | 1 | 8.0000000 | .0000000 + 100 | 100 | 31.0000000 | 40 | .0000000 | 1.0000000 | 1401-01-01 | 1100 | 8.0000000 | .0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.qty) preceding and unbounded following ); -- mvd 3->4; + dt | dt | cn | to_char +------------+------------+----+------------------- + 1401-06-01 | 1401-06-01 | 4 | 95.3333333 + 1401-06-01 | 1401-06-01 | 4 | 95.3333333 + 1401-06-01 | 1401-06-01 | 3 | 95.3333333 + 1401-06-01 | 1401-06-01 | 3 | 95.3333333 + 1401-04-01 | 1401-04-01 | 3 | 95.3333333 + 1401-06-01 | 1401-06-01 | 2 | 114.2000000 + 1401-01-01 | 1401-01-01 | 2 | 95.3333333 + 1401-05-02 | 1401-05-02 | 1 | 159.5714286 + 1401-06-01 | 1401-06-01 | 1 | 95.3333333 + 1401-06-01 | 1401-06-01 | 1 | 159.5714286 + 1401-03-01 | 1401-03-01 | 1 | 159.5714286 + 1401-05-01 | 1401-05-01 | 1 | 159.5714286 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty+ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.cn order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 3 preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.vn asc), +win3 as (order by ow_sale.vn desc), +win4 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc); -- mvd 1->7; 1,3->8; 3->9; 1,3->10; 12,1,13->11; 1->14; + cn | dt | vn | qty | cn | qty | to_char | to_char | to_char | to_char | to_char | prc | pn | to_char +----+------------+----+------+----+------+-------------------+-------------------+-------------------+-------------------+-------------------+------+-----+------------------- + 1 | 1401-06-01 | 50 | 1 | 1 | 1 | 400.0000000 | .0000000 | .0000000 | 1.0000000 | 50.0000000 | 0 | 400 | 12.0000000 + 2 | 1401-06-01 | 50 | 1 | 2 | 1 | 400.0000000 | .0000000 | .0000000 | 1.0000000 | 50.0000000 | 0 | 400 | 12.0000000 + 4 | 1401-06-01 | 40 | 1 | 4 | 1 | 400.0000000 | .0000000 | .1818182 | 2.0000000 | .0000000 | 1 | 800 | 12.0000000 + 2 | 1401-01-01 | 40 | 1100 | 2 | 1100 | 400.0000000 | .0000000 | .1818182 | 1.0000000 | .0000000 | 2400 | 100 | 12.0000000 + 3 | 1401-04-01 | 40 | 1 | 3 | 1 | 400.0000000 | .0000000 | .1818182 | 1.0000000 | 40.0000000 | 0 | 200 | 12.0000000 + 4 | 1401-06-01 | 40 | 1 | 4 | 1 | 400.0000000 | .0000000 | .1818182 | 1.0000000 | .0000000 | 1 | 700 | 12.0000000 + 3 | 1401-06-01 | 30 | 12 | 3 | 12 | 400.0000000 | .0000000 | .5454545 | 1.0000000 | .0000000 | 5 | 500 | 12.0000000 + 3 | 1401-06-01 | 30 | 12 | 3 | 12 | 400.0000000 | .0000000 | .5454545 | 2.0000000 | .0000000 | 5 | 600 | 12.0000000 + 1 | 1401-06-01 | 30 | 12 | 1 | 12 | 400.0000000 | .0000000 | .5454545 | 2.0000000 | .0000000 | 5 | 500 | 12.0000000 + 1 | 1401-05-02 | 30 | 1 | 1 | 1 | 400.0000000 | .0000000 | .5454545 | 1.0000000 | 30.0000000 | 0 | 300 | 12.0000000 + 1 | 1401-05-01 | 20 | 1 | 1 | 1 | 400.0000000 | .0000000 | .9090909 | 1.0000000 | 20.0000000 | 0 | 100 | 12.0000000 + 1 | 1401-03-01 | 10 | 1 | 1 | 1 | 400.0000000 | .0000000 | 1.0000000 | 1.0000000 | 10.0000000 | 0 | 200 | 12.0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc),floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and current row ); -- mvd 6->5; + cn | prc | cn | cn | to_char | vn +----+------+----+----+-------------------+---- + 2 | 0 | 2 | 2 | -398.5000000 | 50 + 1 | 0 | 1 | 1 | -398.5000000 | 50 + 2 | 2400 | 2 | 2 | -446.7500000 | 40 + 4 | 1 | 4 | 4 | -446.7500000 | 40 + 3 | 0 | 3 | 3 | -446.7500000 | 40 + 4 | 1 | 4 | 4 | -446.7500000 | 40 + 3 | 5 | 3 | 3 | -473.0000000 | 30 + 1 | 0 | 1 | 1 | -473.0000000 | 30 + 1 | 5 | 1 | 1 | -473.0000000 | 30 + 3 | 5 | 3 | 3 | -473.0000000 | 30 + 1 | 0 | 1 | 1 | -99.0000000 | 20 + 1 | 0 | 1 | 1 | -199.0000000 | 10 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn+ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and current row ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.vn desc), +win3 as (order by ow_sale.vn asc); -- mvd 4->3; 1,6,4->5; 4->7; + cn | cn | to_char | vn | to_char | dt | to_char +----+----+-------------------+----+-------------------+------------+------------------- + 1 | 1 | 1.0000000 | 10 | .0000000 | 1401-03-01 | .0833333 + 1 | 1 | 1.0000000 | 20 | .0000000 | 1401-05-01 | .1666667 + 3 | 3 | 9.2500000 | 30 | .0000000 | 1401-06-01 | .5000000 + 1 | 1 | 9.2500000 | 30 | .0000000 | 1401-05-02 | .5000000 + 1 | 1 | 9.2500000 | 30 | 1.0000000 | 1401-06-01 | .5000000 + 3 | 3 | 9.2500000 | 30 | .0000000 | 1401-06-01 | .5000000 + 2 | 2 | 275.7500000 | 40 | .0000000 | 1401-01-01 | .8333333 + 3 | 3 | 275.7500000 | 40 | .0000000 | 1401-04-01 | .8333333 + 4 | 4 | 275.7500000 | 40 | .0000000 | 1401-06-01 | .8333333 + 4 | 4 | 275.7500000 | 40 | .0000000 | 1401-06-01 | .8333333 + 2 | 2 | 1.0000000 | 50 | .0000000 | 1401-06-01 | 1.0000000 + 1 | 1 | 1.0000000 | 50 | .0000000 | 1401-06-01 | 1.0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn/ow_sale.cn),floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and floor(ow_sale.qty) following ); -- mvd 7->6; + qty | vn | prc | cn | qty | to_char | pn +------+----+------+----+------+-------------------+----- + 1 | 40 | 1 | 4 | 1 | 2.0000000 | 800 + 1 | 40 | 1 | 4 | 1 | 2.0000000 | 700 + 12 | 30 | 5 | 3 | 12 | 17.0000000 | 600 + 12 | 30 | 5 | 1 | 12 | 17.0000000 | 500 + 12 | 30 | 5 | 3 | 12 | 17.0000000 | 500 + 1 | 50 | 0 | 1 | 1 | 1.0000000 | 400 + 1 | 50 | 0 | 2 | 1 | 1.0000000 | 400 + 1 | 30 | 0 | 1 | 1 | 1.0000000 | 300 + 1 | 10 | 0 | 1 | 1 | 1.0000000 | 200 + 1 | 40 | 0 | 3 | 1 | 1.0000000 | 200 + 1 | 20 | 0 | 1 | 1 | 1750.5000000 | 100 + 1100 | 40 | 2400 | 2 | 1100 | 1750.5000000 | 100 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and floor(ow_sale.cn+ow_sale.cn) following ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.pn desc); -- mvd 3->2; 5,6->4; 5,6->7; + qty | to_char | vn | to_char | dt | pn | to_char +------+-------------------+----+-------------------+------------+-----+------------------- + 1 | 50.0000000 | 50 | .0000000 | 1401-06-01 | 400 | 50.0000000 + 1 | 50.0000000 | 50 | .0000000 | 1401-06-01 | 400 | 50.0000000 + 1 | 40.0000000 | 40 | .0000000 | 1401-06-01 | 800 | 40.0000000 + 1 | 40.0000000 | 40 | .0000000 | 1401-04-01 | 200 | 40.0000000 + 1100 | 40.0000000 | 40 | .0000000 | 1401-01-01 | 100 | 40.0000000 + 1 | 40.0000000 | 40 | .0000000 | 1401-06-01 | 700 | 40.0000000 + 12 | 30.0000000 | 30 | .0000000 | 1401-06-01 | 600 | 30.0000000 + 12 | 30.0000000 | 30 | .0000000 | 1401-06-01 | 500 | 30.0000000 + 12 | 30.0000000 | 30 | .0000000 | 1401-06-01 | 500 | 30.0000000 + 1 | 30.0000000 | 30 | .0000000 | 1401-05-02 | 300 | 30.0000000 + 1 | 20.0000000 | 20 | .0000000 | 1401-05-01 | 100 | 20.0000000 + 1 | 10.0000000 | 10 | .0000000 | 1401-03-01 | 200 | 10.0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn),floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and unbounded following ); -- mvd 6->5; + pn | qty | qty | pn | to_char | vn +-----+------+------+-----+-------------------+---- + 400 | 1 | 1 | 400 | 1291.6666667 | 50 + 400 | 1 | 1 | 400 | 1291.6666667 | 50 + 100 | 1100 | 1100 | 100 | 1050.0000000 | 40 + 700 | 1 | 1 | 700 | 1050.0000000 | 40 + 800 | 1 | 1 | 800 | 1050.0000000 | 40 + 200 | 1 | 1 | 200 | 1050.0000000 | 40 + 600 | 12 | 12 | 600 | 683.3333333 | 30 + 300 | 1 | 1 | 300 | 683.3333333 | 30 + 500 | 12 | 12 | 500 | 683.3333333 | 30 + 500 | 12 | 12 | 500 | 683.3333333 | 30 + 100 | 1 | 1 | 100 | 250.0000000 | 20 + 200 | 1 | 1 | 200 | 100.0000000 | 10 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty-ow_sale.vn),floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and unbounded following ); -- mvd 4->3; 4->5; + qty | prc | to_char | cn | to_char +------+------+-------------------+----+------------------- + 1 | 0 | 47.8333333 | 1 | 10.0000000 + 1 | 0 | 47.8333333 | 1 | 10.0000000 + 1 | 0 | 47.8333333 | 1 | 10.0000000 + 12 | 5 | 47.8333333 | 1 | 10.0000000 + 1 | 0 | 47.8333333 | 1 | 10.0000000 + 1100 | 2400 | 79.7142857 | 2 | 30.0000000 + 1 | 0 | 79.7142857 | 2 | 30.0000000 + 12 | 5 | 1.6000000 | 3 | 30.0000000 + 1 | 0 | 1.6000000 | 3 | 30.0000000 + 12 | 5 | 1.6000000 | 3 | 30.0000000 + 1 | 1 | .0000000 | 4 | 40.0000000 + 1 | 1 | .0000000 | 4 | 40.0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn*ow_sale.cn),floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.vn) following and floor(ow_sale.qty) following ); -- mvd 8->7; + vn | prc | qty | pn | pn | prc | to_char | cn +----+------+------+-----+-----+------+-------------------+---- + 10 | 0 | 1 | 200 | 200 | 0 | .0000000 | 1 + 20 | 0 | 1 | 100 | 100 | 0 | .0000000 | 1 + 30 | 0 | 1 | 300 | 300 | 0 | .0000000 | 1 + 50 | 0 | 1 | 400 | 400 | 0 | .0000000 | 1 + 30 | 5 | 12 | 500 | 500 | 5 | .0000000 | 1 + 40 | 2400 | 1100 | 100 | 100 | 2400 | .0000000 | 2 + 50 | 0 | 1 | 400 | 400 | 0 | .0000000 | 2 + 40 | 0 | 1 | 200 | 200 | 0 | .0000000 | 3 + 30 | 5 | 12 | 600 | 600 | 5 | .0000000 | 3 + 30 | 5 | 12 | 500 | 500 | 5 | .0000000 | 3 + 40 | 1 | 1 | 700 | 700 | 1 | .0000000 | 4 + 40 | 1 | 1 | 800 | 800 | 1 | .0000000 | 4 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn/ow_sale.cn),floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.vn/ow_sale.qty) following and unbounded following ); -- mvd 1->5; + cn | vn | pn | vn | to_char +----+----+-----+----+------------------- + 1 | 20 | 100 | 20 | .0000000 + 1 | 10 | 200 | 10 | .0000000 + 1 | 30 | 300 | 30 | .0000000 + 1 | 50 | 400 | 50 | .0000000 + 1 | 30 | 500 | 30 | .0000000 + 2 | 40 | 100 | 40 | .0000000 + 2 | 50 | 400 | 50 | .0000000 + 3 | 40 | 200 | 40 | .0000000 + 3 | 30 | 600 | 30 | .0000000 + 3 | 30 | 500 | 30 | .0000000 + 4 | 40 | 700 | 40 | .0000000 + 4 | 40 | 800 | 40 | .0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.pn*ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 2 following and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 6->5; 2,3,4,1->7; 6->8; 6->9; 1->10; 1->11; + pn | prc | dt | cn | to_char | vn | to_char | to_char | to_char | to_char | to_char +-----+------+------------+----+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 100 | 2400 | 1401-01-01 | 2 | 2.5000000 | 40 | 1.0000000 | 6.0000000 | 6.0000000 | .0000000 | 1.0000000 + 200 | 0 | 1401-03-01 | 1 | .0000000 | 10 | 1.0000000 | .0000000 | .0000000 | .0000000 | 2.0000000 + 200 | 0 | 1401-04-01 | 3 | 2.5000000 | 40 | 1.0000000 | 6.0000000 | 6.0000000 | .0000000 | 3.0000000 + 100 | 0 | 1401-05-01 | 1 | .0000000 | 20 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 | 4.0000000 + 300 | 0 | 1401-05-02 | 1 | .0000000 | 30 | 1.0000000 | 2.0000000 | 2.0000000 | .0000000 | 5.0000000 + 400 | 0 | 1401-06-01 | 1 | 241.7000000 | 50 | 1.0000000 | 10.0000000 | 10.0000000 | .0000000 | 6.0000000 + 400 | 0 | 1401-06-01 | 2 | 241.7000000 | 50 | 1.0000000 | 10.0000000 | 10.0000000 | .0000000 | 7.0000000 + 500 | 5 | 1401-06-01 | 1 | .0000000 | 30 | 1.0000000 | 2.0000000 | 2.0000000 | .0000000 | 8.0000000 + 500 | 5 | 1401-06-01 | 3 | .0000000 | 30 | 2.0000000 | 2.0000000 | 2.0000000 | .0000000 | 9.0000000 + 600 | 5 | 1401-06-01 | 3 | .0000000 | 30 | 1.0000000 | 2.0000000 | 2.0000000 | .0000000 | 10.0000000 + 700 | 1 | 1401-06-01 | 4 | 2.5000000 | 40 | 2.0000000 | 6.0000000 | 6.0000000 | .0000000 | 11.0000000 + 800 | 1 | 1401-06-01 | 4 | 2.5000000 | 40 | 1.0000000 | 6.0000000 | 6.0000000 | .0000000 | 12.0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc rows unbounded preceding ); -- mvd 2->5; + pn | vn | cn | dt | to_char +-----+----+----+------------+------------------- + 100 | 40 | 2 | 1401-01-01 | 110000.0000000 + 200 | 10 | 1 | 1401-03-01 | 55100.0000000 + 200 | 40 | 3 | 1401-04-01 | 36800.0000000 + 100 | 20 | 1 | 1401-05-01 | 27625.0000000 + 300 | 30 | 1 | 1401-05-02 | 22160.0000000 + 400 | 50 | 1 | 1401-06-01 | 18533.3333333 + 400 | 50 | 2 | 1401-06-01 | 15942.8571429 + 500 | 30 | 1 | 1401-06-01 | 14700.0000000 + 500 | 30 | 3 | 1401-06-01 | 13733.3333333 + 600 | 30 | 3 | 1401-06-01 | 13080.0000000 + 700 | 40 | 4 | 1401-06-01 | 11954.5454545 + 800 | 40 | 4 | 1401-06-01 | 11025.0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn/ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.cn desc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.cn) as int),cast (floor(ow_sale.prc-ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.cn desc rows unbounded preceding ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,4->2; 3,4->5; 3,1,7->6; 3,4->8; 3,1,7->9; + vn | to_char | cn | pn | to_char | to_char | qty | to_char | to_char +----+-------------------+----+-----+-------------------+-------------------+------+-------------------+------------------- + 40 | 1100.0000000 | 2 | 100 | 1.0000000 | 4.0000000 | 1100 | 40.0000000 | 1.0000000 + 10 | 550.5000000 | 1 | 200 | 2.0000000 | 2.0000000 | 1 | 40.0000000 | 1.0000000 + 40 | 367.3333333 | 3 | 200 | 3.0000000 | 6.0000000 | 1 | 40.0000000 | 1.0000000 + 20 | 275.7500000 | 1 | 100 | 4.0000000 | 2.0000000 | 1 | 40.0000000 | 2.0000000 + 30 | 220.8000000 | 1 | 300 | 5.0000000 | 2.0000000 | 1 | 40.0000000 | 3.0000000 + 50 | 184.1666667 | 1 | 400 | 6.0000000 | 2.0000000 | 1 | 50.0000000 | 4.0000000 + 50 | 158.0000000 | 2 | 400 | 7.0000000 | 4.0000000 | 1 | 50.0000000 | 1.0000000 + 30 | 139.7500000 | 1 | 500 | 8.0000000 | 2.0000000 | 12 | 50.0000000 | 1.0000000 + 30 | 125.5555556 | 3 | 500 | 9.0000000 | 6.0000000 | 12 | 50.0000000 | 1.0000000 + 30 | 114.2000000 | 3 | 600 | 10.0000000 | 6.0000000 | 12 | 50.0000000 | 2.0000000 + 40 | 103.9090909 | 4 | 700 | 11.0000000 | 8.0000000 | 1 | 50.0000000 | 1.0000000 + 40 | 95.3333333 | 4 | 800 | 12.0000000 | 8.0000000 | 1 | 50.0000000 | 2.0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.vn desc rows floor(ow_sale.cn) preceding ); -- mvd 5,6,3->4; + qty | dt | pn | to_char | cn | vn +------+------------+-----+-------------------+----+---- + 1100 | 1401-01-01 | 100 | 1100.0000000 | 2 | 40 + 1 | 1401-03-01 | 200 | 550.5000000 | 1 | 10 + 1 | 1401-04-01 | 200 | 367.3333333 | 3 | 40 + 1 | 1401-05-01 | 100 | 1.0000000 | 1 | 20 + 1 | 1401-05-02 | 300 | 1.0000000 | 1 | 30 + 1 | 1401-06-01 | 400 | 1.0000000 | 1 | 50 + 1 | 1401-06-01 | 400 | 1.0000000 | 2 | 50 + 12 | 1401-06-01 | 500 | 6.5000000 | 1 | 30 + 12 | 1401-06-01 | 500 | 6.5000000 | 3 | 30 + 12 | 1401-06-01 | 600 | 9.2500000 | 3 | 30 + 1 | 1401-06-01 | 700 | 7.6000000 | 4 | 40 + 1 | 1401-06-01 | 800 | 7.6000000 | 4 | 40 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn),floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.vn+ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows 3 preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.pn desc), +win4 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.pn order by ow_sale.cn desc); -- mvd 3->2; 3->4; 1->5; 7,8,1->6; + pn | to_char | vn | to_char | to_char | to_char | prc | cn +-----+-------------------+----+-------------------+-------------------+-------------------+------+---- + 400 | 300.0000000 | 50 | 1.0000000 | .0000000 | .0000000 | 0 | 2 + 400 | 250.0000000 | 50 | 2.0000000 | .0000000 | .0000000 | 0 | 1 + 800 | 647.0000000 | 40 | 3.0000000 | .0000000 | .0000000 | 1 | 4 + 200 | -633.3333333 | 40 | 4.0000000 | .0000000 | .0000000 | 0 | 3 + 700 | 571.0000000 | 40 | 5.0000000 | .0000000 | .0000000 | 1 | 4 + 100 | -2300.0000000 | 40 | 6.0000000 | .0000000 | .0000000 | 2400 | 2 + 500 | 398.7500000 | 30 | 7.0000000 | .0000000 | .0000000 | 5 | 1 + 500 | 447.5000000 | 30 | 8.0000000 | .0000000 | .0000000 | 5 | 3 + 600 | 496.2500000 | 30 | 9.0000000 | .0000000 | .0000000 | 5 | 3 + 300 | 200.0000000 | 30 | 10.0000000 | .0000000 | .0000000 | 0 | 1 + 100 | -450.0000000 | 20 | 11.0000000 | .0000000 | .0000000 | 0 | 1 + 200 | -1050.0000000 | 10 | 12.0000000 | .0000000 | .0000000 | 0 | 1 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn*ow_sale.pn),floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows current row ); -- mvd 4,1->3; + pn | prc | to_char | vn +-----+------+-------------------+---- + 100 | 2400 | 10000.0000000 | 40 + 200 | 0 | 40000.0000000 | 10 + 200 | 0 | 40000.0000000 | 40 + 100 | 0 | 10000.0000000 | 20 + 300 | 0 | 90000.0000000 | 30 + 400 | 0 | 160000.0000000 | 50 + 400 | 0 | 160000.0000000 | 50 + 500 | 5 | 250000.0000000 | 30 + 500 | 5 | 250000.0000000 | 30 + 600 | 5 | 360000.0000000 | 30 + 700 | 1 | 490000.0000000 | 40 + 800 | 1 | 640000.0000000 | 40 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows current row ), +win2 as (order by ow_sale.cn desc); -- mvd 3,4->2; 3->5; 3->6; 3->7; + vn | to_char | cn | pn | to_char | to_char | to_char +----+-------------------+----+-----+-------------------+-------------------+------------------- + 40 | 800.0000000 | 4 | 800 | 1.0000000 | 1.0000000 | 1.0000000 + 40 | 700.0000000 | 4 | 700 | 1.0000000 | 1.0000000 | 1.0000000 + 30 | 500.0000000 | 3 | 500 | 3.0000000 | 3.0000000 | 2.0000000 + 40 | 200.0000000 | 3 | 200 | 3.0000000 | 3.0000000 | 2.0000000 + 30 | 600.0000000 | 3 | 600 | 3.0000000 | 3.0000000 | 2.0000000 + 50 | 400.0000000 | 2 | 400 | 6.0000000 | 6.0000000 | 3.0000000 + 40 | 100.0000000 | 2 | 100 | 6.0000000 | 6.0000000 | 3.0000000 + 30 | 500.0000000 | 1 | 500 | 8.0000000 | 8.0000000 | 4.0000000 + 50 | 400.0000000 | 1 | 400 | 8.0000000 | 8.0000000 | 4.0000000 + 30 | 300.0000000 | 1 | 300 | 8.0000000 | 8.0000000 | 4.0000000 + 20 | 100.0000000 | 1 | 100 | 8.0000000 | 8.0000000 | 4.0000000 + 10 | 200.0000000 | 1 | 200 | 8.0000000 | 8.0000000 | 4.0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn/ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc,ow_sale.pn asc rows between unbounded preceding and 0 preceding ), +win2 as (partition by ow_sale.cn order by ow_sale.cn asc); -- mvd 3,1->2; 3->4; 3->5; + pn | to_char | cn | to_char | to_char +-----+-------------------+----+-------------------+------------------- + 100 | 1100.0000000 | 2 | 1.0000000 | 2.0000000 + 200 | 550.5000000 | 1 | 1.0000000 | 1.0000000 + 200 | 367.3333333 | 3 | 1.0000000 | 1.0000000 + 100 | 275.7500000 | 1 | 1.0000000 | 2.0000000 + 300 | 220.8000000 | 1 | 1.0000000 | 3.0000000 + 400 | 184.1666667 | 1 | 1.0000000 | 4.0000000 + 400 | 158.0000000 | 2 | 1.0000000 | 1.0000000 + 500 | 139.7500000 | 1 | 1.0000000 | 5.0000000 + 500 | 125.5555556 | 3 | 1.0000000 | 3.0000000 + 600 | 114.2000000 | 3 | 1.0000000 | 2.0000000 + 700 | 103.9090909 | 4 | 1.0000000 | 2.0000000 + 800 | 95.3333333 | 4 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc-ow_sale.prc),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 2->3; + pn | cn | to_char +-----+----+------------------- + 100 | 2 | 5760000.0000000 + 200 | 1 | 2880000.0000000 + 200 | 3 | 1920000.0000000 + 100 | 1 | 1440000.0000000 + 300 | 1 | 1152000.0000000 + 400 | 1 | 960000.0000000 + 400 | 2 | 822857.1428571 + 500 | 1 | 720003.1250000 + 500 | 3 | 640005.5555556 + 600 | 3 | 576007.5000000 + 700 | 4 | 523643.2727273 + 800 | 4 | 480006.4166667 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn+ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.prc order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 6->5; 8,3->7; 2->9; 2->10; + qty | pn | cn | cn | to_char | vn | to_char | prc | to_char | to_char +------+-----+----+----+-------------------+----+-------------------+------+-------------------+------------------- + 1100 | 100 | 2 | 2 | 40.0000000 | 40 | 1.0000000 | 2400 | .0000000 | 1.0000000 + 1 | 200 | 1 | 1 | 25.0000000 | 10 | 1.0000000 | 0 | 2402.0000000 | 2.0000000 + 1 | 200 | 3 | 3 | 30.0000000 | 40 | 3.0000000 | 0 | 1.0000000 | 3.0000000 + 1 | 100 | 1 | 1 | 27.5000000 | 20 | 1.0000000 | 0 | 3.0000000 | 4.0000000 + 1 | 300 | 1 | 1 | 28.0000000 | 30 | 1.0000000 | 0 | 1.0000000 | 5.0000000 + 1 | 400 | 1 | 1 | 31.6666667 | 50 | 1.0000000 | 0 | 1.0000000 | 6.0000000 + 1 | 400 | 2 | 2 | 34.2857143 | 50 | 2.0000000 | 0 | 1.0000000 | 7.0000000 + 12 | 500 | 1 | 1 | 33.7500000 | 30 | 1.0000000 | 5 | .0000000 | 8.0000000 + 12 | 500 | 3 | 3 | 33.3333333 | 30 | 2.0000000 | 5 | .0000000 | 9.0000000 + 12 | 600 | 3 | 3 | 33.0000000 | 30 | 2.0000000 | 5 | .0000000 | 10.0000000 + 1 | 700 | 4 | 4 | 33.6363636 | 40 | 1.0000000 | 1 | 8.0000000 | 11.0000000 + 1 | 800 | 4 | 4 | 34.1666667 | 40 | 1.0000000 | 1 | 5.0000000 | 12.0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn*ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc,ow_sale.vn asc rows between unbounded preceding and 7 following ); -- mvd 2,5->4; + qty | cn | pn | to_char | vn +------+----+-----+-------------------+---- + 1100 | 2 | 100 | 275.0000000 | 40 + 1 | 1 | 200 | 300.0000000 | 10 + 1 | 3 | 200 | 330.0000000 | 40 + 1 | 1 | 100 | 363.6363636 | 20 + 1 | 1 | 300 | 400.0000000 | 30 + 1 | 1 | 400 | 400.0000000 | 50 + 1 | 2 | 400 | 400.0000000 | 50 + 12 | 1 | 500 | 400.0000000 | 30 + 12 | 3 | 500 | 400.0000000 | 30 + 12 | 3 | 600 | 400.0000000 | 30 + 1 | 4 | 700 | 400.0000000 | 40 + 1 | 4 | 800 | 400.0000000 | 40 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.prc*ow_sale.prc) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.prc*ow_sale.prc) following ), +win2 as (partition by ow_sale.cn,ow_sale.prc order by ow_sale.pn desc); -- mvd 6->5; 6->7; 3,6,4->8; + qty | vn | prc | pn | to_char | cn | to_char | to_char +------+----+------+-----+-------------------+----+-------------------+------------------- + 1100 | 40 | 2400 | 100 | 97.5000000 | 2 | 1.0000000 | 1.0000000 + 1 | 10 | 0 | 200 | 552.0000000 | 1 | 1.0000000 | .7500000 + 1 | 40 | 0 | 200 | 369.3333333 | 3 | 1.0000000 | 1.0000000 + 1 | 20 | 0 | 100 | 277.5000000 | 1 | 1.0000000 | 1.0000000 + 1 | 30 | 0 | 300 | 222.4000000 | 1 | 1.0000000 | .5000000 + 1 | 50 | 0 | 400 | 185.6666667 | 1 | 1.0000000 | .2500000 + 1 | 50 | 0 | 400 | 159.5714286 | 2 | 1.0000000 | 1.0000000 + 12 | 30 | 5 | 500 | 97.5000000 | 1 | 1.0000000 | 1.0000000 + 12 | 30 | 5 | 500 | 97.5000000 | 3 | 1.0000000 | 1.0000000 + 12 | 30 | 5 | 600 | 97.5000000 | 3 | 1.0000000 | .5000000 + 1 | 40 | 1 | 700 | 97.5000000 | 4 | 1.0000000 | 1.0000000 + 1 | 40 | 1 | 800 | 97.5000000 | 4 | 1.0000000 | .5000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.cn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows between unbounded preceding and unbounded following ); -- mvd 4,1->3; + pn | pn | to_char | cn +-----+-----+-------------------+---- + 100 | 100 | 78.3333333 | 2 + 200 | 200 | 78.3333333 | 1 + 200 | 200 | 78.3333333 | 3 + 100 | 100 | 78.3333333 | 1 + 300 | 300 | 78.3333333 | 1 + 400 | 400 | 78.3333333 | 1 + 400 | 400 | 78.3333333 | 2 + 500 | 500 | 78.3333333 | 1 + 500 | 500 | 78.3333333 | 3 + 600 | 600 | 78.3333333 | 3 + 700 | 700 | 78.3333333 | 4 + 800 | 800 | 78.3333333 | 4 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn desc rows between floor(ow_sale.qty/ow_sale.pn) preceding and floor(ow_sale.pn) preceding ); -- mvd 1,3->2; + cn | to_char | pn +----+-------------------+----- + 2 | .0000000 | 100 + 1 | .0000000 | 200 + 3 | .0000000 | 200 + 1 | .0000000 | 100 + 1 | .0000000 | 300 + 1 | .0000000 | 400 + 2 | .0000000 | 400 + 1 | .0000000 | 500 + 3 | .0000000 | 500 + 3 | .0000000 | 600 + 4 | .0000000 | 700 + 4 | .0000000 | 800 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn-ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.vn) as int),cast (floor(ow_sale.vn*ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.prc) preceding and floor(ow_sale.qty*ow_sale.cn) preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.vn desc); -- mvd 4->3; 1->5; 1->6; 2,8->7; + cn | dt | to_char | pn | to_char | to_char | to_char | vn +----+------------+-------------------+-----+-------------------+-------------------+-------------------+---- + 2 | 1401-01-01 | .0000000 | 100 | .0000000 | 1.0000000 | 1.0000000 | 40 + 1 | 1401-03-01 | .0000000 | 200 | .0000000 | 2.0000000 | 1.0000000 | 10 + 3 | 1401-04-01 | .0000000 | 200 | .0000000 | 3.0000000 | 1.0000000 | 40 + 1 | 1401-05-01 | .0000000 | 100 | .0000000 | 4.0000000 | 1.0000000 | 20 + 1 | 1401-05-02 | .0000000 | 300 | .0000000 | 5.0000000 | 1.0000000 | 30 + 1 | 1401-06-01 | .0000000 | 400 | .0000000 | 6.0000000 | 1.0000000 | 50 + 2 | 1401-06-01 | .0000000 | 400 | .0000000 | 7.0000000 | 1.0000000 | 50 + 1 | 1401-06-01 | .0000000 | 500 | .0000000 | 8.0000000 | 1.0000000 | 30 + 3 | 1401-06-01 | .0000000 | 500 | .0000000 | 9.0000000 | 1.0000000 | 30 + 3 | 1401-06-01 | .0000000 | 600 | .0000000 | 10.0000000 | 1.0000000 | 30 + 4 | 1401-06-01 | .0000000 | 700 | .0000000 | 11.0000000 | 1.0000000 | 40 + 4 | 1401-06-01 | .0000000 | 800 | .0000000 | 12.0000000 | 1.0000000 | 40 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn desc rows between 2 preceding and current row ), +win2 as (order by ow_sale.cn desc); -- mvd 3,5->4; 3->6; 3,5->7; + dt | vn | cn | to_char | pn | to_char | to_char +------------+----+----+-------------------+-----+-------------------+------------------- + 1401-06-01 | 40 | 4 | 663.3333333 | 800 | 1.0000000 | 3.0000000 + 1401-06-01 | 40 | 4 | 566.6666667 | 700 | 1.0000000 | 3.0000000 + 1401-06-01 | 30 | 3 | 430.0000000 | 500 | 2.0000000 | 3.0000000 + 1401-04-01 | 40 | 3 | 136.6666667 | 200 | 2.0000000 | 3.0000000 + 1401-06-01 | 30 | 3 | 503.3333333 | 600 | 2.0000000 | 3.0000000 + 1401-06-01 | 50 | 2 | 323.3333333 | 400 | 3.0000000 | 3.0000000 + 1401-01-01 | 40 | 2 | 60.0000000 | 100 | 3.0000000 | 1.0000000 + 1401-06-01 | 30 | 1 | 390.0000000 | 500 | 4.0000000 | 3.0000000 + 1401-06-01 | 50 | 1 | 233.3333333 | 400 | 4.0000000 | 3.0000000 + 1401-05-02 | 30 | 1 | 170.0000000 | 300 | 4.0000000 | 3.0000000 + 1401-05-01 | 20 | 1 | 143.3333333 | 100 | 4.0000000 | 3.0000000 + 1401-03-01 | 10 | 1 | 125.0000000 | 200 | 4.0000000 | 2.0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows between floor(ow_sale.cn*ow_sale.cn) preceding and 6 following ); -- mvd 1,6->7; + vn | qty | qty | vn | dt | pn | to_char +----+------+------+----+------------+-----+------------------- + 40 | 1100 | 1100 | 40 | 1401-01-01 | 100 | 242.8571429 + 10 | 1 | 1 | 10 | 1401-03-01 | 200 | 275.0000000 + 40 | 1 | 1 | 40 | 1401-04-01 | 200 | 300.0000000 + 20 | 1 | 1 | 20 | 1401-05-01 | 100 | 375.0000000 + 30 | 1 | 1 | 30 | 1401-05-02 | 300 | 437.5000000 + 50 | 1 | 1 | 50 | 1401-06-01 | 400 | 525.0000000 + 50 | 1 | 1 | 50 | 1401-06-01 | 400 | 450.0000000 + 30 | 12 | 12 | 30 | 1401-06-01 | 500 | 583.3333333 + 30 | 12 | 12 | 30 | 1401-06-01 | 500 | 400.0000000 + 30 | 12 | 12 | 30 | 1401-06-01 | 600 | 400.0000000 + 40 | 1 | 1 | 40 | 1401-06-01 | 700 | 400.0000000 + 40 | 1 | 1 | 40 | 1401-06-01 | 800 | 400.0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc-ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn/ow_sale.cn) as int),cast (floor(ow_sale.cn/ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.pn desc rows between 1 preceding and floor(ow_sale.pn*ow_sale.pn) following ), +win2 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,5,1->3; 4,7,1->6; 4,5,2->8; + pn | qty | to_char | cn | vn | to_char | dt | to_char +-----+------+-------------------+----+----+-------------------+------------+------------------- + 100 | 1100 | 400.0000000 | 2 | 40 | .0000000 | 1401-01-01 | 20.0000000 + 200 | 1 | 400.0000000 | 1 | 10 | .0000000 | 1401-03-01 | .0000000 + 200 | 1 | 427.2727273 | 3 | 40 | .0000000 | 1401-04-01 | .0000000 + 100 | 1 | 450.0000000 | 1 | 20 | .0000000 | 1401-05-01 | .0000000 + 300 | 1 | 477.7777778 | 1 | 30 | .0000000 | 1401-05-02 | .0000000 + 400 | 1 | 525.0000000 | 1 | 50 | 50.0000000 | 1401-06-01 | 25.0000000 + 400 | 1 | 557.1428571 | 2 | 50 | .0000000 | 1401-06-01 | .0000000 + 500 | 12 | 583.3333333 | 1 | 30 | .0000000 | 1401-06-01 | 30.0000000 + 500 | 12 | 620.0000000 | 3 | 30 | .0000000 | 1401-06-01 | 10.0000000 + 600 | 12 | 650.0000000 | 3 | 30 | .0000000 | 1401-06-01 | 10.0000000 + 700 | 1 | 700.0000000 | 4 | 40 | .0000000 | 1401-06-01 | .0000000 + 800 | 1 | 750.0000000 | 4 | 40 | .0000000 | 1401-06-01 | .0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.prc) preceding and unbounded following ); -- mvd 3->2; + cn | to_char | vn +----+-------------------+---- + 2 | 304.6666667 | 40 + 1 | 423.2727273 | 10 + 3 | 445.7000000 | 40 + 1 | 473.1111111 | 20 + 1 | 519.8750000 | 30 + 1 | 551.4285714 | 50 + 2 | 576.8333333 | 50 + 1 | 445.7000000 | 30 + 3 | 473.1111111 | 30 + 3 | 519.8750000 | 30 + 4 | 695.3333333 | 40 + 4 | 749.0000000 | 40 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn-ow_sale.vn),floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.vn asc rows between floor(ow_sale.vn) preceding and unbounded following ), +win2 as (partition by ow_sale.vn order by ow_sale.pn asc), +win3 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.pn desc); -- mvd 4,1->3; 4,1->5; 4,1->6; 4,1->7; + pn | prc | to_char | vn | to_char | to_char | to_char +-----+------+-------------------+----+-------------------+-------------------+------------------- + 100 | 2400 | 213.0833333 | 40 | 1.0000000 | 1.0000000 | 4.0000000 + 200 | 0 | 213.0833333 | 10 | 1.0000000 | 1.0000000 | 1.0000000 + 200 | 0 | 213.0833333 | 40 | 2.0000000 | 2.0000000 | 3.0000000 + 100 | 0 | 213.0833333 | 20 | 1.0000000 | 1.0000000 | 1.0000000 + 300 | 0 | 213.0833333 | 30 | 1.0000000 | 1.0000000 | 4.0000000 + 400 | 0 | 213.0833333 | 50 | 1.0000000 | 1.0000000 | 1.0000000 + 400 | 0 | 213.0833333 | 50 | 1.0000000 | 2.0000000 | 1.0000000 + 500 | 5 | 213.0833333 | 30 | 2.0000000 | 2.0000000 | 2.0000000 + 500 | 5 | 213.0833333 | 30 | 2.0000000 | 3.0000000 | 2.0000000 + 600 | 5 | 213.0833333 | 30 | 4.0000000 | 4.0000000 | 1.0000000 + 700 | 1 | 213.0833333 | 40 | 3.0000000 | 3.0000000 | 2.0000000 + 800 | 1 | 213.0833333 | 40 | 4.0000000 | 4.0000000 | 1.0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn),floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and current row ); -- mvd 4->5; + cn | vn | cn | pn | to_char +----+----+----+-----+------------------- + 2 | 40 | 2 | 100 | 1300.0000000 + 1 | 10 | 1 | 200 | -1.0000000 + 3 | 40 | 3 | 200 | -1.0000000 + 1 | 20 | 1 | 100 | -1.0000000 + 1 | 30 | 1 | 300 | -1.0000000 + 1 | 50 | 1 | 400 | -1.0000000 + 2 | 50 | 2 | 400 | -1.0000000 + 1 | 30 | 1 | 500 | -7.0000000 + 3 | 30 | 3 | 500 | -7.0000000 + 3 | 30 | 3 | 600 | -7.0000000 + 4 | 40 | 4 | 700 | .0000000 + 4 | 40 | 4 | 800 | .0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc-ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc+ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn desc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.pn desc rows between current row and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between current row and current row ), +win2 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 3->2; 5,1->4; 3->6; 3->7; + vn | to_char | pn | to_char | cn | to_char | to_char +----+-------------------+-----+-------------------+----+-------------------+------------------- + 40 | 2400.0000000 | 100 | .0000000 | 2 | 1.0000000 | 2400.0000000 + 10 | .0000000 | 200 | .0000000 | 1 | 1.0000000 | .0000000 + 40 | .0000000 | 200 | .0000000 | 3 | 1.0000000 | .0000000 + 20 | .0000000 | 100 | .0000000 | 1 | 1.0000000 | .0000000 + 30 | .0000000 | 300 | .0000000 | 1 | 1.0000000 | .0000000 + 50 | .0000000 | 400 | .0000000 | 1 | 1.0000000 | .0000000 + 50 | .0000000 | 400 | .0000000 | 2 | 1.0000000 | .0000000 + 30 | 5.0000000 | 500 | .0000000 | 1 | 1.0000000 | 5.0000000 + 30 | 5.0000000 | 500 | .0000000 | 3 | 1.0000000 | 5.0000000 + 30 | 5.0000000 | 600 | .0000000 | 3 | 1.0000000 | 5.0000000 + 40 | 1.0000000 | 700 | .0000000 | 4 | 1.0000000 | 1.0000000 + 40 | 1.0000000 | 800 | .0000000 | 4 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between current row and floor(ow_sale.pn-ow_sale.cn) following ); -- mvd 4->3; + qty | vn | to_char | cn +------+----+-------------------+---- + 1100 | 40 | 34.1666667 | 2 + 1 | 10 | 33.6363636 | 1 + 1 | 40 | 36.0000000 | 3 + 1 | 20 | 35.5555556 | 1 + 1 | 30 | 37.5000000 | 1 + 1 | 50 | 38.5714286 | 1 + 1 | 50 | 36.6666667 | 2 + 12 | 30 | 34.0000000 | 1 + 12 | 30 | 35.0000000 | 3 + 12 | 30 | 36.6666667 | 3 + 1 | 40 | 40.0000000 | 4 + 1 | 40 | 40.0000000 | 4 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and floor(ow_sale.prc+ow_sale.vn) following ), +win2 as (order by ow_sale.vn asc); -- mvd 7->6; 2->8; 2->9; 2->10; 7->11; + qty | vn | prc | qty | vn | to_char | pn | to_char | to_char | to_char | to_char +------+----+------+------+----+-------------------+-----+-------------------+-------------------+-------------------+------------------- + 1 | 10 | 0 | 1 | 10 | 427.2727273 | 200 | 1.0000000 | .0000000 | 1.0000000 | 800.0000000 + 1 | 20 | 0 | 1 | 20 | 477.7777778 | 100 | 2.0000000 | .0000000 | 1.0000000 | 800.0000000 + 12 | 30 | 5 | 12 | 30 | 650.0000000 | 500 | 3.0000000 | 5.0000000 | 1.0000000 | 800.0000000 + 12 | 30 | 5 | 12 | 30 | 620.0000000 | 500 | 3.0000000 | 5.0000000 | 1.0000000 | 800.0000000 + 1 | 30 | 0 | 1 | 30 | 525.0000000 | 300 | 3.0000000 | 5.0000000 | 1.0000000 | 800.0000000 + 12 | 30 | 5 | 12 | 30 | 700.0000000 | 600 | 3.0000000 | 5.0000000 | 1.0000000 | 800.0000000 + 1100 | 40 | 2400 | 1100 | 40 | 400.0000000 | 100 | 7.0000000 | 2400.0000000 | 1.0000000 | 800.0000000 + 1 | 40 | 0 | 1 | 40 | 450.0000000 | 200 | 7.0000000 | 2400.0000000 | 1.0000000 | 800.0000000 + 1 | 40 | 1 | 1 | 40 | 750.0000000 | 700 | 7.0000000 | 2400.0000000 | 1.0000000 | 800.0000000 + 1 | 40 | 1 | 1 | 40 | 800.0000000 | 800 | 7.0000000 | 2400.0000000 | 1.0000000 | 800.0000000 + 1 | 50 | 0 | 1 | 50 | 583.3333333 | 400 | 11.0000000 | 2400.0000000 | 1.0000000 | 800.0000000 + 1 | 50 | 0 | 1 | 50 | 557.1428571 | 400 | 11.0000000 | 2400.0000000 | 1.0000000 | 800.0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc),floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc rows between current row and unbounded following ); -- mvd 3,4->2; + qty | to_char | cn | pn +------+-------------------+----+----- + 1100 | 19.8333333 | 2 | 100 + 1 | 19.8181818 | 1 | 200 + 1 | 20.8000000 | 3 | 200 + 1 | 21.6666667 | 1 | 100 + 1 | 21.8750000 | 1 | 300 + 1 | 20.7142857 | 1 | 400 + 1 | 15.8333333 | 2 | 400 + 12 | 14.0000000 | 1 | 500 + 12 | 10.0000000 | 3 | 500 + 12 | 10.0000000 | 3 | 600 + 1 | 10.0000000 | 4 | 700 + 1 | 10.0000000 | 4 | 800 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn*ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows between current row and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.pn asc), +win3 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.cn asc), +win4 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc), +win5 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 5->4; 7,5->6; 2,1,3->8; 7,2,1,5->9; 7,5->10; 2->11; + vn | cn | qty | to_char | pn | to_char | prc | to_char | to_char | to_char | to_char +----+----+------+-------------------+-----+-------------------+------+-------------------+-------------------+-------------------+------------------- + 40 | 2 | 1100 | 34.1666667 | 100 | 1.0000000 | 2400 | 1.0000000 | .0000000 | 1.0000000 | 3.0000000 + 10 | 1 | 1 | 33.6363636 | 200 | 1.0000000 | 0 | 1.0000000 | .0000000 | 1.0000000 | 3.0000000 + 40 | 3 | 1 | 36.0000000 | 200 | 1.0000000 | 0 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 20 | 1 | 1 | 35.5555556 | 100 | 1.0000000 | 0 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 30 | 1 | 1 | 37.5000000 | 300 | 1.0000000 | 0 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 50 | 1 | 1 | 38.5714286 | 400 | 1.0000000 | 0 | 1.0000000 | .0000000 | 1.0000000 | 2.0000000 + 50 | 2 | 1 | 36.6666667 | 400 | 1.0000000 | 0 | 2.0000000 | .0000000 | 1.0000000 | -2.0000000 + 30 | 1 | 12 | 34.0000000 | 500 | 1.0000000 | 5 | 1.0000000 | .0000000 | 1.0000000 | -2.0000000 + 30 | 3 | 12 | 35.0000000 | 500 | 1.0000000 | 5 | 2.0000000 | .0000000 | 1.0000000 | 3.0000000 + 30 | 3 | 12 | 36.6666667 | 600 | 1.0000000 | 5 | 2.0000000 | .0000000 | 1.0000000 | .0000000 + 40 | 4 | 1 | 40.0000000 | 700 | 1.0000000 | 1 | 2.0000000 | .0000000 | 1.0000000 | .0000000 + 40 | 4 | 1 | 40.0000000 | 800 | 1.0000000 | 1 | 2.0000000 | .0000000 | 1.0000000 | .0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc-ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn desc rows between floor(ow_sale.vn) following and floor(ow_sale.cn) following ); -- mvd 3,4->2; + qty | to_char | cn | pn +------+-------------------+----+----- + 1100 | .0000000 | 2 | 100 + 1 | .0000000 | 1 | 200 + 1 | .0000000 | 3 | 200 + 1 | .0000000 | 1 | 100 + 1 | .0000000 | 1 | 300 + 1 | .0000000 | 1 | 400 + 1 | .0000000 | 2 | 400 + 12 | .0000000 | 1 | 500 + 12 | .0000000 | 3 | 500 + 12 | .0000000 | 3 | 600 + 1 | .0000000 | 4 | 700 + 1 | .0000000 | 4 | 800 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.cn desc rows between 3 following and 1 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 3 following and 1 following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.cn asc); -- mvd 5->6; 5->7; 5->8; 5->9; 5->10; 5->11; + qty | vn | prc | prc | cn | to_char | to_char | to_char | to_char | to_char | to_char +------+----+------+------+----+-------------------+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | 40 | 1 | 1 | 4 | .0000000 | .0000000 | .1666667 | .1666667 | 1.0000000 | .9090909 + 1 | 40 | 1 | 1 | 4 | .0000000 | .0000000 | .1666667 | .1666667 | 1.0000000 | .9090909 + 1 | 40 | 0 | 0 | 3 | .0000000 | .0000000 | .4166667 | .4166667 | 3.0000000 | .6363636 + 12 | 30 | 5 | 5 | 3 | .0000000 | .0000000 | .4166667 | .4166667 | 3.0000000 | .6363636 + 12 | 30 | 5 | 5 | 3 | .0000000 | .0000000 | .4166667 | .4166667 | 3.0000000 | .6363636 + 1 | 50 | 0 | 0 | 2 | .0000000 | .0000000 | .5833333 | .5833333 | 6.0000000 | .4545455 + 1100 | 40 | 2400 | 2400 | 2 | .0000000 | .0000000 | .5833333 | .5833333 | 6.0000000 | .4545455 + 1 | 50 | 0 | 0 | 1 | .0000000 | .0000000 | 1.0000000 | 1.0000000 | 8.0000000 | .0000000 + 1 | 30 | 0 | 0 | 1 | .0000000 | .0000000 | 1.0000000 | 1.0000000 | 8.0000000 | .0000000 + 1 | 20 | 0 | 0 | 1 | .0000000 | .0000000 | 1.0000000 | 1.0000000 | 8.0000000 | .0000000 + 12 | 30 | 5 | 5 | 1 | .0000000 | .0000000 | 1.0000000 | 1.0000000 | 8.0000000 | .0000000 + 1 | 10 | 0 | 0 | 1 | .0000000 | .0000000 | 1.0000000 | 1.0000000 | 8.0000000 | .0000000 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc rows between floor(ow_sale.cn/ow_sale.pn) following and unbounded following ); -- mvd 6,4->5; + cn | dt | cn | pn | to_char | vn +----+------------+----+-----+-------------------+---- + 2 | 1401-01-01 | 2 | 100 | -61.1666667 | 40 + 1 | 1401-03-01 | 1 | 200 | 29.6363636 | 10 + 3 | 1401-04-01 | 3 | 200 | 31.7000000 | 40 + 1 | 1401-05-01 | 1 | 100 | 30.8888889 | 20 + 1 | 1401-05-02 | 1 | 300 | 32.3750000 | 30 + 1 | 1401-06-01 | 1 | 400 | 32.8571429 | 50 + 2 | 1401-06-01 | 2 | 400 | 30.1666667 | 50 + 1 | 1401-06-01 | 1 | 500 | 26.4000000 | 30 + 3 | 1401-06-01 | 3 | 500 | 28.5000000 | 30 + 3 | 1401-06-01 | 3 | 600 | 32.0000000 | 30 + 4 | 1401-06-01 | 4 | 700 | 39.0000000 | 40 + 4 | 1401-06-01 | 4 | 800 | 39.0000000 | 40 +(12 rows) + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc+ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc*ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn asc rows between 1 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.cn)) OVER(partition by ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between 1 following and unbounded following ), +win2 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc); -- mvd 2->7; 9,1,4->8; 9,1,4->10; 2->11; 9,1,4->12; 9,1,4->13; + vn | cn | vn | qty | prc | qty | to_char | to_char | dt | to_char | to_char | to_char | to_char +----+----+----+------+------+------+-------------------+-------------------+------------+-------------------+-------------------+-------------------+------------------- + 40 | 2 | 40 | 1100 | 2400 | 1100 | 4.0000000 | .0000000 | 1401-01-01 | 1.0000000 | 2000.0000000 | 1.0000000 | 1102.0000000 + 10 | 1 | 10 | 1 | 0 | 1 | 4.3000000 | 1.0000000 | 1401-03-01 | 1.0000000 | 2000.0000000 | 1.0000000 | 2.0000000 + 40 | 3 | 40 | 1 | 0 | 1 | 4.6666667 | 1.0000000 | 1401-04-01 | 1.0000000 | 2000.0000000 | 1.0000000 | 4.0000000 + 20 | 1 | 20 | 1 | 0 | 1 | 5.1250000 | 1.0000000 | 1401-05-01 | 1.0000000 | 9000.0000000 | 1.0000000 | 2.0000000 + 30 | 1 | 30 | 1 | 0 | 1 | 5.7142857 | 1.0000000 | 1401-05-02 | 1.0000000 | 15000.0000000 | 1.0000000 | 2.0000000 + 50 | 1 | 50 | 1 | 0 | 1 | 6.5000000 | 1.0000000 | 1401-06-01 | 1.0000000 | 15000.0000000 | 1.0000000 | 2.0000000 + 50 | 2 | 50 | 1 | 0 | 1 | 7.6000000 | 1.0000000 | 1401-06-01 | 2.0000000 | 15000.0000000 | 2.0000000 | 2.0000000 + 30 | 1 | 30 | 12 | 5 | 12 | 6.5000000 | .0000000 | 1401-06-01 | 1.0000000 | 15000.0000000 | 1.0000000 | 13.0000000 + 30 | 3 | 30 | 12 | 5 | 12 | 4.6666667 | .0000000 | 1401-06-01 | 2.0000000 | 18000.0000000 | 2.0000000 | 13.0000000 + 30 | 3 | 30 | 12 | 5 | 12 | 1.0000000 | .0000000 | 1401-06-01 | 3.0000000 | 28000.0000000 | 3.0000000 | 13.0000000 + 40 | 4 | 40 | 1 | 1 | 1 | 1.0000000 | .0000000 | 1401-06-01 | 1.0000000 | 32000.0000000 | 1.0000000 | 5.0000000 + 40 | 4 | 40 | 1 | 1 | 1 | .0000000 | .0000000 | 1401-06-01 | 2.0000000 | .0000000 | 2.0000000 | 5.0000000 +(12 rows) + +-- REGR_AVGX() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn/ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.cn order by ow_sale.cn asc,ow_sale.cn asc,ow_sale.cn asc); -- mvd 4,5,6,1->3; + pn | pn | to_char | dt | cn | vn +-----+-----+-------------------+------------+----+---- + 100 | 100 | .0000000 | 1401-05-01 | 1 | 20 + 200 | 200 | .0000000 | 1401-03-01 | 1 | 10 + 400 | 400 | .0000000 | 1401-06-01 | 2 | 50 + 200 | 200 | .0000000 | 1401-04-01 | 3 | 40 + 600 | 600 | 5.0000000 | 1401-06-01 | 3 | 30 + 800 | 800 | 1.0000000 | 1401-06-01 | 4 | 40 + 300 | 300 | .0000000 | 1401-05-02 | 1 | 30 + 400 | 400 | .0000000 | 1401-06-01 | 1 | 50 + 500 | 500 | 5.0000000 | 1401-06-01 | 1 | 30 + 100 | 100 | 2400.0000000 | 1401-01-01 | 2 | 40 + 500 | 500 | 5.0000000 | 1401-06-01 | 3 | 30 + 700 | 700 | 1.0000000 | 1401-06-01 | 4 | 40 +(12 rows) + +-- REGR_AVGX() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn+ow_sale.qty),floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty,ow_sale.vn +, +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.pn order by ow_sale.cn asc,ow_sale.cn desc,ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.pn order by ow_sale.cn asc,ow_sale.cn desc,ow_sale.vn desc); -- mvd 6,4,7,8,2->5; 6,4,7,8,2->9; + dt | pn | dt | cn | to_char | prc | qty | vn | to_char +------------+-----+------------+----+-------------------+------+------+----+------------------- + 1401-03-01 | 200 | 1401-03-01 | 1 | 10.0000000 | 0 | 1 | 10 | 1.0000000 + 1401-05-01 | 100 | 1401-05-01 | 1 | 20.0000000 | 0 | 1 | 20 | 1.0000000 + 1401-06-01 | 500 | 1401-06-01 | 1 | 30.0000000 | 5 | 12 | 30 | .5000000 + 1401-06-01 | 500 | 1401-06-01 | 3 | 60.0000000 | 5 | 12 | 30 | 1.0000000 + 1401-04-01 | 200 | 1401-04-01 | 3 | 120.0000000 | 0 | 1 | 40 | 1.0000000 + 1401-06-01 | 800 | 1401-06-01 | 4 | 160.0000000 | 1 | 1 | 40 | 1.0000000 + 1401-05-02 | 300 | 1401-05-02 | 1 | 30.0000000 | 0 | 1 | 30 | 1.0000000 + 1401-06-01 | 600 | 1401-06-01 | 3 | 90.0000000 | 5 | 12 | 30 | 1.0000000 + 1401-01-01 | 100 | 1401-01-01 | 2 | 80.0000000 | 2400 | 1100 | 40 | 1.0000000 + 1401-06-01 | 700 | 1401-06-01 | 4 | 160.0000000 | 1 | 1 | 40 | 1.0000000 + 1401-06-01 | 400 | 1401-06-01 | 1 | 50.0000000 | 0 | 1 | 50 | .5000000 + 1401-06-01 | 400 | 1401-06-01 | 2 | 75.0000000 | 0 | 1 | 50 | 1.0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.cn order by ow_sale.vn desc range unbounded preceding ); -- mvd 7,4,8,1->6; + pn | qty | pn | dt | prc | to_char | cn | vn +-----+------+-----+------------+------+-------------------+----+---- + 100 | 1 | 100 | 1401-05-01 | 0 | .0000000 | 1 | 20 + 200 | 1 | 200 | 1401-03-01 | 0 | .0000000 | 1 | 10 + 200 | 1 | 200 | 1401-04-01 | 0 | .0000000 | 3 | 40 + 400 | 1 | 400 | 1401-06-01 | 0 | .0000000 | 2 | 50 + 600 | 12 | 600 | 1401-06-01 | 5 | 5.0000000 | 3 | 30 + 800 | 1 | 800 | 1401-06-01 | 1 | 1.0000000 | 4 | 40 + 100 | 1100 | 100 | 1401-01-01 | 2400 | 2400.0000000 | 2 | 40 + 300 | 1 | 300 | 1401-05-02 | 0 | .0000000 | 1 | 30 + 400 | 1 | 400 | 1401-06-01 | 0 | .0000000 | 1 | 50 + 500 | 12 | 500 | 1401-06-01 | 5 | 5.0000000 | 1 | 30 + 500 | 12 | 500 | 1401-06-01 | 5 | 5.0000000 | 3 | 30 + 700 | 1 | 700 | 1401-06-01 | 1 | 1.0000000 | 4 | 40 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty order by ow_sale.cn asc range unbounded preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 3,4->2; 6->5; + dt | to_char | cn | qty | to_char | pn +------------+-------------------+----+------+-------------------+----- + 1401-01-01 | 100.0000000 | 2 | 1100 | .0000000 | 100 + 1401-03-01 | 250.0000000 | 1 | 1 | .0000000 | 200 + 1401-04-01 | 200.0000000 | 3 | 1 | .0000000 | 200 + 1401-05-01 | 250.0000000 | 1 | 1 | .0000000 | 100 + 1401-05-02 | 250.0000000 | 1 | 1 | .0000000 | 300 + 1401-06-01 | 250.0000000 | 1 | 1 | .0000000 | 400 + 1401-06-01 | 400.0000000 | 2 | 1 | .0000000 | 400 + 1401-06-01 | 500.0000000 | 1 | 12 | .0000000 | 500 + 1401-06-01 | 550.0000000 | 3 | 12 | .0000000 | 500 + 1401-06-01 | 550.0000000 | 3 | 12 | .0000000 | 600 + 1401-06-01 | 750.0000000 | 4 | 1 | .0000000 | 700 + 1401-06-01 | 750.0000000 | 4 | 1 | .0000000 | 800 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty-ow_sale.vn),floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.cn asc range floor(ow_sale.cn*ow_sale.qty) preceding ); -- mvd 4,5->3; + prc | qty | to_char | cn | dt +------+------+-------------------+----+------------ + 0 | 1 | 203.0000000 | 3 | 1401-04-01 + 0 | 1 | 101.0000000 | 1 | 1401-05-01 + 0 | 1 | 402.0000000 | 2 | 1401-06-01 + 1 | 1 | 754.0000000 | 4 | 1401-06-01 + 1 | 1 | 754.0000000 | 4 | 1401-06-01 + 2400 | 1100 | 102.0000000 | 2 | 1401-01-01 + 0 | 1 | 201.0000000 | 1 | 1401-03-01 + 0 | 1 | 301.0000000 | 1 | 1401-05-02 + 5 | 12 | 451.0000000 | 1 | 1401-06-01 + 0 | 1 | 451.0000000 | 1 | 1401-06-01 + 5 | 12 | 553.0000000 | 3 | 1401-06-01 + 5 | 12 | 553.0000000 | 3 | 1401-06-01 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc),floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.qty)) OVER(partition by ow_sale.pn order by ow_sale.cn asc range floor(ow_sale.qty+ow_sale.vn) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn asc range floor(ow_sale.qty+ow_sale.vn) preceding ); -- mvd 1,5->4; 1,5->6; + cn | vn | dt | to_char | pn | to_char +----+----+------------+-------------------+-----+------------------- + 1 | 30 | 1401-05-02 | 1.0000000 | 300 | 299.0000000 + 1 | 50 | 1401-06-01 | 1.0000000 | 400 | 399.0000000 + 2 | 50 | 1401-06-01 | 1.0000000 | 400 | 399.0000000 + 1 | 30 | 1401-06-01 | 17.0000000 | 500 | 488.0000000 + 3 | 30 | 1401-06-01 | 17.0000000 | 500 | 488.0000000 + 4 | 40 | 1401-06-01 | 2.0000000 | 800 | 799.0000000 + 1 | 20 | 1401-05-01 | 1.0000000 | 100 | 99.0000000 + 2 | 40 | 1401-01-01 | 1750.5000000 | 100 | 99.0000000 + 1 | 10 | 1401-03-01 | 1.0000000 | 200 | 199.0000000 + 3 | 40 | 1401-04-01 | 1.0000000 | 200 | 199.0000000 + 3 | 30 | 1401-06-01 | 17.0000000 | 600 | 588.0000000 + 4 | 40 | 1401-06-01 | 2.0000000 | 700 | 699.0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.cn asc range current row ); -- mvd 3,4->2; + vn | to_char | dt | cn +----+-------------------+------------+---- + 20 | .0000000 | 1401-05-01 | 1 + 50 | .0000000 | 1401-06-01 | 2 + 40 | .0000000 | 1401-04-01 | 3 + 40 | .0000000 | 1401-06-01 | 4 + 40 | .0000000 | 1401-06-01 | 4 + 10 | .0000000 | 1401-03-01 | 1 + 30 | .0000000 | 1401-05-02 | 1 + 50 | .0000000 | 1401-06-01 | 1 + 30 | .0000000 | 1401-06-01 | 1 + 40 | .0000000 | 1401-01-01 | 2 + 30 | .0000000 | 1401-06-01 | 3 + 30 | .0000000 | 1401-06-01 | 3 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn-ow_sale.pn),floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.pn desc range between unbounded preceding and floor(ow_sale.cn*ow_sale.cn) preceding ); -- mvd 4,1->5; + pn | pn | vn | cn | to_char +-----+-----+----+----+------------------- + 400 | 400 | 50 | 2 | .0000000 + 100 | 100 | 40 | 2 | 2500.0000000 + 800 | 800 | 40 | 4 | .0000000 + 700 | 700 | 40 | 4 | 1600.0000000 + 500 | 500 | 30 | 1 | .0000000 + 400 | 400 | 50 | 1 | 900.0000000 + 300 | 300 | 30 | 1 | 1700.0000000 + 200 | 200 | 10 | 1 | 1433.3333333 + 100 | 100 | 20 | 1 | 1100.0000000 + 600 | 600 | 30 | 3 | .0000000 + 500 | 500 | 30 | 3 | 900.0000000 + 200 | 200 | 40 | 3 | 900.0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc+ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.vn order by ow_sale.cn asc range between unbounded preceding and 1 preceding ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc), +win3 as (order by ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.vn desc), +win5 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.dt order by ow_sale.pn asc); -- mvd 7,4,1,5,3->6; 7,4,5,3->8; 7,4,5,3->9; 7->10; 5->11; 4,1,3->12; + qty | qty | pn | dt | vn | to_char | cn | to_char | to_char | to_char | to_char | to_char +------+------+-----+------------+----+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 1100 | 1100 | 100 | 1401-01-01 | 40 | .0000000 | 2 | .0000000 | 1.0000000 | .4545455 | .0000000 | 1.0000000 + 1 | 1 | 200 | 1401-03-01 | 10 | .0000000 | 1 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 200 | 1401-04-01 | 40 | .0000000 | 3 | .0000000 | 1.0000000 | .6363636 | 1.0000000 | 1.0000000 + 1 | 1 | 100 | 1401-05-01 | 20 | .0000000 | 1 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 300 | 1401-05-02 | 30 | .0000000 | 1 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 400 | 1401-06-01 | 50 | .0000000 | 1 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 400 | 1401-06-01 | 50 | 8.0000000 | 2 | .0000000 | 1.0000000 | .4545455 | 1.0000000 | 1.0000000 + 12 | 12 | 500 | 1401-06-01 | 30 | .0000000 | 1 | .0000000 | 1.0000000 | .0000000 | .0000000 | 1.0000000 + 12 | 12 | 500 | 1401-06-01 | 30 | 16.0000000 | 3 | .0000000 | 1.0000000 | .6363636 | .0000000 | 1.0000000 + 12 | 12 | 600 | 1401-06-01 | 30 | .0000000 | 3 | .0000000 | 1.0000000 | .6363636 | .0000000 | 1.0000000 + 1 | 1 | 700 | 1401-06-01 | 40 | .0000000 | 4 | .0000000 | 1.0000000 | .9090909 | 12.0000000 | 1.0000000 + 1 | 1 | 800 | 1401-06-01 | 40 | .0000000 | 4 | .0000000 | 1.0000000 | .9090909 | 12.0000000 | 1.0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.pn desc range between unbounded preceding and current row ); -- mvd 1->5; + pn | vn | pn | cn | to_char +-----+----+-----+----+------------------- + 300 | 30 | 300 | 1 | 301.0000000 + 400 | 50 | 400 | 2 | 401.5000000 + 400 | 50 | 400 | 1 | 401.5000000 + 500 | 30 | 500 | 1 | 502.0000000 + 500 | 30 | 500 | 3 | 502.0000000 + 800 | 40 | 800 | 4 | 804.0000000 + 100 | 20 | 100 | 1 | 101.5000000 + 100 | 40 | 100 | 2 | 101.5000000 + 200 | 10 | 200 | 1 | 202.0000000 + 200 | 40 | 200 | 3 | 202.0000000 + 600 | 30 | 600 | 3 | 603.0000000 + 700 | 40 | 700 | 4 | 704.0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn-ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.cn) following ); -- mvd 1,8->7; + cn | cn | pn | qty | prc | pn | to_char | vn +----+----+-----+------+------+-----+-------------------+---- + 2 | 2 | 400 | 1 | 0 | 400 | .0000000 | 50 + 2 | 2 | 100 | 1100 | 2400 | 100 | 1200.0000000 | 40 + 4 | 4 | 800 | 1 | 1 | 800 | 1.0000000 | 40 + 4 | 4 | 700 | 1 | 1 | 700 | 1.0000000 | 40 + 1 | 1 | 400 | 1 | 0 | 400 | .0000000 | 50 + 1 | 1 | 300 | 1 | 0 | 300 | 1.6666667 | 30 + 1 | 1 | 500 | 12 | 5 | 500 | 1.6666667 | 30 + 1 | 1 | 100 | 1 | 0 | 100 | 1.2500000 | 20 + 1 | 1 | 200 | 1 | 0 | 200 | 1.0000000 | 10 + 3 | 3 | 200 | 1 | 0 | 200 | .0000000 | 40 + 3 | 3 | 600 | 12 | 5 | 600 | 3.3333333 | 30 + 3 | 3 | 500 | 12 | 5 | 500 | 3.3333333 | 30 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty+ow_sale.prc),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.cn desc range between unbounded preceding and unbounded following ); -- mvd 6,7,3->5; + dt | qty | pn | pn | to_char | cn | vn +------------+------+-----+-----+-------------------+----+---- + 1401-01-01 | 1100 | 100 | 100 | -2360.0000000 | 2 | 40 + 1401-05-02 | 1 | 300 | 300 | 30.0000000 | 1 | 30 + 1401-06-01 | 1 | 400 | 400 | 50.0000000 | 1 | 50 + 1401-06-01 | 12 | 500 | 500 | 25.0000000 | 1 | 30 + 1401-06-01 | 12 | 500 | 500 | 25.0000000 | 3 | 30 + 1401-06-01 | 1 | 700 | 700 | 39.0000000 | 4 | 40 + 1401-05-01 | 1 | 100 | 100 | 20.0000000 | 1 | 20 + 1401-03-01 | 1 | 200 | 200 | 10.0000000 | 1 | 10 + 1401-04-01 | 1 | 200 | 200 | 40.0000000 | 3 | 40 + 1401-06-01 | 1 | 400 | 400 | 50.0000000 | 2 | 50 + 1401-06-01 | 12 | 600 | 600 | 25.0000000 | 3 | 30 + 1401-06-01 | 1 | 800 | 800 | 39.0000000 | 4 | 40 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn+ow_sale.qty),floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn/ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.cn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,4,5->2; 7,3,8,5->6; 7,3,8,5->9; 3,4,5->10; + vn | to_char | dt | cn | pn | to_char | prc | qty | to_char | to_char +----+-------------------+------------+----+-----+-------------------+------+------+-------------------+------------------- + 10 | 2.0000000 | 1401-03-01 | 1 | 200 | .0000000 | 0 | 1 | 11.0000000 | 200.0000000 + 40 | 1102.0000000 | 1401-01-01 | 2 | 100 | .0000000 | 2400 | 1100 | 42.0000000 | 100.0000000 + 50 | 3.0000000 | 1401-06-01 | 2 | 400 | .0000000 | 0 | 1 | 52.0000000 | 400.0000000 + 30 | 15.0000000 | 1401-06-01 | 3 | 600 | .0000000 | 5 | 12 | 33.0000000 | 600.0000000 + 40 | 5.0000000 | 1401-06-01 | 4 | 800 | .0000000 | 1 | 1 | 44.0000000 | 800.0000000 + 20 | 2.0000000 | 1401-05-01 | 1 | 100 | .0000000 | 0 | 1 | 21.0000000 | 100.0000000 + 30 | 2.0000000 | 1401-05-02 | 1 | 300 | .0000000 | 0 | 1 | 31.0000000 | 300.0000000 + 50 | 2.0000000 | 1401-06-01 | 1 | 400 | .0000000 | 0 | 1 | 51.0000000 | 400.0000000 + 30 | 13.0000000 | 1401-06-01 | 1 | 500 | .0000000 | 5 | 12 | 31.0000000 | 500.0000000 + 40 | 4.0000000 | 1401-04-01 | 3 | 200 | .0000000 | 0 | 1 | 43.0000000 | 200.0000000 + 30 | 15.0000000 | 1401-06-01 | 3 | 500 | .0000000 | 5 | 12 | 33.0000000 | 500.0000000 + 40 | 5.0000000 | 1401-06-01 | 4 | 700 | .0000000 | 1 | 1 | 44.0000000 | 700.0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc),floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.vn order by ow_sale.pn asc range between floor(ow_sale.vn) preceding and floor(ow_sale.qty*ow_sale.qty) preceding ); -- mvd 1,5,3,6->4; + cn | cn | vn | to_char | qty | pn +----+----+----+-------------------+------+----- + 1 | 1 | 10 | .0000000 | 1 | 200 + 1 | 1 | 20 | .0000000 | 1 | 100 + 1 | 1 | 30 | .0000000 | 1 | 300 + 3 | 3 | 40 | .0000000 | 1 | 200 + 2 | 2 | 40 | .0000000 | 1100 | 100 + 1 | 1 | 50 | .0000000 | 1 | 400 + 1 | 1 | 30 | .0000000 | 12 | 500 + 3 | 3 | 30 | .0000000 | 12 | 500 + 3 | 3 | 30 | .0000000 | 12 | 600 + 4 | 4 | 40 | .0000000 | 1 | 700 + 4 | 4 | 40 | .0000000 | 1 | 800 + 2 | 2 | 50 | .0000000 | 1 | 400 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.cn order by ow_sale.vn desc range between 1 preceding and floor(ow_sale.vn+ow_sale.cn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.cn order by ow_sale.vn desc range between 1 preceding and floor(ow_sale.vn+ow_sale.cn) preceding ); -- mvd 1,8,9,4->7; 1,8,9,4->10; 1,8,9,4->11; + cn | qty | cn | pn | cn | pn | to_char | dt | vn | to_char | to_char +----+------+----+-----+----+-----+-------------------+------------+----+-------------------+------------------- + 2 | 1100 | 2 | 100 | 2 | 100 | .0000000 | 1401-01-01 | 40 | .0000000 | .0000000 + 1 | 1 | 1 | 200 | 1 | 200 | .0000000 | 1401-03-01 | 10 | .0000000 | .0000000 + 2 | 1 | 2 | 400 | 2 | 400 | .0000000 | 1401-06-01 | 50 | .0000000 | .0000000 + 3 | 12 | 3 | 600 | 3 | 600 | .0000000 | 1401-06-01 | 30 | .0000000 | .0000000 + 4 | 1 | 4 | 800 | 4 | 800 | .0000000 | 1401-06-01 | 40 | .0000000 | .0000000 + 1 | 1 | 1 | 100 | 1 | 100 | .0000000 | 1401-05-01 | 20 | .0000000 | .0000000 + 3 | 1 | 3 | 200 | 3 | 200 | .0000000 | 1401-04-01 | 40 | .0000000 | .0000000 + 1 | 1 | 1 | 300 | 1 | 300 | .0000000 | 1401-05-02 | 30 | .0000000 | .0000000 + 1 | 1 | 1 | 400 | 1 | 400 | .0000000 | 1401-06-01 | 50 | .0000000 | .0000000 + 1 | 12 | 1 | 500 | 1 | 500 | .0000000 | 1401-06-01 | 30 | .0000000 | .0000000 + 3 | 12 | 3 | 500 | 3 | 500 | .0000000 | 1401-06-01 | 30 | .0000000 | .0000000 + 4 | 1 | 4 | 700 | 4 | 700 | .0000000 | 1401-06-01 | 40 | .0000000 | .0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn+ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn order by ow_sale.cn desc range between floor(ow_sale.vn) preceding and current row ); -- mvd 4,6->5; + qty | qty | qty | prc | to_char | cn +------+------+------+------+-------------------+---- + 1 | 1 | 1 | 0 | 1.0000000 | 2 + 1100 | 1100 | 1100 | 2400 | 1100.0000000 | 2 + 1 | 1 | 1 | 0 | 1.0000000 | 1 + 1 | 1 | 1 | 0 | 1.0000000 | 1 + 1 | 1 | 1 | 0 | 1.0000000 | 1 + 1 | 1 | 1 | 0 | 1.0000000 | 1 + 1 | 1 | 1 | 0 | 1.0000000 | 3 + 1 | 1 | 1 | 1 | 1.0000000 | 4 + 1 | 1 | 1 | 1 | 1.0000000 | 4 + 12 | 12 | 12 | 5 | 12.0000000 | 1 + 12 | 12 | 12 | 5 | 12.0000000 | 3 + 12 | 12 | 12 | 5 | 12.0000000 | 3 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc),floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc order by ow_sale.cn desc range between floor(ow_sale.cn+ow_sale.vn) preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (order by ow_sale.cn desc); -- mvd 5,6,7->4; 1->8; 1->9; 6->10; 1->11; + pn | pn | qty | to_char | prc | cn | vn | to_char | to_char | to_char | to_char +-----+-----+------+-------------------+------+----+----+-------------------+-------------------+-------------------+------------------- + 100 | 100 | 1100 | 1102.0000000 | 2400 | 2 | 40 | .0000000 | 110000.0000000 | 6.0000000 | 1.0000000 + 200 | 200 | 1 | 2.0000000 | 0 | 1 | 10 | .0000000 | 200.0000000 | 8.0000000 | 2.0000000 + 200 | 200 | 1 | 4.0000000 | 0 | 3 | 40 | .0000000 | 200.0000000 | 3.0000000 | 3.0000000 + 100 | 100 | 1 | 2.0000000 | 0 | 1 | 20 | .0000000 | 100.0000000 | 8.0000000 | 4.0000000 + 300 | 300 | 1 | 2.0000000 | 0 | 1 | 30 | .0000000 | 100.0000000 | 8.0000000 | 5.0000000 + 400 | 400 | 1 | 2.5000000 | 0 | 1 | 50 | .0000000 | 100.0000000 | 8.0000000 | 6.0000000 + 400 | 400 | 1 | 3.0000000 | 0 | 2 | 50 | .0000000 | 100.0000000 | 6.0000000 | 7.0000000 + 500 | 500 | 12 | 14.3333333 | 5 | 1 | 30 | .0000000 | 100.0000000 | 8.0000000 | 8.0000000 + 500 | 500 | 12 | 15.0000000 | 5 | 3 | 30 | .0000000 | 100.0000000 | 3.0000000 | 9.0000000 + 600 | 600 | 12 | 15.0000000 | 5 | 3 | 30 | .0000000 | 100.0000000 | 3.0000000 | 10.0000000 + 700 | 700 | 1 | 5.0000000 | 1 | 4 | 40 | .0000000 | 100.0000000 | 1.0000000 | 11.0000000 + 800 | 800 | 1 | 5.0000000 | 1 | 4 | 40 | .0000000 | 100.0000000 | 1.0000000 | 12.0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.vn desc range between 0 preceding and 3 following ); -- mvd 3,4,1,5,6->2; + vn | to_char | prc | dt | qty | pn +----+-------------------+------+------------+------+----- + 40 | 120.0000000 | 0 | 1401-04-01 | 1 | 200 + 20 | 20.0000000 | 0 | 1401-05-01 | 1 | 100 + 30 | 30.0000000 | 0 | 1401-05-02 | 1 | 300 + 50 | 75.0000000 | 0 | 1401-06-01 | 1 | 400 + 50 | 75.0000000 | 0 | 1401-06-01 | 1 | 400 + 30 | 90.0000000 | 5 | 1401-06-01 | 12 | 600 + 40 | 160.0000000 | 1 | 1401-06-01 | 1 | 700 + 40 | 80.0000000 | 2400 | 1401-01-01 | 1100 | 100 + 10 | 10.0000000 | 0 | 1401-03-01 | 1 | 200 + 30 | 60.0000000 | 5 | 1401-06-01 | 12 | 500 + 30 | 60.0000000 | 5 | 1401-06-01 | 12 | 500 + 40 | 160.0000000 | 1 | 1401-06-01 | 1 | 800 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc order by ow_sale.vn desc range between 1 preceding and 3 following ), +win2 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc); -- mvd 4,1,5->3; 7,5,8->6; + dt | dt | to_char | prc | vn | to_char | cn | qty +------------+------------+-------------------+------+----+-------------------+----+------ + 1401-03-01 | 1401-03-01 | .0000000 | 0 | 10 | 1.0000000 | 1 | 1 + 1401-05-02 | 1401-05-02 | .0000000 | 0 | 30 | 1.0000000 | 1 | 1 + 1401-06-01 | 1401-06-01 | .0000000 | 0 | 50 | 1.0000000 | 1 | 1 + 1401-06-01 | 1401-06-01 | .0000000 | 0 | 50 | 1.0000000 | 2 | 1 + 1401-06-01 | 1401-06-01 | 5.0000000 | 5 | 30 | 1.0000000 | 1 | 12 + 1401-06-01 | 1401-06-01 | 5.0000000 | 5 | 30 | 1.0000000 | 3 | 12 + 1401-06-01 | 1401-06-01 | 5.0000000 | 5 | 30 | 1.0000000 | 3 | 12 + 1401-01-01 | 1401-01-01 | 2400.0000000 | 2400 | 40 | 1.0000000 | 2 | 1100 + 1401-04-01 | 1401-04-01 | .0000000 | 0 | 40 | 1.0000000 | 3 | 1 + 1401-05-01 | 1401-05-01 | .0000000 | 0 | 20 | 1.0000000 | 1 | 1 + 1401-06-01 | 1401-06-01 | 1.0000000 | 1 | 40 | 1.0000000 | 4 | 1 + 1401-06-01 | 1401-06-01 | 1.0000000 | 1 | 40 | 1.0000000 | 4 | 1 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn-ow_sale.prc),floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc range between 4 preceding and unbounded following ); -- mvd 2,3,1,8->7; + qty | cn | dt | vn | cn | cn | to_char | pn +------+----+------------+----+----+----+-------------------+----- + 1 | 3 | 1401-04-01 | 40 | 3 | 3 | 1.0000000 | 200 + 1 | 1 | 1401-05-01 | 20 | 1 | 1 | 1.0000000 | 100 + 1 | 1 | 1401-05-02 | 30 | 1 | 1 | 1.0000000 | 300 + 1 | 2 | 1401-06-01 | 50 | 2 | 2 | 1.0000000 | 400 + 1 | 1 | 1401-06-01 | 50 | 1 | 1 | 1.0000000 | 400 + 1 | 4 | 1401-06-01 | 40 | 4 | 4 | 2.0000000 | 800 + 12 | 3 | 1401-06-01 | 30 | 3 | 3 | 17.0000000 | 600 + 1 | 1 | 1401-03-01 | 10 | 1 | 1 | 1.0000000 | 200 + 1 | 4 | 1401-06-01 | 40 | 4 | 4 | 2.0000000 | 700 + 12 | 3 | 1401-06-01 | 30 | 3 | 3 | 17.0000000 | 500 + 12 | 1 | 1401-06-01 | 30 | 1 | 1 | 17.0000000 | 500 + 1100 | 2 | 1401-01-01 | 40 | 2 | 2 | 3500.0000000 | 100 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc+ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn-ow_sale.qty)) OVER(partition by ow_sale.qty,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.pn asc range between floor(ow_sale.prc) preceding and unbounded following ), +win2 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.pn asc); -- mvd 4,2->3; 6,7,8->5; 6,7,8->9; 2->10; 6,7,8->11; + prc | pn | to_char | dt | to_char | cn | vn | qty | to_char | to_char | to_char +------+-----+-------------------+------------+-------------------+----+----+------+-------------------+-------------------+------------------- + 2400 | 100 | 40.0000000 | 1401-01-01 | .0000000 | 2 | 40 | 1100 | 1.0000000 | 1.0000000 | 1.0000000 + 0 | 100 | 20.0000000 | 1401-05-01 | 1.0000000 | 1 | 20 | 1 | 1.0000000 | 2.0000000 | 1.0000000 + 0 | 200 | 40.0000000 | 1401-04-01 | 1.0000000 | 3 | 40 | 1 | 1.0000000 | 3.0000000 | 1.0000000 + 0 | 200 | 10.0000000 | 1401-03-01 | 1.0000000 | 1 | 10 | 1 | 1.0000000 | 4.0000000 | 1.0000000 + 0 | 300 | 30.0000000 | 1401-05-02 | 1.0000000 | 1 | 30 | 1 | 1.0000000 | 5.0000000 | 1.0000000 + 0 | 400 | 38.5714286 | 1401-06-01 | 1.0000000 | 2 | 50 | 1 | 1.0000000 | 6.0000000 | 1.0000000 + 0 | 400 | 38.5714286 | 1401-06-01 | 1.0000000 | 1 | 50 | 1 | 1.0000000 | 7.0000000 | 1.0000000 + 5 | 500 | 34.0000000 | 1401-06-01 | .0000000 | 3 | 30 | 12 | 1.0000000 | 8.0000000 | 1.0000000 + 5 | 500 | 34.0000000 | 1401-06-01 | .0000000 | 1 | 30 | 12 | 1.0000000 | 9.0000000 | 1.0000000 + 5 | 600 | 36.6666667 | 1401-06-01 | .0000000 | 3 | 30 | 12 | 2.0000000 | 10.0000000 | 2.0000000 + 1 | 700 | 40.0000000 | 1401-06-01 | .0000000 | 4 | 40 | 1 | 1.0000000 | 11.0000000 | 1.0000000 + 1 | 800 | 40.0000000 | 1401-06-01 | .0000000 | 4 | 40 | 1 | 2.0000000 | 12.0000000 | 2.0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc),floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.pn desc range between current row and current row ); -- mvd 8,6,1,3->7; + qty | prc | pn | prc | pn | vn | to_char | cn +------+------+-----+------+-----+----+-------------------+---- + 1 | 0 | 200 | 0 | 200 | 10 | 11.0000000 | 1 + 1 | 0 | 100 | 0 | 100 | 20 | 21.0000000 | 1 + 1 | 0 | 400 | 0 | 400 | 50 | 51.0000000 | 2 + 1 | 0 | 200 | 0 | 200 | 40 | 41.0000000 | 3 + 12 | 5 | 600 | 5 | 600 | 30 | 42.0000000 | 3 + 1 | 1 | 800 | 1 | 800 | 40 | 41.0000000 | 4 + 1 | 0 | 300 | 0 | 300 | 30 | 31.0000000 | 1 + 1 | 0 | 400 | 0 | 400 | 50 | 51.0000000 | 1 + 12 | 5 | 500 | 5 | 500 | 30 | 42.0000000 | 1 + 1100 | 2400 | 100 | 2400 | 100 | 40 | 1140.0000000 | 2 + 12 | 5 | 500 | 5 | 500 | 30 | 42.0000000 | 3 + 1 | 1 | 700 | 1 | 700 | 40 | 41.0000000 | 4 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.qty,ow_sale.dt,ow_sale.qty,ow_sale.cn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn asc range between current row and current row ), +win2 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.qty,ow_sale.cn order by ow_sale.cn asc), +win3 as (order by ow_sale.pn asc), +win4 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.cn order by ow_sale.cn desc); -- mvd 5,6->4; 2,5,8->7; 1->9; 2,5,8->10; 2,6,1->11; 2,5,8->12; + pn | cn | cn | to_char | dt | vn | to_char | qty | to_char | to_char | to_char | to_char +-----+----+----+-------------------+------------+----+-------------------+------+-------------------+-------------------+-------------------+------------------- + 100 | 2 | 2 | 100.0000000 | 1401-01-01 | 40 | 1.0000000 | 1100 | .1666667 | 2400.0000000 | 1.0000000 | 1.0000000 + 100 | 1 | 1 | 100.0000000 | 1401-05-01 | 20 | 1.0000000 | 1 | .1666667 | .0000000 | 1.0000000 | 1.0000000 + 200 | 3 | 3 | 200.0000000 | 1401-04-01 | 40 | 1.0000000 | 1 | .3333333 | .0000000 | 1.0000000 | 1.0000000 + 200 | 1 | 1 | 200.0000000 | 1401-03-01 | 10 | 1.0000000 | 1 | .3333333 | .0000000 | 1.0000000 | 1.0000000 + 300 | 1 | 1 | 300.0000000 | 1401-05-02 | 30 | 1.0000000 | 1 | .4166667 | .0000000 | 1.0000000 | 1.0000000 + 400 | 2 | 2 | 400.0000000 | 1401-06-01 | 50 | 1.0000000 | 1 | .5833333 | .0000000 | 1.0000000 | 1.0000000 + 400 | 1 | 1 | 400.0000000 | 1401-06-01 | 50 | 1.0000000 | 1 | .5833333 | .0000000 | 1.0000000 | 1.0000000 + 500 | 3 | 3 | 533.3333333 | 1401-06-01 | 30 | 1.0000000 | 12 | .7500000 | 5.0000000 | 1.0000000 | 1.0000000 + 500 | 1 | 1 | 533.3333333 | 1401-06-01 | 30 | 1.0000000 | 12 | .7500000 | 5.0000000 | 1.0000000 | 1.0000000 + 600 | 3 | 3 | 533.3333333 | 1401-06-01 | 30 | 1.0000000 | 12 | .8333333 | 5.0000000 | 1.0000000 | 1.0000000 + 700 | 4 | 4 | 750.0000000 | 1401-06-01 | 40 | 1.0000000 | 1 | .9166667 | 1.0000000 | 1.0000000 | 1.0000000 + 800 | 4 | 4 | 750.0000000 | 1401-06-01 | 40 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.pn desc range between current row and floor(ow_sale.prc) following ); -- mvd 4,5,6,7->3; + qty | qty | to_char | prc | cn | vn | pn +------+------+-------------------+------+----+----+----- + 1 | 1 | .0000000 | 0 | 1 | 30 | 300 + 1 | 1 | .0000000 | 0 | 1 | 50 | 400 + 1 | 1 | 1.0000000 | 1 | 4 | 40 | 700 + 12 | 12 | 5.0000000 | 5 | 1 | 30 | 500 + 12 | 12 | 5.0000000 | 5 | 3 | 30 | 500 + 1100 | 1100 | 2400.0000000 | 2400 | 2 | 40 | 100 + 1 | 1 | .0000000 | 0 | 1 | 10 | 200 + 1 | 1 | .0000000 | 0 | 1 | 20 | 100 + 1 | 1 | .0000000 | 0 | 3 | 40 | 200 + 1 | 1 | .0000000 | 0 | 2 | 50 | 400 + 1 | 1 | 1.0000000 | 1 | 4 | 40 | 800 + 12 | 12 | 5.0000000 | 5 | 3 | 30 | 600 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.cn asc range between current row and floor(ow_sale.cn) following ), +win2 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc); -- mvd 4,5,2->3; 4,2,7->6; 4,5,2->8; + pn | vn | to_char | cn | dt | to_char | qty | to_char +-----+----+-------------------+----+------------+-------------------+------+------------------- + 200 | 40 | .0000000 | 3 | 1401-04-01 | 1.0000000 | 1 | .0000000 + 100 | 20 | .0000000 | 1 | 1401-05-01 | 1.0000000 | 1 | .0000000 + 800 | 40 | 1.0000000 | 4 | 1401-06-01 | 1.0000000 | 1 | 1.0000000 + 700 | 40 | 1.0000000 | 4 | 1401-06-01 | 2.0000000 | 1 | 1.0000000 + 400 | 50 | .0000000 | 2 | 1401-06-01 | 1.0000000 | 1 | .0000000 + 100 | 40 | 2400.0000000 | 2 | 1401-01-01 | 1.0000000 | 1100 | 2400.0000000 + 200 | 10 | .0000000 | 1 | 1401-03-01 | 1.0000000 | 1 | .0000000 + 300 | 30 | .0000000 | 1 | 1401-05-02 | 1.0000000 | 1 | .0000000 + 500 | 30 | 5.0000000 | 1 | 1401-06-01 | 1.0000000 | 12 | 5.0000000 + 500 | 30 | 5.0000000 | 3 | 1401-06-01 | 2.0000000 | 12 | 5.0000000 + 600 | 30 | 5.0000000 | 3 | 1401-06-01 | 1.0000000 | 12 | 5.0000000 + 400 | 50 | .0000000 | 1 | 1401-06-01 | 1.0000000 | 1 | .0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn*ow_sale.prc),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.cn desc range between current row and unbounded following ); -- mvd 5,6,1->4; + pn | vn | vn | to_char | cn | dt +-----+----+----+-------------------+----+------------ + 100 | 40 | 40 | .0000000 | 2 | 1401-01-01 + 200 | 40 | 40 | .0000000 | 3 | 1401-04-01 + 100 | 20 | 20 | .0000000 | 1 | 1401-05-01 + 300 | 30 | 30 | .0000000 | 1 | 1401-05-02 + 400 | 50 | 50 | .0000000 | 2 | 1401-06-01 + 400 | 50 | 50 | .0000000 | 1 | 1401-06-01 + 500 | 30 | 30 | .0000000 | 3 | 1401-06-01 + 500 | 30 | 30 | .0000000 | 1 | 1401-06-01 + 800 | 40 | 40 | .0000000 | 4 | 1401-06-01 + 200 | 10 | 10 | .0000000 | 1 | 1401-03-01 + 600 | 30 | 30 | .0000000 | 3 | 1401-06-01 + 700 | 40 | 40 | .0000000 | 4 | 1401-06-01 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn),floor(ow_sale.qty*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.vn desc range between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.vn desc range between current row and unbounded following ); -- mvd 5,7,8->6; 5,7,8->9; + prc | pn | qty | qty | cn | to_char | dt | vn | to_char +------+-----+------+------+----+-------------------+------------+----+------------------- + 2400 | 100 | 1100 | 1100 | 2 | 2640000.0000000 | 1401-01-01 | 40 | 2.0000000 + 0 | 200 | 1 | 1 | 1 | .0000000 | 1401-03-01 | 10 | 1.0000000 + 0 | 300 | 1 | 1 | 1 | .0000000 | 1401-05-02 | 30 | 1.0000000 + 5 | 500 | 12 | 12 | 1 | 60.0000000 | 1401-06-01 | 30 | 1.0000000 + 0 | 400 | 1 | 1 | 1 | .0000000 | 1401-06-01 | 50 | 1.0000000 + 5 | 600 | 12 | 12 | 3 | 60.0000000 | 1401-06-01 | 30 | 3.0000000 + 5 | 500 | 12 | 12 | 3 | 60.0000000 | 1401-06-01 | 30 | 3.0000000 + 0 | 200 | 1 | 1 | 3 | .0000000 | 1401-04-01 | 40 | 3.0000000 + 0 | 100 | 1 | 1 | 1 | .0000000 | 1401-05-01 | 20 | 1.0000000 + 0 | 400 | 1 | 1 | 2 | .0000000 | 1401-06-01 | 50 | 2.0000000 + 1 | 800 | 1 | 1 | 4 | 1.0000000 | 1401-06-01 | 40 | 4.0000000 + 1 | 700 | 1 | 1 | 4 | 1.0000000 | 1401-06-01 | 40 | 4.0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc),floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn desc range between 0 following and floor(ow_sale.qty+ow_sale.cn) following ); -- mvd 1->2; + vn | to_char +----+------------------- + 10 | 200.0000000 + 20 | 100.0000000 + 30 | 291.5000000 + 30 | 291.5000000 + 30 | 291.5000000 + 30 | 291.5000000 + 40 | 122.7500000 + 40 | 122.7500000 + 40 | 122.7500000 + 40 | 122.7500000 + 50 | 300.0000000 + 50 | 300.0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn+ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn asc range between floor(ow_sale.cn*ow_sale.qty) following and unbounded following ); -- mvd 1->4; + vn | vn | qty | to_char +----+----+------+------------------- + 10 | 10 | 1 | .0000000 + 20 | 20 | 1 | .0000000 + 30 | 30 | 1 | .0000000 + 30 | 30 | 12 | .0000000 + 30 | 30 | 12 | .0000000 + 30 | 30 | 12 | .0000000 + 40 | 40 | 1 | .0000000 + 40 | 40 | 1 | .0000000 + 40 | 40 | 1 | .0000000 + 40 | 40 | 1100 | .0000000 + 50 | 50 | 1 | .0000000 + 50 | 50 | 1 | .0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc*ow_sale.cn),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows unbounded preceding ); -- mvd 3,4,1,5,6->2; + cn | to_char | prc | dt | vn | pn +----+-------------------+------+------------+----+----- + 1 | -1.0000000 | 0 | 1401-05-01 | 20 | 100 + 1 | -1.0000000 | 0 | 1401-03-01 | 10 | 200 + 3 | -3.0000000 | 0 | 1401-04-01 | 40 | 200 + 2 | -2.0000000 | 0 | 1401-06-01 | 50 | 400 + 3 | 2.0000000 | 5 | 1401-06-01 | 30 | 600 + 4 | -3.0000000 | 1 | 1401-06-01 | 40 | 800 + 2 | 2398.0000000 | 2400 | 1401-01-01 | 40 | 100 + 1 | -1.0000000 | 0 | 1401-05-02 | 30 | 300 + 1 | -1.0000000 | 0 | 1401-06-01 | 50 | 400 + 1 | 4.0000000 | 5 | 1401-06-01 | 30 | 500 + 3 | 2.0000000 | 5 | 1401-06-01 | 30 | 500 + 4 | -3.0000000 | 1 | 1401-06-01 | 40 | 700 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc-ow_sale.prc),floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows unbounded preceding ), +win2 as (order by ow_sale.vn desc); -- mvd 3,4,1,5->2; 7->6; 7->8; + cn | to_char | prc | dt | pn | to_char | vn | to_char +----+-------------------+------+------------+-----+-------------------+----+------------------- + 2 | 1.0000000 | 0 | 1401-06-01 | 400 | 1.0000000 | 50 | 1.0000000 + 1 | 1.0000000 | 0 | 1401-06-01 | 400 | 1.0000000 | 50 | 1.0000000 + 4 | .0000000 | 1 | 1401-06-01 | 800 | 2.0000000 | 40 | 2.0000000 + 2 | -1300.0000000 | 2400 | 1401-01-01 | 100 | 2.0000000 | 40 | 2.0000000 + 4 | .0000000 | 1 | 1401-06-01 | 700 | 2.0000000 | 40 | 2.0000000 + 3 | 1.0000000 | 0 | 1401-04-01 | 200 | 2.0000000 | 40 | 2.0000000 + 3 | 7.0000000 | 5 | 1401-06-01 | 500 | 3.0000000 | 30 | 3.0000000 + 3 | 7.0000000 | 5 | 1401-06-01 | 600 | 3.0000000 | 30 | 3.0000000 + 1 | 1.0000000 | 0 | 1401-05-02 | 300 | 3.0000000 | 30 | 3.0000000 + 1 | 7.0000000 | 5 | 1401-06-01 | 500 | 3.0000000 | 30 | 3.0000000 + 1 | 1.0000000 | 0 | 1401-05-01 | 100 | 4.0000000 | 20 | 4.0000000 + 1 | 1.0000000 | 0 | 1401-03-01 | 200 | 5.0000000 | 10 | 5.0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc),floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows 8 preceding ); -- mvd 5,1,2,6->4; + cn | vn | dt | to_char | prc | pn +----+----+------------+-------------------+------+----- + 1 | 20 | 1401-05-01 | 21.0000000 | 0 | 100 + 1 | 10 | 1401-03-01 | 11.0000000 | 0 | 200 + 3 | 40 | 1401-04-01 | 43.0000000 | 0 | 200 + 2 | 50 | 1401-06-01 | 52.0000000 | 0 | 400 + 3 | 30 | 1401-06-01 | 33.0000000 | 5 | 600 + 4 | 40 | 1401-06-01 | 44.0000000 | 1 | 800 + 2 | 40 | 1401-01-01 | 42.0000000 | 2400 | 100 + 1 | 30 | 1401-05-02 | 31.0000000 | 0 | 300 + 1 | 50 | 1401-06-01 | 51.0000000 | 0 | 400 + 1 | 30 | 1401-06-01 | 31.0000000 | 5 | 500 + 3 | 30 | 1401-06-01 | 33.0000000 | 5 | 500 + 4 | 40 | 1401-06-01 | 44.0000000 | 1 | 700 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn/ow_sale.vn),floor(ow_sale.cn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.qty) as int),cast (floor(ow_sale.vn/ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.cn asc rows 4 preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc); -- mvd 6,3->5; 6,3->7; 3->8; 4,3->9; + dt | prc | pn | vn | to_char | cn | to_char | to_char | to_char +------------+------+-----+----+-------------------+----+-------------------+-------------------+------------------- + 1401-01-01 | 2400 | 100 | 40 | 80.0000000 | 2 | 2400.0000000 | .0000000 | .0000000 + 1401-03-01 | 0 | 200 | 10 | 10.0000000 | 1 | .0000000 | .0000000 | .0000000 + 1401-04-01 | 0 | 200 | 40 | 65.0000000 | 3 | .0000000 | .0000000 | .0000000 + 1401-05-01 | 0 | 100 | 20 | 50.0000000 | 1 | 2400.0000000 | .0000000 | .0000000 + 1401-05-02 | 0 | 300 | 30 | 30.0000000 | 1 | .0000000 | .0000000 | .0000000 + 1401-06-01 | 0 | 400 | 50 | 50.0000000 | 1 | .0000000 | .0000000 | 1.0000000 + 1401-06-01 | 0 | 400 | 50 | 75.0000000 | 2 | .0000000 | .0000000 | .0000000 + 1401-06-01 | 5 | 500 | 30 | 30.0000000 | 1 | 5.0000000 | .0000000 | -9.0000000 + 1401-06-01 | 5 | 500 | 30 | 60.0000000 | 3 | 5.0000000 | .0000000 | .0000000 + 1401-06-01 | 5 | 600 | 30 | 90.0000000 | 3 | 5.0000000 | .0000000 | .0000000 + 1401-06-01 | 1 | 700 | 40 | 160.0000000 | 4 | 1.0000000 | .0000000 | .0000000 + 1401-06-01 | 1 | 800 | 40 | 160.0000000 | 4 | 1.0000000 | .0000000 | .0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc rows current row ); -- mvd 4,2,5,1->3; + pn | cn | to_char | prc | qty +-----+----+-------------------+------+------ + 300 | 1 | 300.0000000 | 0 | 1 + 400 | 1 | 400.0000000 | 0 | 1 + 800 | 4 | 3200.0000000 | 1 | 1 + 600 | 3 | 1800.0000000 | 5 | 12 + 100 | 1 | 100.0000000 | 0 | 1 + 200 | 1 | 200.0000000 | 0 | 1 + 400 | 2 | 800.0000000 | 0 | 1 + 200 | 3 | 600.0000000 | 0 | 1 + 700 | 4 | 2800.0000000 | 1 | 1 + 500 | 1 | 500.0000000 | 5 | 12 + 500 | 3 | 1500.0000000 | 5 | 12 + 100 | 2 | 200.0000000 | 2400 | 1100 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn-ow_sale.prc),floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc,ow_sale.cn asc rows current row ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.pn desc), +win3 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 5,1,2,6,7->4; 1,2,7->8; 1,2,7->9; 1,2,7->10; 1,2,7->11; 1,13,6->12; + cn | vn | cn | to_char | prc | qty | pn | to_char | to_char | to_char | to_char | to_char | dt +----+----+----+-------------------+------+------+-----+-------------------+-------------------+-------------------+-------------------+-------------------+------------ + 2 | 50 | 2 | 400.0000000 | 0 | 1 | 400 | 1.0000000 | 1.0000000 | 1.0000000 | 50.0000000 | .0000000 | 1401-06-01 + 1 | 30 | 1 | 6000.0000000 | 5 | 12 | 500 | 1.0000000 | .5000000 | 1.0000000 | 360.0000000 | .0000000 | 1401-06-01 + 3 | 30 | 3 | 6000.0000000 | 5 | 12 | 500 | 2.0000000 | 1.0000000 | 2.0000000 | 360.0000000 | .0000000 | 1401-06-01 + 3 | 30 | 3 | 7200.0000000 | 5 | 12 | 600 | 1.0000000 | .5000000 | 1.0000000 | 360.0000000 | .0000000 | 1401-06-01 + 1 | 10 | 1 | 200.0000000 | 0 | 1 | 200 | 1.0000000 | 1.0000000 | 1.0000000 | 10.0000000 | .0000000 | 1401-03-01 + 1 | 20 | 1 | 100.0000000 | 0 | 1 | 100 | 1.0000000 | 1.0000000 | 1.0000000 | 20.0000000 | .0000000 | 1401-05-01 + 1 | 30 | 1 | 300.0000000 | 0 | 1 | 300 | 2.0000000 | 1.0000000 | 2.0000000 | 30.0000000 | .0000000 | 1401-05-02 + 1 | 50 | 1 | 400.0000000 | 0 | 1 | 400 | 1.0000000 | 1.0000000 | 1.0000000 | 50.0000000 | .0000000 | 1401-06-01 + 3 | 40 | 3 | 200.0000000 | 0 | 1 | 200 | 1.0000000 | 1.0000000 | 1.0000000 | 40.0000000 | .0000000 | 1401-04-01 + 4 | 40 | 4 | 700.0000000 | 1 | 1 | 700 | 2.0000000 | 1.0000000 | 2.0000000 | 40.0000000 | .0000000 | 1401-06-01 + 4 | 40 | 4 | 800.0000000 | 1 | 1 | 800 | 1.0000000 | .5000000 | 1.0000000 | 40.0000000 | .0000000 | 1401-06-01 + 2 | 40 | 2 | 110000.0000000 | 2400 | 1100 | 100 | 1.0000000 | 1.0000000 | 1.0000000 | 44000.0000000 | .0000000 | 1401-01-01 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and 9 preceding ); -- mvd 5,6,2->4; + qty | pn | pn | to_char | cn | vn +------+-----+-----+-------------------+----+---- + 1 | 200 | 200 | .0000000 | 1 | 10 + 1 | 100 | 100 | .0000000 | 1 | 20 + 1 | 300 | 300 | .0000000 | 1 | 30 + 12 | 500 | 500 | .0000000 | 1 | 30 + 12 | 500 | 500 | .0000000 | 3 | 30 + 12 | 600 | 600 | .0000000 | 3 | 30 + 1100 | 100 | 100 | .0000000 | 2 | 40 + 1 | 200 | 200 | .0000000 | 3 | 40 + 1 | 700 | 700 | .0000000 | 4 | 40 + 1 | 800 | 800 | .0000000 | 4 | 40 + 1 | 400 | 400 | .0000000 | 1 | 50 + 1 | 400 | 400 | .0000000 | 2 | 50 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and current row ); -- mvd 1,6,7->5; + cn | qty | cn | vn | to_char | dt | pn +----+------+----+----+-------------------+------------+----- + 1 | 1 | 1 | 10 | 1.0000000 | 1401-03-01 | 200 + 3 | 12 | 3 | 30 | 12.0000000 | 1401-06-01 | 600 + 4 | 1 | 4 | 40 | 1.0000000 | 1401-06-01 | 700 + 2 | 1100 | 2 | 40 | 1100.0000000 | 1401-01-01 | 100 + 1 | 1 | 1 | 20 | 1.0000000 | 1401-05-01 | 100 + 3 | 1 | 3 | 40 | 1.0000000 | 1401-04-01 | 200 + 1 | 1 | 1 | 30 | 1.0000000 | 1401-05-02 | 300 + 1 | 1 | 1 | 50 | 1.0000000 | 1401-06-01 | 400 + 2 | 1 | 2 | 50 | 1.0000000 | 1401-06-01 | 400 + 1 | 12 | 1 | 30 | 12.0000000 | 1401-06-01 | 500 + 3 | 12 | 3 | 30 | 12.0000000 | 1401-06-01 | 500 + 4 | 1 | 4 | 40 | 1.0000000 | 1401-06-01 | 800 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty-ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.prc order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc), +win4 as (order by ow_sale.ord, ow_sale.pn desc), +win5 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 5,3->4; 5,1,3,7,8,9->6; 3->10; 5,1,3,7,8,9->11; 9->12; 3,1,7->13; + dt | dt | cn | to_char | prc | to_char | vn | qty | pn | to_char | to_char | to_char | to_char +------------+------------+----+-------------------+------+-------------------+----+------+-----+-------------------+-------------------+-------------------+------------------- + 1401-01-01 | 1401-01-01 | 2 | 2.0000000 | 2400 | 1.0000000 | 40 | 1100 | 100 | .0000000 | 1.0000000 | .0000000 | .0000000 + 1401-03-01 | 1401-03-01 | 1 | 1.0000000 | 0 | 1.0000000 | 10 | 1 | 200 | 2.0000000 | 1.0000000 | .0000000 | .0000000 + 1401-04-01 | 1401-04-01 | 3 | 3.0000000 | 0 | 1.0000000 | 40 | 1 | 200 | 1.0000000 | 1.0000000 | .0000000 | .0000000 + 1401-05-01 | 1401-05-01 | 1 | 1.0000000 | 0 | 1.0000000 | 20 | 1 | 100 | 3.0000000 | 1.0000000 | .0000000 | .0000000 + 1401-05-02 | 1401-05-02 | 1 | 1.0000000 | 0 | 1.0000000 | 30 | 1 | 300 | 1.0000000 | 1.0000000 | .0000000 | .0000000 + 1401-06-01 | 1401-06-01 | 1 | 1.0000000 | 0 | 1.0000000 | 50 | 1 | 400 | 1.0000000 | 1.0000000 | .0000000 | .0000000 + 1401-06-01 | 1401-06-01 | 2 | 2.0000000 | 0 | 1.0000000 | 50 | 1 | 400 | 1.0000000 | 1.0000000 | .0000000 | .0000000 + 1401-06-01 | 1401-06-01 | 1 | 1.0000000 | 5 | 1.0000000 | 30 | 12 | 500 | .0000000 | 1.0000000 | .0000000 | .0000000 + 1401-06-01 | 1401-06-01 | 3 | 3.0000000 | 5 | 2.0000000 | 30 | 12 | 500 | .0000000 | 2.0000000 | .0000000 | .0000000 + 1401-06-01 | 1401-06-01 | 3 | 3.0000000 | 5 | 1.0000000 | 30 | 12 | 600 | .0000000 | 1.0000000 | .0000000 | .0000000 + 1401-06-01 | 1401-06-01 | 4 | 4.0000000 | 1 | 2.0000000 | 40 | 1 | 700 | 3.0000000 | 2.0000000 | .0000000 | .0000000 + 1401-06-01 | 1401-06-01 | 4 | 4.0000000 | 1 | 1.0000000 | 40 | 1 | 800 | 4.0000000 | 1.0000000 | .0000000 | .0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc+ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.prc+ow_sale.prc) following ); -- mvd 1,3,4,5->2; + cn | to_char | dt | vn | pn +----+-------------------+------------+----+----- + 1 | .0000000 | 1401-05-01 | 20 | 100 + 3 | .0000000 | 1401-04-01 | 40 | 200 + 4 | 1.0000000 | 1401-06-01 | 40 | 700 + 4 | 1.0000000 | 1401-06-01 | 40 | 800 + 2 | .0000000 | 1401-06-01 | 50 | 400 + 1 | .0000000 | 1401-03-01 | 10 | 200 + 1 | .0000000 | 1401-05-02 | 30 | 300 + 1 | 5.0000000 | 1401-06-01 | 30 | 500 + 3 | 5.0000000 | 1401-06-01 | 30 | 500 + 3 | 5.0000000 | 1401-06-01 | 30 | 600 + 2 | 2400.0000000 | 1401-01-01 | 40 | 100 + 1 | .0000000 | 1401-06-01 | 50 | 400 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(partition by ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.cn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.cn) following ); -- mvd 2,8->7; 2,8->9; + pn | cn | cn | cn | cn | pn | to_char | qty | to_char +-----+----+----+----+----+-----+-------------------+------+------------------- + 400 | 2 | 2 | 2 | 2 | 400 | 2.0000000 | 1 | 400.0000000 + 700 | 4 | 4 | 4 | 4 | 700 | 4.0000000 | 1 | 700.0000000 + 800 | 4 | 4 | 4 | 4 | 800 | 4.0000000 | 1 | 700.0000000 + 500 | 1 | 1 | 1 | 1 | 500 | 1.0000000 | 12 | 500.0000000 + 500 | 3 | 3 | 3 | 3 | 500 | 3.0000000 | 12 | 500.0000000 + 600 | 3 | 3 | 3 | 3 | 600 | 3.0000000 | 12 | 500.0000000 + 200 | 1 | 1 | 1 | 1 | 200 | 1.0000000 | 1 | 100.0000000 + 100 | 1 | 1 | 1 | 1 | 100 | 1.0000000 | 1 | 100.0000000 + 300 | 1 | 1 | 1 | 1 | 300 | 1.0000000 | 1 | 100.0000000 + 400 | 1 | 1 | 1 | 1 | 400 | 1.0000000 | 1 | 100.0000000 + 200 | 3 | 3 | 3 | 3 | 200 | 3.0000000 | 1 | 200.0000000 + 100 | 2 | 2 | 2 | 2 | 100 | 2.0000000 | 1100 | 100.0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc*ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.vn asc rows between unbounded preceding and unbounded following ); -- mvd 3,6->5; + qty | prc | cn | qty | to_char | vn +------+------+----+------+-------------------+---- + 1 | 0 | 1 | 1 | 1.0000000 | 10 + 1 | 0 | 1 | 1 | 1.0000000 | 20 + 1 | 0 | 1 | 1 | 1.0000000 | 30 + 1 | 0 | 1 | 1 | 1.0000000 | 50 + 12 | 5 | 1 | 12 | 1.0000000 | 30 + 1 | 0 | 3 | 1 | 3.3333333 | 40 + 12 | 5 | 3 | 12 | 3.3333333 | 30 + 12 | 5 | 3 | 12 | 3.3333333 | 30 + 1100 | 2400 | 2 | 1100 | 1200.0000000 | 40 + 1 | 0 | 2 | 1 | 1200.0000000 | 50 + 1 | 1 | 4 | 1 | 1.0000000 | 40 + 1 | 1 | 4 | 1 | 1.0000000 | 40 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc*ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc), +win3 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.prc order by ow_sale.cn desc), +win4 as (partition by ow_sale.cn order by ow_sale.vn asc); -- mvd 5,2,6,1->4; 5,2,6,1->7; 2,1->8; 5,2,10,1,11->9; 2,1->12; + vn | cn | cn | to_char | prc | qty | to_char | to_char | to_char | dt | pn | to_char +----+----+----+-------------------+------+------+-------------------+-------------------+-------------------+------------+-----+------------------- + 10 | 1 | 1 | .0000000 | 0 | 1 | 200.0000000 | 1.0000000 | .0000000 | 1401-03-01 | 200 | 1.0000000 + 20 | 1 | 1 | .0000000 | 0 | 1 | 100.0000000 | 1.0000000 | .0000000 | 1401-05-01 | 100 | 2.0000000 + 30 | 1 | 1 | .0000000 | 0 | 1 | 300.0000000 | 1.0000000 | .0000000 | 1401-05-02 | 300 | 3.0000000 + 30 | 1 | 1 | 25.0000000 | 5 | 12 | 500.0000000 | .0000000 | 1.0000000 | 1401-06-01 | 500 | 4.0000000 + 50 | 1 | 1 | .0000000 | 0 | 1 | 400.0000000 | 1.0000000 | 1.0000000 | 1401-06-01 | 400 | 5.0000000 + 30 | 3 | 3 | 25.0000000 | 5 | 12 | 500.0000000 | .0000000 | .0000000 | 1401-06-01 | 600 | 1.0000000 + 30 | 3 | 3 | 25.0000000 | 5 | 12 | 500.0000000 | .0000000 | .0000000 | 1401-06-01 | 500 | 2.0000000 + 40 | 3 | 3 | .0000000 | 0 | 1 | 200.0000000 | 3.0000000 | .0000000 | 1401-04-01 | 200 | 3.0000000 + 40 | 2 | 2 | 5760000.0000000 | 2400 | 1100 | 100.0000000 | .0000000 | .0000000 | 1401-01-01 | 100 | 1.0000000 + 50 | 2 | 2 | .0000000 | 0 | 1 | 400.0000000 | 2.0000000 | .0000000 | 1401-06-01 | 400 | 2.0000000 + 40 | 4 | 4 | 1.0000000 | 1 | 1 | 700.0000000 | .0000000 | .0000000 | 1401-06-01 | 700 | 1.0000000 + 40 | 4 | 4 | 1.0000000 | 1 | 1 | 700.0000000 | .0000000 | .0000000 | 1401-06-01 | 800 | 2.0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.pn asc rows between floor(ow_sale.prc) preceding and floor(ow_sale.qty) preceding ); -- mvd 5,6,3,1,7->4; + qty | dt | vn | to_char | prc | cn | pn +------+------------+----+-------------------+------+----+----- + 1 | 1401-03-01 | 10 | .0000000 | 0 | 1 | 200 + 1 | 1401-05-01 | 20 | .0000000 | 0 | 1 | 100 + 1 | 1401-05-02 | 30 | .0000000 | 0 | 1 | 300 + 1 | 1401-04-01 | 40 | .0000000 | 0 | 3 | 200 + 1 | 1401-06-01 | 50 | .0000000 | 0 | 1 | 400 + 1 | 1401-06-01 | 50 | .0000000 | 0 | 2 | 400 + 1 | 1401-06-01 | 40 | .0000000 | 1 | 4 | 700 + 1 | 1401-06-01 | 40 | -39.0000000 | 1 | 4 | 800 + 12 | 1401-06-01 | 30 | .0000000 | 5 | 1 | 500 + 12 | 1401-06-01 | 30 | .0000000 | 5 | 3 | 500 + 12 | 1401-06-01 | 30 | .0000000 | 5 | 3 | 600 + 1100 | 1401-01-01 | 40 | .0000000 | 2400 | 2 | 100 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn*ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between 6 preceding and current row ); -- mvd 5,6,7,2->4; + pn | qty | pn | to_char | prc | cn | vn +-----+------+-----+-------------------+------+----+---- + 200 | 1 | 200 | 200.0000000 | 0 | 1 | 10 + 100 | 1 | 100 | 100.0000000 | 0 | 1 | 20 + 300 | 1 | 300 | 300.0000000 | 0 | 1 | 30 + 200 | 1 | 200 | 200.0000000 | 0 | 3 | 40 + 400 | 1 | 400 | 400.0000000 | 0 | 1 | 50 + 400 | 1 | 400 | 400.0000000 | 0 | 2 | 50 + 700 | 1 | 700 | 700.0000000 | 1 | 4 | 40 + 800 | 1 | 800 | 750.0000000 | 1 | 4 | 40 + 500 | 12 | 500 | 500.0000000 | 5 | 1 | 30 + 500 | 12 | 500 | 500.0000000 | 5 | 3 | 30 + 600 | 12 | 600 | 533.3333333 | 5 | 3 | 30 + 100 | 1100 | 100 | 100.0000000 | 2400 | 2 | 40 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn-ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.cn asc rows between floor(ow_sale.qty+ow_sale.vn) preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 4,1->3; 1->5; + vn | prc | to_char | cn | to_char +----+------+-------------------+----+------------------- + 40 | 2400 | 40.0000000 | 2 | 197.0000000 + 10 | 0 | 10.0000000 | 1 | 197.0000000 + 40 | 0 | 40.0000000 | 3 | 399.0000000 + 20 | 0 | 15.0000000 | 1 | 299.0000000 + 30 | 0 | 20.0000000 | 1 | 399.0000000 + 50 | 0 | 27.5000000 | 1 | 398.0000000 + 50 | 0 | 45.0000000 | 2 | 497.0000000 + 30 | 5 | 28.0000000 | 1 | 497.0000000 + 30 | 5 | 35.0000000 | 3 | 796.0000000 + 30 | 5 | 33.3333333 | 3 | .0000000 + 40 | 1 | 40.0000000 | 4 | .0000000 + 40 | 1 | 40.0000000 | 4 | .0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn/ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.cn desc rows between 4 preceding and floor(ow_sale.vn/ow_sale.pn) following ); -- mvd 2,6,1->5; + vn | cn | prc | pn | to_char | dt +----+----+------+-----+-------------------+------------ + 10 | 1 | 0 | 200 | .0000000 | 1401-03-01 + 30 | 1 | 0 | 300 | .0000000 | 1401-05-02 + 50 | 1 | 0 | 400 | .0000000 | 1401-06-01 + 50 | 2 | 0 | 400 | .0000000 | 1401-06-01 + 30 | 1 | 5 | 500 | 1.6666667 | 1401-06-01 + 30 | 3 | 5 | 500 | 2.5000000 | 1401-06-01 + 30 | 3 | 5 | 600 | 3.0000000 | 1401-06-01 + 40 | 4 | 1 | 700 | 3.2000000 | 1401-06-01 + 40 | 4 | 1 | 800 | 3.4000000 | 1401-06-01 + 40 | 2 | 2400 | 100 | 2400.0000000 | 1401-01-01 + 40 | 3 | 0 | 200 | .0000000 | 1401-04-01 + 20 | 1 | 0 | 100 | .0000000 | 1401-05-01 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn*ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc,ow_sale.cn desc rows between 1 preceding and 3 following ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,4,1->2; 4->5; 7,3,1->6; 3,4,1->8; + pn | to_char | cn | vn | to_char | to_char | prc | to_char +-----+-------------------+----+----+-------------------+-------------------+------+------------------- + 400 | 1.0000000 | 1 | 50 | .0000000 | .0000000 | 0 | 1.0000000 + 400 | 1.0000000 | 2 | 50 | .0000000 | .0000000 | 0 | 1.0000000 + 800 | 1.0000000 | 4 | 40 | .1818182 | .0000000 | 1 | 1.0000000 + 100 | 550.5000000 | 2 | 40 | .1818182 | .0000000 | 2400 | 1.0000000 + 200 | 1.0000000 | 3 | 40 | .1818182 | .0000000 | 0 | 1.0000000 + 700 | 1.0000000 | 4 | 40 | .1818182 | .0000000 | 1 | 1.0000000 + 600 | 12.0000000 | 3 | 30 | .5454545 | .0000000 | 5 | 12.0000000 + 300 | 1.0000000 | 1 | 30 | .5454545 | .0000000 | 0 | 1.0000000 + 500 | 12.0000000 | 1 | 30 | .5454545 | .0000000 | 5 | 12.0000000 + 500 | 12.0000000 | 3 | 30 | .5454545 | .0000000 | 5 | 12.0000000 + 100 | 550.5000000 | 1 | 20 | .9090909 | .0000000 | 0 | 1.0000000 + 200 | 1.0000000 | 1 | 10 | 1.0000000 | .0000000 | 0 | 1.0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn-ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows between 7 preceding and unbounded following ); -- mvd 6,7,1,2->5; + qty | pn | cn | prc | to_char | dt | vn +------+-----+----+------+-------------------+------------+---- + 1100 | 100 | 2 | 2400 | 1100.0000000 | 1401-01-01 | 40 + 1 | 200 | 1 | 0 | 1.0000000 | 1401-03-01 | 10 + 12 | 500 | 1 | 5 | 12.0000000 | 1401-06-01 | 30 + 12 | 500 | 3 | 5 | 12.0000000 | 1401-06-01 | 30 + 1 | 700 | 4 | 1 | 1.0000000 | 1401-06-01 | 40 + 1 | 200 | 3 | 0 | 1.0000000 | 1401-04-01 | 40 + 1 | 100 | 1 | 0 | 1.0000000 | 1401-05-01 | 20 + 1 | 300 | 1 | 0 | 1.0000000 | 1401-05-02 | 30 + 1 | 400 | 1 | 0 | 1.0000000 | 1401-06-01 | 50 + 1 | 400 | 2 | 0 | 1.0000000 | 1401-06-01 | 50 + 12 | 600 | 3 | 5 | 12.0000000 | 1401-06-01 | 30 + 1 | 800 | 4 | 1 | 1.0000000 | 1401-06-01 | 40 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn-ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between floor(ow_sale.cn) preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between floor(ow_sale.cn) preceding and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc); -- mvd 5,3,1->4; 7,3,1->6; 5,3,1->8; 5,3,1->9; 5,3,1->10; + pn | qty | vn | to_char | cn | to_char | dt | to_char | to_char | to_char +-----+------+----+-------------------+----+-------------------+------------+-------------------+-------------------+------------------- + 100 | 1 | 20 | 20.0000000 | 1 | .0000000 | 1401-05-01 | 1.0000000 | 1.0000000 | 1.0000000 + 200 | 1 | 10 | 10.0000000 | 1 | .0000000 | 1401-03-01 | 1.0000000 | 1.0000000 | 1.0000000 + 200 | 1 | 40 | 40.0000000 | 3 | .0000000 | 1401-04-01 | 1.0000000 | 1.0000000 | 1.0000000 + 400 | 1 | 50 | 50.0000000 | 2 | .0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 1.0000000 + 600 | 12 | 30 | 30.0000000 | 3 | 5.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 12.0000000 + 800 | 1 | 40 | 40.0000000 | 4 | 1.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 1.0000000 + 100 | 1100 | 40 | 40.0000000 | 2 | 2400.0000000 | 1401-01-01 | 1.0000000 | 1.0000000 | 1100.0000000 + 300 | 1 | 30 | 30.0000000 | 1 | .0000000 | 1401-05-02 | 1.0000000 | 1.0000000 | 1.0000000 + 400 | 1 | 50 | 50.0000000 | 1 | .0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 1.0000000 + 500 | 12 | 30 | 30.0000000 | 1 | 5.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 12.0000000 + 500 | 12 | 30 | 30.0000000 | 3 | 5.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 12.0000000 + 700 | 1 | 40 | 40.0000000 | 4 | 1.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn),floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.vn desc rows between current row and current row ); -- mvd 1,5,2->4; + cn | pn | pn | to_char | vn +----+-----+-----+-------------------+---- + 2 | 100 | 100 | -98.0000000 | 40 + 1 | 100 | 100 | -99.0000000 | 20 + 1 | 200 | 200 | -199.0000000 | 10 + 3 | 200 | 200 | -197.0000000 | 40 + 3 | 600 | 600 | -597.0000000 | 30 + 4 | 700 | 700 | -696.0000000 | 40 + 1 | 300 | 300 | -299.0000000 | 30 + 1 | 400 | 400 | -399.0000000 | 50 + 2 | 400 | 400 | -398.0000000 | 50 + 1 | 500 | 500 | -499.0000000 | 30 + 3 | 500 | 500 | -497.0000000 | 30 + 4 | 800 | 800 | -796.0000000 | 40 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn+ow_sale.prc)) OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn asc rows between current row and current row ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.cn order by ow_sale.cn desc), +win4 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 2,4,1->3; 6->5; 6->7; 6->8; 2->9; 1->10; + pn | cn | to_char | qty | to_char | vn | to_char | to_char | to_char | to_char +-----+----+-------------------+------+-------------------+----+-------------------+-------------------+-------------------+------------------- + 400 | 2 | .0000000 | 1 | .1666667 | 50 | 1.0000000 | 400.0000000 | 1.0000000 | .0000000 + 400 | 1 | .0000000 | 1 | .1666667 | 50 | 1.0000000 | 400.0000000 | 1.0000000 | .0000000 + 800 | 4 | 1.0000000 | 1 | .5000000 | 40 | 3.0000000 | 200.0000000 | 1.0000000 | .0000000 + 200 | 3 | .0000000 | 1 | .5000000 | 40 | 3.0000000 | 200.0000000 | 1.0000000 | .0000000 + 700 | 4 | 1.0000000 | 1 | .5000000 | 40 | 3.0000000 | 200.0000000 | 1.0000000 | .0000000 + 100 | 2 | 2400.0000000 | 1100 | .5000000 | 40 | 3.0000000 | 200.0000000 | 1.0000000 | .0000000 + 500 | 1 | 5.0000000 | 12 | .8333333 | 30 | 7.0000000 | 200.0000000 | 1.0000000 | .0000000 + 500 | 3 | 5.0000000 | 12 | .8333333 | 30 | 7.0000000 | 200.0000000 | 1.0000000 | .0000000 + 600 | 3 | 5.0000000 | 12 | .8333333 | 30 | 7.0000000 | 200.0000000 | 1.0000000 | .0000000 + 300 | 1 | .0000000 | 1 | .8333333 | 30 | 7.0000000 | 200.0000000 | 1.0000000 | .0000000 + 100 | 1 | .0000000 | 1 | .9166667 | 20 | 11.0000000 | 100.0000000 | 1.0000000 | .0000000 + 200 | 1 | .0000000 | 1 | 1.0000000 | 10 | 12.0000000 | 100.0000000 | 1.0000000 | 800.0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows between current row and floor(ow_sale.vn) following ); -- mvd 2,6->5; + qty | cn | pn | cn | to_char | dt +------+----+-----+----+-------------------+------------ + 1 | 1 | 200 | 1 | 1.0000000 | 1401-03-01 + 1 | 1 | 300 | 1 | 1.0000000 | 1401-05-02 + 1 | 1 | 400 | 1 | 2.5714286 | 1401-06-01 + 1 | 2 | 400 | 2 | 2.8333333 | 1401-06-01 + 12 | 1 | 500 | 1 | 3.0000000 | 1401-06-01 + 12 | 3 | 500 | 3 | 3.5000000 | 1401-06-01 + 12 | 3 | 600 | 3 | 3.6666667 | 1401-06-01 + 1 | 4 | 700 | 4 | 4.0000000 | 1401-06-01 + 1 | 4 | 800 | 4 | 4.0000000 | 1401-06-01 + 1100 | 2 | 100 | 2 | 2.0000000 | 1401-01-01 + 1 | 3 | 200 | 3 | 3.0000000 | 1401-04-01 + 1 | 1 | 100 | 1 | 1.0000000 | 1401-05-01 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn+ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc rows between current row and floor(ow_sale.pn*ow_sale.prc) following ), +win2 as (order by ow_sale.cn asc); -- mvd 2,1,6->5; 2->7; 2->8; 2->9; + vn | cn | cn | vn | to_char | pn | to_char | to_char | to_char +----+----+----+----+-------------------+-----+-------------------+-------------------+------------------- + 30 | 1 | 1 | 30 | 30.0000000 | 300 | 1.0000000 | 10.0000000 | .4166667 + 30 | 1 | 1 | 30 | 30.0000000 | 500 | 2.0000000 | 10.0000000 | .4166667 + 50 | 1 | 1 | 50 | 50.0000000 | 400 | 3.0000000 | 10.0000000 | .4166667 + 10 | 1 | 1 | 10 | 10.0000000 | 200 | 4.0000000 | 10.0000000 | .4166667 + 20 | 1 | 1 | 20 | 20.0000000 | 100 | 5.0000000 | 10.0000000 | .4166667 + 40 | 2 | 2 | 40 | 40.0000000 | 100 | 6.0000000 | 10.0000000 | .5833333 + 50 | 2 | 2 | 50 | 50.0000000 | 400 | 7.0000000 | 10.0000000 | .5833333 + 30 | 3 | 3 | 30 | 30.0000000 | 500 | 8.0000000 | 10.0000000 | .8333333 + 30 | 3 | 3 | 30 | 30.0000000 | 600 | 9.0000000 | 10.0000000 | .8333333 + 40 | 3 | 3 | 40 | 40.0000000 | 200 | 10.0000000 | 10.0000000 | .8333333 + 40 | 4 | 4 | 40 | 40.0000000 | 700 | 11.0000000 | 10.0000000 | 1.0000000 + 40 | 4 | 4 | 40 | 40.0000000 | 800 | 12.0000000 | 10.0000000 | 1.0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn*ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.vn desc rows between current row and unbounded following ); -- mvd 8,4,1,6,3->7; + qty | qty | pn | dt | prc | vn | to_char | cn +------+------+-----+------------+------+----+-------------------+---- + 1 | 1 | 100 | 1401-05-01 | 0 | 20 | 1.0000000 | 1 + 1 | 1 | 200 | 1401-03-01 | 0 | 10 | 1.0000000 | 1 + 1 | 1 | 200 | 1401-04-01 | 0 | 40 | 1.0000000 | 3 + 1 | 1 | 400 | 1401-06-01 | 0 | 50 | 1.0000000 | 2 + 12 | 12 | 600 | 1401-06-01 | 5 | 30 | 12.0000000 | 3 + 1 | 1 | 800 | 1401-06-01 | 1 | 40 | 1.0000000 | 4 + 1100 | 1100 | 100 | 1401-01-01 | 2400 | 40 | 1100.0000000 | 2 + 1 | 1 | 300 | 1401-05-02 | 0 | 30 | 1.0000000 | 1 + 1 | 1 | 400 | 1401-06-01 | 0 | 50 | 1.0000000 | 1 + 12 | 12 | 500 | 1401-06-01 | 5 | 30 | 12.0000000 | 1 + 12 | 12 | 500 | 1401-06-01 | 5 | 30 | 12.0000000 | 3 + 1 | 1 | 700 | 1401-06-01 | 1 | 40 | 1.0000000 | 4 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn*ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn desc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn desc rows between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 5,6,3,1,2->4; 5,6,3,1,2->7; 5,6,3,1,2->8; 5,6,3,1,2->9; 5,6,3,1,2->10; 2->11; + vn | pn | qty | to_char | dt | cn | to_char | to_char | to_char | to_char | to_char +----+-----+------+-------------------+------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 40 | 100 | 1100 | 40.0000000 | 1401-01-01 | 2 | 2300.0000000 | 100.0000000 | 2400.0000000 | 1.0000000 | .0000000 + 10 | 200 | 1 | 10.0000000 | 1401-03-01 | 1 | -200.0000000 | 200.0000000 | .0000000 | 1.0000000 | .0000000 + 40 | 200 | 1 | 40.0000000 | 1401-04-01 | 3 | -200.0000000 | 200.0000000 | .0000000 | 1.0000000 | .0000000 + 20 | 100 | 1 | 20.0000000 | 1401-05-01 | 1 | -100.0000000 | 100.0000000 | .0000000 | 1.0000000 | .0000000 + 30 | 300 | 1 | 30.0000000 | 1401-05-02 | 1 | -300.0000000 | 300.0000000 | .0000000 | 1.0000000 | .0000000 + 50 | 400 | 1 | 50.0000000 | 1401-06-01 | 1 | -400.0000000 | 400.0000000 | .0000000 | 1.0000000 | .0000000 + 50 | 400 | 1 | 50.0000000 | 1401-06-01 | 2 | -400.0000000 | 400.0000000 | .0000000 | 1.0000000 | .0000000 + 30 | 500 | 12 | 30.0000000 | 1401-06-01 | 1 | -495.0000000 | 500.0000000 | 5.0000000 | 1.0000000 | .0000000 + 30 | 500 | 12 | 30.0000000 | 1401-06-01 | 3 | -595.0000000 | 600.0000000 | 5.0000000 | 2.0000000 | .0000000 + 30 | 600 | 12 | 30.0000000 | 1401-06-01 | 3 | -595.0000000 | 600.0000000 | 5.0000000 | 1.0000000 | .0000000 + 40 | 700 | 1 | 40.0000000 | 1401-06-01 | 4 | -799.0000000 | 800.0000000 | 1.0000000 | 2.0000000 | .0000000 + 40 | 800 | 1 | 40.0000000 | 1401-06-01 | 4 | -799.0000000 | 800.0000000 | 1.0000000 | 1.0000000 | .0000000 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty-ow_sale.cn),floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.vn asc rows between 0 following and floor(ow_sale.prc) following ); -- mvd 4,1,8,5->7; + dt | prc | pn | cn | qty | pn | to_char | vn +------------+------+-----+----+------+-----+-------------------+---- + 1401-04-01 | 0 | 200 | 3 | 1 | 200 | .0000000 | 40 + 1401-05-01 | 0 | 100 | 1 | 1 | 100 | .0000000 | 20 + 1401-06-01 | 5 | 500 | 1 | 12 | 500 | 11.6666667 | 30 + 1401-06-01 | 5 | 500 | 3 | 12 | 500 | 15.0000000 | 30 + 1401-06-01 | 5 | 600 | 3 | 12 | 600 | 15.0000000 | 30 + 1401-03-01 | 0 | 200 | 1 | 1 | 200 | .0000000 | 10 + 1401-05-02 | 0 | 300 | 1 | 1 | 300 | .0000000 | 30 + 1401-06-01 | 0 | 400 | 1 | 1 | 400 | .0000000 | 50 + 1401-06-01 | 0 | 400 | 2 | 1 | 400 | .0000000 | 50 + 1401-06-01 | 1 | 700 | 4 | 1 | 700 | 4.0000000 | 40 + 1401-06-01 | 1 | 800 | 4 | 1 | 800 | 4.0000000 | 40 + 1401-01-01 | 2400 | 100 | 2 | 1100 | 100 | 4800.0000000 | 40 +(12 rows) + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc*ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc rows between 4 following and unbounded following ); -- mvd 3,4,5,1->2; + pn | to_char | cn | vn | qty +-----+-------------------+----+----+------ + 200 | .0000000 | 1 | 10 | 1 + 100 | .0000000 | 1 | 20 | 1 + 200 | .0000000 | 3 | 40 | 1 + 800 | .0000000 | 4 | 40 | 1 + 400 | .0000000 | 2 | 50 | 1 + 600 | .0000000 | 3 | 30 | 12 + 300 | .0000000 | 1 | 30 | 1 + 700 | .0000000 | 4 | 40 | 1 + 400 | .0000000 | 1 | 50 | 1 + 500 | .0000000 | 1 | 30 | 12 + 500 | .0000000 | 3 | 30 | 12 + 100 | .0000000 | 2 | 40 | 1100 +(12 rows) + +-- REGR_AVGY() function with NULL OVER() clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (); -- mvd 4->4; + pn | vn | pn | to_char +-----+----+-----+------------------- + 400 | 50 | 400 | 95.3333333 + 800 | 40 | 800 | 95.3333333 + 100 | 20 | 100 | 95.3333333 + 200 | 10 | 200 | 95.3333333 + 200 | 40 | 200 | 95.3333333 + 600 | 30 | 600 | 95.3333333 + 300 | 30 | 300 | 95.3333333 + 400 | 50 | 400 | 95.3333333 + 500 | 30 | 500 | 95.3333333 + 500 | 30 | 500 | 95.3333333 + 100 | 40 | 100 | 95.3333333 + 700 | 40 | 700 | 95.3333333 +(12 rows) + +-- REGR_AVGY() function with NULL OVER() clause in combination with other window functions -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn*ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.cn order by ow_sale.cn desc); -- mvd 6->6; 8,9,1->7; + pn | qty | qty | pn | qty | to_char | to_char | prc | cn +-----+------+------+-----+------+-------------------+-------------------+------+---- + 100 | 1 | 1 | 100 | 1 | 3780.0000000 | 1.0000000 | 0 | 1 + 200 | 1 | 1 | 200 | 1 | 3780.0000000 | 1.0000000 | 0 | 1 + 400 | 1 | 1 | 400 | 1 | 3780.0000000 | 1.0000000 | 0 | 2 + 200 | 1 | 1 | 200 | 1 | 3780.0000000 | 1.0000000 | 0 | 3 + 600 | 12 | 12 | 600 | 12 | 3780.0000000 | 1.0000000 | 5 | 3 + 700 | 1 | 1 | 700 | 1 | 3780.0000000 | 1.0000000 | 1 | 4 + 300 | 1 | 1 | 300 | 1 | 3780.0000000 | 1.0000000 | 0 | 1 + 400 | 1 | 1 | 400 | 1 | 3780.0000000 | 1.0000000 | 0 | 1 + 500 | 12 | 12 | 500 | 12 | 3780.0000000 | 1.0000000 | 5 | 1 + 100 | 1100 | 1100 | 100 | 1100 | 3780.0000000 | 1.0000000 | 2400 | 2 + 500 | 12 | 12 | 500 | 12 | 3780.0000000 | 1.0000000 | 5 | 3 + 800 | 1 | 1 | 800 | 1 | 3780.0000000 | 1.0000000 | 1 | 4 +(12 rows) + +-- REGR_AVGY() function with OVER() clause having ONLY PARTITION BY -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn),floor(ow_sale.pn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.dt); -- mvd 3,1,8,4->7; + cn | cn | dt | pn | dt | prc | to_char | vn +----+----+------------+-----+------------+------+-------------------+---- + 1 | 1 | 1401-03-01 | 200 | 1401-03-01 | 0 | 1.0000000 | 10 + 1 | 1 | 1401-05-01 | 100 | 1401-05-01 | 0 | 1.0000000 | 20 + 3 | 3 | 1401-06-01 | 600 | 1401-06-01 | 5 | 3.0000000 | 30 + 3 | 3 | 1401-04-01 | 200 | 1401-04-01 | 0 | 3.0000000 | 40 + 4 | 4 | 1401-06-01 | 800 | 1401-06-01 | 1 | 4.0000000 | 40 + 2 | 2 | 1401-06-01 | 400 | 1401-06-01 | 0 | 2.0000000 | 50 + 1 | 1 | 1401-05-02 | 300 | 1401-05-02 | 0 | 1.0000000 | 30 + 1 | 1 | 1401-06-01 | 500 | 1401-06-01 | 5 | 1.0000000 | 30 + 3 | 3 | 1401-06-01 | 500 | 1401-06-01 | 5 | 3.0000000 | 30 + 2 | 2 | 1401-01-01 | 100 | 1401-01-01 | 2400 | 2.0000000 | 40 + 4 | 4 | 1401-06-01 | 700 | 1401-06-01 | 1 | 4.0000000 | 40 + 1 | 1 | 1401-06-01 | 400 | 1401-06-01 | 0 | 1.0000000 | 50 +(12 rows) + +-- REGR_AVGY() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn*ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.cn), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 3,4,5->2; 7,4,5,8,1->6; 7,4,5,8,1->9; 7,4,5,8,1->10; 5->11; 5->12; + pn | to_char | prc | cn | vn | to_char | dt | qty | to_char | to_char | to_char | to_char +-----+-------------------+------+----+----+-------------------+------------+------+-------------------+-------------------+-------------------+------------------- + 100 | 2400.0000000 | 2400 | 2 | 40 | 1.0000000 | 1401-01-01 | 1100 | 1.0000000 | 1.0000000 | .0000000 | 1.0000000 + 200 | .0000000 | 0 | 1 | 10 | 1.0000000 | 1401-03-01 | 1 | 1.0000000 | 1.0000000 | .0000000 | 2.0000000 + 200 | .0000000 | 0 | 3 | 40 | 1.0000000 | 1401-04-01 | 1 | 1.0000000 | 1.0000000 | .0000000 | 3.0000000 + 100 | .0000000 | 0 | 1 | 20 | 1.0000000 | 1401-05-01 | 1 | 1.0000000 | 1.0000000 | .0000000 | 4.0000000 + 300 | .0000000 | 0 | 1 | 30 | 1.0000000 | 1401-05-02 | 1 | 1.0000000 | 1.0000000 | .0000000 | 5.0000000 + 400 | .0000000 | 0 | 1 | 50 | 1.0000000 | 1401-06-01 | 1 | 1.0000000 | 1.0000000 | .0000000 | 6.0000000 + 400 | .0000000 | 0 | 2 | 50 | 1.0000000 | 1401-06-01 | 1 | 1.0000000 | 1.0000000 | .0000000 | 7.0000000 + 500 | 5.0000000 | 5 | 1 | 30 | 1.0000000 | 1401-06-01 | 12 | 1.0000000 | 1.0000000 | .0000000 | 8.0000000 + 500 | 5.0000000 | 5 | 3 | 30 | 1.0000000 | 1401-06-01 | 12 | 1.0000000 | 1.0000000 | .0000000 | 9.0000000 + 600 | 5.0000000 | 5 | 3 | 30 | 1.0000000 | 1401-06-01 | 12 | 1.0000000 | 1.0000000 | .0000000 | 10.0000000 + 700 | 1.0000000 | 1 | 4 | 40 | 1.0000000 | 1401-06-01 | 1 | 1.0000000 | 1.0000000 | .0000000 | 11.0000000 + 800 | 1.0000000 | 1 | 4 | 40 | 1.0000000 | 1401-06-01 | 1 | 1.0000000 | 1.0000000 | .0000000 | 12.0000000 +(12 rows) + +-- REGR_AVGY() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc,ow_sale.cn asc,ow_sale.vn desc); -- mvd 4,5,6->3; + qty | dt | to_char | cn | vn | pn +------+------------+-------------------+----+----+----- + 1 | 1401-05-01 | -1.0000000 | 1 | 20 | 100 + 1100 | 1401-01-01 | 1198.5000000 | 2 | 40 | 100 + 1 | 1401-03-01 | 798.6666667 | 1 | 10 | 200 + 1 | 1401-04-01 | 598.2500000 | 3 | 40 | 200 + 1 | 1401-05-02 | 478.4000000 | 1 | 30 | 300 + 1 | 1401-06-01 | 398.5000000 | 1 | 50 | 400 + 1 | 1401-06-01 | 341.2857143 | 2 | 50 | 400 + 12 | 1401-06-01 | 299.1250000 | 1 | 30 | 500 + 12 | 1401-06-01 | 266.1111111 | 3 | 30 | 500 + 12 | 1401-06-01 | 239.7000000 | 3 | 30 | 600 + 1 | 1401-06-01 | 217.6363636 | 4 | 40 | 700 + 1 | 1401-06-01 | 199.2500000 | 4 | 40 | 800 +(12 rows) + +-- REGR_AVGY() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn/ow_sale.qty)) OVER(order by ow_sale.cn asc,ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc,ow_sale.pn asc); -- mvd 6,4->5; 6,4->7; + dt | vn | qty | pn | to_char | cn | to_char +------------+----+------+-----+-------------------+----+------------------- + 1401-05-01 | 20 | 1 | 100 | 1.0000000 | 1 | 20.0000000 + 1401-03-01 | 10 | 1 | 200 | 1.0000000 | 1 | 10.0000000 + 1401-05-02 | 30 | 1 | 300 | 1.0000000 | 1 | 10.0000000 + 1401-06-01 | 50 | 1 | 400 | 1.0000000 | 1 | 10.0000000 + 1401-06-01 | 30 | 12 | 500 | 3.2000000 | 1 | 2.0000000 + 1401-01-01 | 40 | 1100 | 100 | 186.0000000 | 2 | .0000000 + 1401-06-01 | 50 | 1 | 400 | 159.5714286 | 2 | .0000000 + 1401-04-01 | 40 | 1 | 200 | 139.7500000 | 3 | .0000000 + 1401-06-01 | 30 | 12 | 500 | 125.5555556 | 3 | .0000000 + 1401-06-01 | 30 | 12 | 600 | 114.2000000 | 3 | .0000000 + 1401-06-01 | 40 | 1 | 700 | 103.9090909 | 4 | .0000000 + 1401-06-01 | 40 | 1 | 800 | 95.3333333 | 4 | .0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.pn/ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range floor(ow_sale.vn+ow_sale.pn) preceding ); -- mvd 2->3; + qty | vn | to_char +------+----+------------------- + 1 | 50 | .0000000 + 1 | 50 | .0000000 + 1100 | 40 | 400.3333333 + 1 | 40 | 400.3333333 + 1 | 40 | 400.3333333 + 1 | 40 | 400.3333333 + 12 | 30 | 241.7000000 + 1 | 30 | 241.7000000 + 12 | 30 | 241.7000000 + 12 | 30 | 241.7000000 + 1 | 20 | 219.7272727 + 1 | 10 | 201.4166667 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn/ow_sale.cn),floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range current row ); -- mvd 1->3; + cn | pn | to_char +----+-----+------------------- + 1 | 100 | 28.0000000 + 1 | 200 | 28.0000000 + 1 | 300 | 28.0000000 + 1 | 400 | 28.0000000 + 1 | 500 | 28.0000000 + 2 | 100 | 22.5000000 + 2 | 400 | 22.5000000 + 3 | 200 | 11.0000000 + 3 | 600 | 11.0000000 + 3 | 500 | 11.0000000 + 4 | 700 | 10.0000000 + 4 | 800 | 10.0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty/ow_sale.qty),floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn*ow_sale.prc)) OVER(order by ow_sale.vn desc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn*ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range current row ), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc), +win3 as (order by ow_sale.pn asc); -- mvd 2->7; 2->8; 10,11->9; 11->12; 11->13; 11->14; + qty | vn | prc | vn | prc | qty | to_char | to_char | to_char | cn | pn | to_char | to_char | to_char +------+----+------+----+------+------+-------------------+-------------------+-------------------+----+-----+-------------------+-------------------+------------------- + 1 | 20 | 0 | 20 | 0 | 1 | 1.0000000 | 1.0000000 | .0000000 | 1 | 100 | 1.0000000 | 1.0000000 | .0000000 + 1100 | 40 | 2400 | 40 | 2400 | 1100 | 1.0000000 | 4.0000000 | .0000000 | 2 | 100 | 1.0000000 | 1.0000000 | .0000000 + 1 | 10 | 0 | 10 | 0 | 1 | 1.0000000 | 1.0000000 | .0000000 | 1 | 200 | 2.0000000 | 2.0000000 | .1818182 + 1 | 40 | 0 | 40 | 0 | 1 | 1.0000000 | 4.0000000 | .0000000 | 3 | 200 | 2.0000000 | 2.0000000 | .1818182 + 1 | 30 | 0 | 30 | 0 | 1 | 1.0000000 | 4.0000000 | .0000000 | 1 | 300 | 3.0000000 | 3.0000000 | .3636364 + 1 | 50 | 0 | 50 | 0 | 1 | 1.0000000 | 2.0000000 | .0000000 | 2 | 400 | 4.0000000 | 4.0000000 | .4545455 + 1 | 50 | 0 | 50 | 0 | 1 | 1.0000000 | 2.0000000 | .0000000 | 1 | 400 | 4.0000000 | 4.0000000 | .4545455 + 12 | 30 | 5 | 30 | 5 | 12 | 1.0000000 | 4.0000000 | .0000000 | 1 | 500 | 5.0000000 | 5.0000000 | .6363636 + 12 | 30 | 5 | 30 | 5 | 12 | 1.0000000 | 4.0000000 | .0000000 | 3 | 500 | 5.0000000 | 5.0000000 | .6363636 + 12 | 30 | 5 | 30 | 5 | 12 | 1.0000000 | 4.0000000 | .0000000 | 3 | 600 | 6.0000000 | 6.0000000 | .8181818 + 1 | 40 | 1 | 40 | 1 | 1 | 1.0000000 | 4.0000000 | .0000000 | 4 | 700 | 7.0000000 | 7.0000000 | .9090909 + 1 | 40 | 1 | 40 | 1 | 1 | 1.0000000 | 4.0000000 | .0000000 | 4 | 800 | 8.0000000 | 8.0000000 | 1.0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty+ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and 3 preceding ); -- mvd 1->6; + cn | vn | cn | cn | qty | to_char +----+----+----+----+------+------------------- + 1 | 10 | 1 | 1 | 1 | .0000000 + 1 | 20 | 1 | 1 | 1 | .0000000 + 1 | 30 | 1 | 1 | 1 | .0000000 + 1 | 50 | 1 | 1 | 1 | .0000000 + 1 | 30 | 1 | 1 | 12 | .0000000 + 2 | 40 | 2 | 2 | 1100 | .0000000 + 2 | 50 | 2 | 2 | 1 | .0000000 + 3 | 40 | 3 | 3 | 1 | .0000000 + 3 | 30 | 3 | 3 | 12 | .0000000 + 3 | 30 | 3 | 3 | 12 | .0000000 + 4 | 40 | 4 | 4 | 1 | 31.2000000 + 4 | 40 | 4 | 4 | 1 | 31.2000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and current row ); -- mvd 6->5; + pn | pn | prc | vn | to_char | cn +-----+-----+------+----+-------------------+---- + 200 | 200 | 0 | 10 | 28.0000000 | 1 + 100 | 100 | 0 | 20 | 28.0000000 | 1 + 300 | 300 | 0 | 30 | 28.0000000 | 1 + 400 | 400 | 0 | 50 | 28.0000000 | 1 + 500 | 500 | 5 | 30 | 28.0000000 | 1 + 100 | 100 | 2400 | 40 | 32.8571429 | 2 + 400 | 400 | 0 | 50 | 32.8571429 | 2 + 200 | 200 | 0 | 40 | 33.0000000 | 3 + 600 | 600 | 5 | 30 | 33.0000000 | 3 + 500 | 500 | 5 | 30 | 33.0000000 | 3 + 700 | 700 | 1 | 40 | 34.1666667 | 4 + 800 | 800 | 1 | 40 | 34.1666667 | 4 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.pn) as int),cast (floor(ow_sale.pn/ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.cn)) OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (order by ow_sale.cn desc); -- mvd 5->4; 1->6; 5->7; 5->8; + pn | qty | qty | to_char | cn | to_char | to_char | to_char +-----+------+------+-------------------+----+-------------------+-------------------+------------------- + 100 | 1100 | 1100 | 161.1428571 | 2 | 200.0000000 | .4545455 | 7.0000000 + 200 | 1 | 1 | 95.3333333 | 1 | .0000000 | .6363636 | 12.0000000 + 200 | 1 | 1 | 5.4000000 | 3 | .0000000 | .1818182 | 5.0000000 + 100 | 1 | 1 | 95.3333333 | 1 | .0000000 | .6363636 | 12.0000000 + 300 | 1 | 1 | 95.3333333 | 1 | .0000000 | .6363636 | 12.0000000 + 400 | 1 | 1 | 95.3333333 | 1 | .0000000 | .6363636 | 12.0000000 + 400 | 1 | 1 | 161.1428571 | 2 | .0000000 | .4545455 | 7.0000000 + 500 | 12 | 12 | 95.3333333 | 1 | .0000000 | .6363636 | 12.0000000 + 500 | 12 | 12 | 5.4000000 | 3 | .0000000 | .1818182 | 5.0000000 + 600 | 12 | 12 | 5.4000000 | 3 | .0000000 | .1818182 | 5.0000000 + 700 | 1 | 1 | 1.0000000 | 4 | .0000000 | .0000000 | 2.0000000 + 800 | 1 | 1 | 1.0000000 | 4 | .0000000 | .0000000 | 2.0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and unbounded following ); -- mvd 1->6; + cn | pn | prc | dt | vn | to_char +----+-----+------+------------+----+------------------- + 1 | 100 | 0 | 1401-05-01 | 20 | 95.3333333 + 1 | 200 | 0 | 1401-03-01 | 10 | 95.3333333 + 1 | 300 | 0 | 1401-05-02 | 30 | 95.3333333 + 1 | 400 | 0 | 1401-06-01 | 50 | 95.3333333 + 1 | 500 | 5 | 1401-06-01 | 30 | 95.3333333 + 2 | 100 | 2400 | 1401-01-01 | 40 | 95.3333333 + 2 | 400 | 0 | 1401-06-01 | 50 | 95.3333333 + 3 | 200 | 0 | 1401-04-01 | 40 | 95.3333333 + 3 | 600 | 5 | 1401-06-01 | 30 | 95.3333333 + 3 | 500 | 5 | 1401-06-01 | 30 | 95.3333333 + 4 | 700 | 1 | 1401-06-01 | 40 | 95.3333333 + 4 | 800 | 1 | 1401-06-01 | 40 | 95.3333333 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn+ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.prc order by ow_sale.vn asc); -- mvd 4->5; 7,4,8,1->6; + vn | qty | vn | cn | to_char | to_char | prc | dt +----+------+----+----+-------------------+-------------------+------+------------ + 40 | 1 | 40 | 4 | 495.3333333 | 2.0000000 | 1 | 1401-06-01 + 40 | 1 | 40 | 4 | 495.3333333 | 1.0000000 | 1 | 1401-06-01 + 30 | 12 | 30 | 3 | 495.3333333 | 1.0000000 | 5 | 1401-06-01 + 30 | 12 | 30 | 3 | 495.3333333 | 2.0000000 | 5 | 1401-06-01 + 40 | 1 | 40 | 3 | 495.3333333 | 1.0000000 | 0 | 1401-04-01 + 50 | 1 | 50 | 2 | 495.3333333 | 1.0000000 | 0 | 1401-06-01 + 40 | 1100 | 40 | 2 | 495.3333333 | 1.0000000 | 2400 | 1401-01-01 + 10 | 1 | 10 | 1 | 495.3333333 | 1.0000000 | 0 | 1401-03-01 + 50 | 1 | 50 | 1 | 495.3333333 | 1.0000000 | 0 | 1401-06-01 + 30 | 12 | 30 | 1 | 495.3333333 | 1.0000000 | 5 | 1401-06-01 + 30 | 1 | 30 | 1 | 495.3333333 | 1.0000000 | 0 | 1401-05-02 + 20 | 1 | 20 | 1 | 495.3333333 | 1.0000000 | 0 | 1401-05-01 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn),floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 2 preceding and 1 preceding ); -- mvd 4->5; + vn | cn | dt | pn | to_char +----+----+------------+-----+------------------- + 20 | 1 | 1401-05-01 | 100 | .0000000 + 40 | 2 | 1401-01-01 | 100 | .0000000 + 10 | 1 | 1401-03-01 | 200 | .0000000 + 40 | 3 | 1401-04-01 | 200 | .0000000 + 30 | 1 | 1401-05-02 | 300 | .0000000 + 50 | 1 | 1401-06-01 | 400 | .0000000 + 50 | 2 | 1401-06-01 | 400 | .0000000 + 30 | 1 | 1401-06-01 | 500 | .0000000 + 30 | 3 | 1401-06-01 | 500 | .0000000 + 30 | 3 | 1401-06-01 | 600 | .0000000 + 40 | 4 | 1401-06-01 | 700 | .0000000 + 40 | 4 | 1401-06-01 | 800 | .0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.qty)) OVER(order by ow_sale.pn desc range between floor(ow_sale.qty*ow_sale.vn) preceding and 0 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between floor(ow_sale.qty*ow_sale.vn) preceding and 0 preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.pn desc), +win4 as (order by ow_sale.vn desc); -- mvd 8->7; 3->9; 8->10; 3->11; 8->12; + qty | prc | vn | vn | cn | cn | to_char | pn | to_char | to_char | to_char | to_char +------+------+----+----+----+----+-------------------+-----+-------------------+-------------------+-------------------+------------------- + 1 | 0 | 50 | 50 | 1 | 1 | 50.0000000 | 400 | .1666667 | 1.0000000 | 1.0000000 | 51.0000000 + 1 | 0 | 50 | 50 | 2 | 2 | 50.0000000 | 400 | .1666667 | 1.0000000 | 1.0000000 | 51.0000000 + 1100 | 2400 | 40 | 40 | 2 | 2 | 34.1666667 | 100 | .5000000 | 1.0000000 | 3.0000000 | 11.0000000 + 1 | 1 | 40 | 40 | 4 | 4 | 40.0000000 | 700 | .5000000 | 1.0000000 | 3.0000000 | 41.0000000 + 1 | 0 | 40 | 40 | 3 | 3 | 25.0000000 | 200 | .5000000 | 1.0000000 | 3.0000000 | 11.0000000 + 1 | 1 | 40 | 40 | 4 | 4 | 40.0000000 | 800 | .5000000 | 1.0000000 | 3.0000000 | 41.0000000 + 12 | 5 | 30 | 30 | 3 | 3 | 36.6666667 | 600 | .8333333 | 1.0000000 | 7.0000000 | 41.0000000 + 1 | 0 | 30 | 30 | 1 | 1 | 30.0000000 | 300 | .8333333 | 1.0000000 | 7.0000000 | 31.0000000 + 12 | 5 | 30 | 30 | 3 | 3 | 34.0000000 | 500 | .8333333 | 1.0000000 | 7.0000000 | 41.0000000 + 12 | 5 | 30 | 30 | 1 | 1 | 34.0000000 | 500 | .8333333 | 1.0000000 | 7.0000000 | 41.0000000 + 1 | 0 | 20 | 20 | 1 | 1 | 30.0000000 | 100 | .9166667 | 1.0000000 | 11.0000000 | 21.0000000 + 1 | 0 | 10 | 10 | 1 | 1 | 25.0000000 | 200 | 1.0000000 | 1.0000000 | 12.0000000 | 11.0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.pn/ow_sale.cn) preceding and current row ); -- mvd 2->4; + vn | cn | prc | to_char +----+----+------+------------------- + 10 | 1 | 0 | 3.2000000 + 20 | 1 | 0 | 3.2000000 + 30 | 1 | 0 | 3.2000000 + 50 | 1 | 0 | 3.2000000 + 30 | 1 | 5 | 3.2000000 + 40 | 2 | 2400 | 159.5714286 + 50 | 2 | 0 | 159.5714286 + 40 | 3 | 0 | 114.2000000 + 30 | 3 | 5 | 114.2000000 + 30 | 3 | 5 | 114.2000000 + 40 | 4 | 1 | 95.3333333 + 40 | 4 | 1 | 95.3333333 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn*ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.dt,ow_sale.cn order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.prc) preceding and current row ), +win2 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.cn asc); -- mvd 3->2; 5,6->4; 5,6->7; + qty | to_char | vn | to_char | cn | dt | to_char +------+-------------------+----+-------------------+----+------------+------------------- + 1 | 2000.0000000 | 10 | 1.0000000 | 1 | 1401-03-01 | .0000000 + 1 | 2000.0000000 | 20 | 1.0000000 | 1 | 1401-05-01 | .0000000 + 1 | 14250.0000000 | 30 | 1.0000000 | 1 | 1401-05-02 | .0000000 + 12 | 14250.0000000 | 30 | 1.0000000 | 1 | 1401-06-01 | .0000000 + 12 | 14250.0000000 | 30 | 1.0000000 | 3 | 1401-06-01 | .0000000 + 12 | 14250.0000000 | 30 | 1.0000000 | 3 | 1401-06-01 | .0000000 + 1100 | 13300.0000000 | 40 | 1.0000000 | 2 | 1401-01-01 | .0000000 + 1 | 18000.0000000 | 40 | 1.0000000 | 3 | 1401-04-01 | .0000000 + 1 | 18000.0000000 | 40 | 1.0000000 | 4 | 1401-06-01 | .0000000 + 1 | 18000.0000000 | 40 | 1.0000000 | 4 | 1401-06-01 | .0000000 + 1 | 20000.0000000 | 50 | 1.0000000 | 2 | 1401-06-01 | .0000000 + 1 | 20000.0000000 | 50 | 1.0000000 | 1 | 1401-06-01 | .0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn+ow_sale.pn),floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 4 preceding and 2 following ); -- mvd 2->4; + qty | cn | cn | to_char +------+----+----+------------------- + 1 | 1 | 1 | 660.0000000 + 1 | 1 | 1 | 660.0000000 + 1 | 1 | 1 | 660.0000000 + 1 | 1 | 1 | 660.0000000 + 12 | 1 | 1 | 660.0000000 + 1100 | 2 | 2 | 800.0000000 + 1 | 2 | 2 | 800.0000000 + 1 | 3 | 3 | 800.0000000 + 12 | 3 | 3 | 800.0000000 + 12 | 3 | 3 | 800.0000000 + 1 | 4 | 4 | 800.0000000 + 1 | 4 | 4 | 800.0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn/ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between floor(ow_sale.pn) preceding and floor(ow_sale.pn) following ), +win2 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.vn desc); -- mvd 3->2; 5,3->4; 5,3->6; 5,3->7; + cn | to_char | pn | to_char | vn | to_char | to_char +----+-------------------+-----+-------------------+----+-------------------+------------------- + 4 | 201.4166667 | 800 | 1.0000000 | 40 | .0000000 | 1.0000000 + 4 | 201.4166667 | 700 | 1.0000000 | 40 | .0000000 | 1.0000000 + 3 | 201.4166667 | 600 | 1.0000000 | 30 | .0000000 | 1.0000000 + 1 | 201.4166667 | 500 | 1.0000000 | 30 | .0000000 | 1.0000000 + 3 | 201.4166667 | 500 | 2.0000000 | 30 | .0000000 | 1.0000000 + 2 | 201.4166667 | 400 | 1.0000000 | 50 | .0000000 | 1.0000000 + 1 | 201.4166667 | 400 | 2.0000000 | 50 | .0000000 | 1.0000000 + 1 | 241.5000000 | 300 | 1.0000000 | 30 | .0000000 | 1.0000000 + 1 | 342.8571429 | 200 | 1.0000000 | 10 | .0000000 | 1.0000000 + 3 | 342.8571429 | 200 | 1.0000000 | 40 | .0000000 | 1.0000000 + 1 | 600.0000000 | 100 | 1.0000000 | 20 | .0000000 | 1.0000000 + 2 | 600.0000000 | 100 | 1.0000000 | 40 | .0000000 | 1.0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty/ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 0 preceding and unbounded following ); -- mvd 2->3; + qty | cn | to_char +------+----+------------------- + 1 | 4 | 47.8333333 + 1 | 4 | 47.8333333 + 12 | 3 | 57.4000000 + 12 | 3 | 57.4000000 + 1 | 3 | 57.4000000 + 1 | 2 | 80.8571429 + 1100 | 2 | 80.8571429 + 1 | 1 | 3.2000000 + 12 | 1 | 3.2000000 + 1 | 1 | 3.2000000 + 1 | 1 | 3.2000000 + 1 | 1 | 3.2000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn/ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 4 preceding and unbounded following ); -- mvd 5->6; 5->7; + vn | vn | pn | dt | cn | to_char | to_char +----+----+-----+------------+----+-------------------+------------------- + 40 | 40 | 800 | 1401-06-01 | 4 | 19.8333333 | .0000000 + 40 | 40 | 700 | 1401-06-01 | 4 | 19.8333333 | .0000000 + 30 | 30 | 500 | 1401-06-01 | 3 | 19.8333333 | .0000000 + 40 | 40 | 200 | 1401-04-01 | 3 | 19.8333333 | .0000000 + 30 | 30 | 600 | 1401-06-01 | 3 | 19.8333333 | .0000000 + 50 | 50 | 400 | 1401-06-01 | 2 | 19.8333333 | .0000000 + 40 | 40 | 100 | 1401-01-01 | 2 | 19.8333333 | .0000000 + 30 | 30 | 300 | 1401-05-02 | 1 | 19.8333333 | .0000000 + 50 | 50 | 400 | 1401-06-01 | 1 | 19.8333333 | .0000000 + 30 | 30 | 500 | 1401-06-01 | 1 | 19.8333333 | .0000000 + 20 | 20 | 100 | 1401-05-01 | 1 | 19.8333333 | .0000000 + 10 | 10 | 200 | 1401-03-01 | 1 | 19.8333333 | .0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and current row ); -- mvd 2->3; + vn | pn | to_char +----+-----+------------------- + 40 | 800 | 1.0000000 + 40 | 700 | 1.0000000 + 30 | 600 | 5.0000000 + 30 | 500 | 5.0000000 + 30 | 500 | 5.0000000 + 50 | 400 | .0000000 + 50 | 400 | .0000000 + 30 | 300 | .0000000 + 10 | 200 | .0000000 + 40 | 200 | .0000000 + 20 | 100 | 1200.0000000 + 40 | 100 | 1200.0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc-ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.pn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and current row ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.cn desc); -- mvd 5->4; 5->6; 5->7; + qty | pn | pn | to_char | cn | to_char | to_char +------+-----+-----+-------------------+----+-------------------+------------------- + 1100 | 100 | 100 | 950.0000000 | 2 | .0000000 | .4545455 + 1 | 200 | 200 | -299.0000000 | 1 | .0000000 | .6363636 + 1 | 200 | 200 | -430.0000000 | 3 | .0000000 | .1818182 + 1 | 100 | 100 | -299.0000000 | 1 | .0000000 | .6363636 + 1 | 300 | 300 | -299.0000000 | 1 | .0000000 | .6363636 + 1 | 400 | 400 | -299.0000000 | 1 | .0000000 | .6363636 + 1 | 400 | 400 | 950.0000000 | 2 | .0000000 | .4545455 + 12 | 500 | 500 | -299.0000000 | 1 | .0000000 | .6363636 + 12 | 500 | 500 | -430.0000000 | 3 | .0000000 | .1818182 + 12 | 600 | 600 | -430.0000000 | 3 | .0000000 | .1818182 + 1 | 700 | 700 | -749.0000000 | 4 | .0000000 | .0000000 + 1 | 800 | 800 | -749.0000000 | 4 | .0000000 | .0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn*ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and floor(ow_sale.prc/ow_sale.vn) following ); -- mvd 3->2; + pn | to_char | vn +-----+-------------------+---- + 400 | .0000000 | 50 + 400 | .0000000 | 50 + 100 | 9653.0000000 | 40 + 700 | 24020.0000000 | 40 + 200 | 24020.0000000 | 40 + 800 | 24020.0000000 | 40 + 600 | 112.5000000 | 30 + 300 | 112.5000000 | 30 + 500 | 112.5000000 | 30 + 500 | 112.5000000 | 30 + 100 | .0000000 | 20 + 200 | .0000000 | 10 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc-ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and floor(ow_sale.qty+ow_sale.pn) following ), +win2 as (order by ow_sale.vn desc); -- mvd 5->4; 5->6; 5->7; 5->8; 5->9; 5->10; + cn | qty | prc | to_char | vn | to_char | to_char | to_char | to_char | to_char +----+------+------+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 2 | 1 | 0 | 106.0833333 | 50 | 1.0000000 | 12.0000000 | 12.0000000 | 1.0000000 | 2400.0000000 + 1 | 1 | 0 | 106.0833333 | 50 | 1.0000000 | 12.0000000 | 12.0000000 | 1.0000000 | 2400.0000000 + 2 | 1100 | 2400 | 127.5000000 | 40 | 1.0000000 | 10.0000000 | 10.0000000 | 2.0000000 | 2400.0000000 + 4 | 1 | 1 | 127.5000000 | 40 | 1.0000000 | 10.0000000 | 10.0000000 | 2.0000000 | 2400.0000000 + 3 | 1 | 0 | 127.5000000 | 40 | 1.0000000 | 10.0000000 | 10.0000000 | 2.0000000 | 2400.0000000 + 4 | 1 | 1 | 127.5000000 | 40 | 1.0000000 | 10.0000000 | 10.0000000 | 2.0000000 | 2400.0000000 + 3 | 12 | 5 | -4.0000000 | 30 | 1.0000000 | 6.0000000 | 6.0000000 | 3.0000000 | 5.0000000 + 1 | 1 | 0 | -4.0000000 | 30 | 1.0000000 | 6.0000000 | 6.0000000 | 3.0000000 | 5.0000000 + 1 | 12 | 5 | -4.0000000 | 30 | 1.0000000 | 6.0000000 | 6.0000000 | 3.0000000 | 5.0000000 + 3 | 12 | 5 | -4.0000000 | 30 | 1.0000000 | 6.0000000 | 6.0000000 | 3.0000000 | 5.0000000 + 1 | 1 | 0 | -1.0000000 | 20 | 1.0000000 | 2.0000000 | 2.0000000 | 4.0000000 | .0000000 + 1 | 1 | 0 | -1.0000000 | 10 | 1.0000000 | 1.0000000 | 1.0000000 | 5.0000000 | .0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc-ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and unbounded following ); -- mvd 3->2; + cn | to_char | pn +----+-------------------+----- + 1 | -198.5833333 | 100 + 2 | -198.5833333 | 100 + 1 | -458.3000000 | 200 + 3 | -458.3000000 | 200 + 1 | -522.8750000 | 300 + 1 | -554.7142857 | 400 + 2 | -554.7142857 | 400 + 1 | -616.6000000 | 500 + 3 | -616.6000000 | 500 + 3 | -697.6666667 | 600 + 4 | -749.0000000 | 700 + 4 | -799.0000000 | 800 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.vn) as int),cast (floor(ow_sale.pn+ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 8->7; 1->9; 1->10; 1->11; + vn | qty | vn | pn | dt | qty | to_char | cn | to_char | to_char | to_char +----+------+----+-----+------------+------+-------------------+----+-------------------+-------------------+------------------- + 40 | 1100 | 40 | 100 | 1401-01-01 | 1100 | 38.5714286 | 2 | .0000000 | 1.0000000 | 1.0000000 + 10 | 1 | 10 | 200 | 1401-03-01 | 1 | 34.1666667 | 1 | .0000000 | 2.0000000 | 2.0000000 + 40 | 1 | 40 | 200 | 1401-04-01 | 1 | 36.0000000 | 3 | .0000000 | 3.0000000 | 3.0000000 + 20 | 1 | 20 | 100 | 1401-05-01 | 1 | 34.1666667 | 1 | .0000000 | 4.0000000 | 4.0000000 + 30 | 1 | 30 | 300 | 1401-05-02 | 1 | 34.1666667 | 1 | .0000000 | 5.0000000 | 5.0000000 + 50 | 1 | 50 | 400 | 1401-06-01 | 1 | 34.1666667 | 1 | .0000000 | 6.0000000 | 6.0000000 + 50 | 1 | 50 | 400 | 1401-06-01 | 1 | 38.5714286 | 2 | .0000000 | 7.0000000 | 7.0000000 + 30 | 12 | 30 | 500 | 1401-06-01 | 12 | 34.1666667 | 1 | .0000000 | 8.0000000 | 8.0000000 + 30 | 12 | 30 | 500 | 1401-06-01 | 12 | 36.0000000 | 3 | .0000000 | 9.0000000 | 9.0000000 + 30 | 12 | 30 | 600 | 1401-06-01 | 12 | 36.0000000 | 3 | .0000000 | 10.0000000 | 10.0000000 + 40 | 1 | 40 | 700 | 1401-06-01 | 1 | 40.0000000 | 4 | .0000000 | 11.0000000 | 11.0000000 + 40 | 1 | 40 | 800 | 1401-06-01 | 1 | 40.0000000 | 4 | .0000000 | 12.0000000 | 12.0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 0 following and 1 following ); -- mvd 1->6; + pn | vn | qty | pn | pn | to_char +-----+----+------+-----+-----+------------------- + 800 | 40 | 1 | 800 | 800 | 5.0000000 + 700 | 40 | 1 | 700 | 700 | 5.0000000 + 600 | 30 | 12 | 600 | 600 | 8.0000000 + 500 | 30 | 12 | 500 | 500 | 7.0000000 + 500 | 30 | 12 | 500 | 500 | 7.0000000 + 400 | 50 | 1 | 400 | 400 | 1.5000000 + 400 | 50 | 1 | 400 | 400 | 1.5000000 + 300 | 30 | 1 | 300 | 300 | 1.0000000 + 200 | 10 | 1 | 200 | 200 | 2.0000000 + 200 | 40 | 1 | 200 | 200 | 2.0000000 + 100 | 20 | 1 | 100 | 100 | 1201.5000000 + 100 | 40 | 1100 | 100 | 100 | 1201.5000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn-ow_sale.vn),floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.qty)) OVER(order by ow_sale.cn asc range between 4 following and 4 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 4 following and 4 following ); -- mvd 1->2; 1->3; 1->4; + cn | to_char | to_char | to_char +----+-------------------+-------------------+------------------- + 1 | .0000000 | .0000000 | .0000000 + 1 | .0000000 | .0000000 | .0000000 + 1 | .0000000 | .0000000 | .0000000 + 1 | .0000000 | .0000000 | .0000000 + 1 | .0000000 | .0000000 | .0000000 + 2 | .0000000 | .0000000 | .0000000 + 2 | .0000000 | .0000000 | .0000000 + 3 | .0000000 | .0000000 | .0000000 + 3 | .0000000 | .0000000 | .0000000 + 3 | .0000000 | .0000000 | .0000000 + 4 | .0000000 | .0000000 | .0000000 + 4 | .0000000 | .0000000 | .0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn*ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 2 following and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.prc,ow_sale.cn,ow_sale.cn order by ow_sale.pn desc), +win3 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.pn asc); -- mvd 1->2; 4,1,5->3; 7,5->6; 7,5->8; + cn | to_char | to_char | prc | pn | to_char | dt | to_char +----+-------------------+-------------------+------+-----+-------------------+------------+------------------- + 4 | 34642.8571429 | .5000000 | 1 | 800 | .0000000 | 1401-06-01 | 7.0000000 + 4 | 34642.8571429 | 1.0000000 | 1 | 700 | .0000000 | 1401-06-01 | 6.0000000 + 3 | 500.0000000 | 1.0000000 | 0 | 200 | .0000000 | 1401-04-01 | 1.0000000 + 3 | 500.0000000 | .5000000 | 5 | 600 | .0000000 | 1401-06-01 | 5.0000000 + 3 | 500.0000000 | 1.0000000 | 5 | 500 | .0000000 | 1401-06-01 | 4.0000000 + 2 | .0000000 | 1.0000000 | 0 | 400 | .0000000 | 1401-06-01 | 2.0000000 + 2 | .0000000 | 1.0000000 | 2400 | 100 | .0000000 | 1401-01-01 | 1.0000000 + 1 | .0000000 | .2500000 | 0 | 400 | .0000000 | 1401-06-01 | 1.0000000 + 1 | .0000000 | .7500000 | 0 | 200 | .0000000 | 1401-03-01 | 1.0000000 + 1 | .0000000 | .5000000 | 0 | 300 | .0000000 | 1401-05-02 | 1.0000000 + 1 | .0000000 | 1.0000000 | 0 | 100 | .0000000 | 1401-05-01 | 1.0000000 + 1 | .0000000 | 1.0000000 | 5 | 500 | .0000000 | 1401-06-01 | 3.0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.vn desc rows unbounded preceding ); -- mvd 4,5,1->3; + pn | qty | to_char | cn | vn +-----+------+-------------------+----+---- + 100 | 1100 | 2.0000000 | 2 | 40 + 200 | 1 | 1.5000000 | 1 | 10 + 200 | 1 | 2.0000000 | 3 | 40 + 100 | 1 | 1.7500000 | 1 | 20 + 300 | 1 | 1.6000000 | 1 | 30 + 400 | 1 | 1.5000000 | 1 | 50 + 400 | 1 | 1.5714286 | 2 | 50 + 500 | 12 | 1.5000000 | 1 | 30 + 500 | 12 | 1.6666667 | 3 | 30 + 600 | 12 | 1.8000000 | 3 | 30 + 700 | 1 | 2.0000000 | 4 | 40 + 800 | 1 | 2.1666667 | 4 | 40 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty-ow_sale.vn),floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc/ow_sale.qty) as int),cast (floor(ow_sale.cn/ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows unbounded preceding ), +win2 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 4,2->3; 2->5; + pn | vn | to_char | cn | to_char +-----+----+-------------------+----+------------------- + 100 | 40 | 1060.0000000 | 2 | 2.0000000 + 200 | 10 | 525.5000000 | 1 | .0000000 + 200 | 40 | 337.3333333 | 3 | .0000000 + 100 | 20 | 248.2500000 | 1 | .0000000 + 300 | 30 | 192.8000000 | 1 | .0000000 + 400 | 50 | 152.5000000 | 1 | .0000000 + 400 | 50 | 123.7142857 | 2 | .0000000 + 500 | 30 | 106.0000000 | 1 | .0000000 + 500 | 30 | 92.2222222 | 3 | .0000000 + 600 | 30 | 81.2000000 | 3 | .0000000 + 700 | 40 | 70.2727273 | 4 | 1.0000000 + 800 | 40 | 61.1666667 | 4 | 1.0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows floor(ow_sale.pn-ow_sale.vn) preceding ); -- mvd 6->5; + pn | cn | pn | cn | to_char | vn +-----+----+-----+----+-------------------+---- + 100 | 2 | 100 | 2 | 100.0000000 | 40 + 200 | 1 | 200 | 1 | 150.0000000 | 10 + 200 | 3 | 200 | 3 | 166.6666667 | 40 + 100 | 1 | 100 | 1 | 150.0000000 | 20 + 300 | 1 | 300 | 1 | 180.0000000 | 30 + 400 | 1 | 400 | 1 | 216.6666667 | 50 + 400 | 2 | 400 | 2 | 242.8571429 | 50 + 500 | 1 | 500 | 1 | 275.0000000 | 30 + 500 | 3 | 500 | 3 | 300.0000000 | 30 + 600 | 3 | 600 | 3 | 330.0000000 | 30 + 700 | 4 | 700 | 4 | 363.6363636 | 40 + 800 | 4 | 800 | 4 | 400.0000000 | 40 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn*ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn*ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc rows floor(ow_sale.qty) preceding ), +win2 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 7->6; 9->8; + prc | cn | cn | dt | cn | to_char | pn | to_char | vn +------+----+----+------------+----+-------------------+-----+-------------------+---- + 2400 | 2 | 2 | 1401-01-01 | 2 | 96000.0000000 | 100 | .0000000 | 40 + 0 | 1 | 1 | 1401-03-01 | 1 | 48000.0000000 | 200 | 44000.0000000 | 10 + 0 | 3 | 3 | 1401-04-01 | 3 | .0000000 | 200 | 10.0000000 | 40 + 0 | 1 | 1 | 1401-05-01 | 1 | .0000000 | 100 | 40.0000000 | 20 + 0 | 1 | 1 | 1401-05-02 | 1 | .0000000 | 300 | 20.0000000 | 30 + 0 | 1 | 1 | 1401-06-01 | 1 | .0000000 | 400 | 30.0000000 | 50 + 0 | 2 | 2 | 1401-06-01 | 2 | .0000000 | 400 | 50.0000000 | 50 + 5 | 1 | 1 | 1401-06-01 | 1 | 12018.7500000 | 500 | .0000000 | 30 + 5 | 3 | 3 | 1401-06-01 | 3 | 10700.0000000 | 500 | .0000000 | 30 + 5 | 3 | 3 | 1401-06-01 | 3 | 9645.0000000 | 600 | .0000000 | 30 + 1 | 4 | 4 | 1401-06-01 | 4 | 95.0000000 | 700 | 360.0000000 | 40 + 1 | 4 | 4 | 1401-06-01 | 4 | 40.0000000 | 800 | 40.0000000 | 40 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.cn asc rows current row ); -- mvd 6,1->5; + vn | pn | prc | qty | to_char | cn +----+-----+------+------+-------------------+---- + 40 | 100 | 2400 | 1100 | 100.0000000 | 2 + 10 | 200 | 0 | 1 | 200.0000000 | 1 + 40 | 200 | 0 | 1 | 200.0000000 | 3 + 20 | 100 | 0 | 1 | 100.0000000 | 1 + 30 | 300 | 0 | 1 | 300.0000000 | 1 + 50 | 400 | 0 | 1 | 400.0000000 | 1 + 50 | 400 | 0 | 1 | 400.0000000 | 2 + 30 | 500 | 5 | 12 | 500.0000000 | 1 + 30 | 500 | 5 | 12 | 500.0000000 | 3 + 30 | 600 | 5 | 12 | 600.0000000 | 3 + 40 | 700 | 1 | 1 | 700.0000000 | 4 + 40 | 800 | 1 | 1 | 800.0000000 | 4 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn+ow_sale.cn),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.dt order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows current row ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.dt order by ow_sale.pn desc), +win4 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.prc order by ow_sale.cn desc); -- mvd 3->5; 7->6; 3->8; 1,10,7,11->9; 1,10,7,11->12; 1,7,3->13; + prc | qty | vn | qty | to_char | to_char | cn | to_char | to_char | dt | pn | to_char | to_char +------+------+----+------+-------------------+-------------------+----+-------------------+-------------------+------------+-----+-------------------+------------------- + 2400 | 1100 | 40 | 1100 | 42.0000000 | 3.0000000 | 2 | 40.0000000 | 1.0000000 | 1401-01-01 | 100 | 1.0000000 | 1.0000000 + 0 | 1 | 10 | 1 | 11.0000000 | 3.0000000 | 1 | 10.0000000 | 1.0000000 | 1401-03-01 | 200 | 1.0000000 | 1.0000000 + 0 | 1 | 40 | 1 | 43.0000000 | 1.0000000 | 3 | 40.0000000 | 1.0000000 | 1401-04-01 | 200 | 1.0000000 | 1.0000000 + 0 | 1 | 20 | 1 | 21.0000000 | 1.0000000 | 1 | 20.0000000 | 1.0000000 | 1401-05-01 | 100 | 1.0000000 | 1.0000000 + 0 | 1 | 30 | 1 | 31.0000000 | 1.0000000 | 1 | 30.0000000 | 1.0000000 | 1401-05-02 | 300 | 1.0000000 | 1.0000000 + 0 | 1 | 50 | 1 | 51.0000000 | 2.0000000 | 1 | 50.0000000 | 1.0000000 | 1401-06-01 | 400 | 1.0000000 | 1.0000000 + 0 | 1 | 50 | 1 | 52.0000000 | 3.0000000 | 2 | 50.0000000 | 1.0000000 | 1401-06-01 | 400 | 1.0000000 | 1.0000000 + 5 | 12 | 30 | 12 | 31.0000000 | 3.0000000 | 1 | 30.0000000 | 1.0000000 | 1401-06-01 | 500 | 1.0000000 | 1.0000000 + 5 | 12 | 30 | 12 | 33.0000000 | 4.0000000 | 3 | 30.0000000 | 1.0000000 | 1401-06-01 | 500 | 1.0000000 | 1.0000000 + 5 | 12 | 30 | 12 | 33.0000000 | .0000000 | 3 | 30.0000000 | 1.0000000 | 1401-06-01 | 600 | 1.0000000 | 1.0000000 + 1 | 1 | 40 | 1 | 44.0000000 | .0000000 | 4 | 40.0000000 | 1.0000000 | 1401-06-01 | 700 | 1.0000000 | 1.0000000 + 1 | 1 | 40 | 1 | 44.0000000 | .0000000 | 4 | 40.0000000 | 1.0000000 | 1401-06-01 | 800 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.prc*ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.pn desc rows between unbounded preceding and floor(ow_sale.prc) preceding ); -- mvd 1->7; + pn | vn | qty | pn | vn | vn | to_char +-----+----+------+-----+----+----+------------------- + 100 | 40 | 1100 | 100 | 40 | 40 | .0000000 + 200 | 10 | 1 | 200 | 10 | 10 | 1200.0000000 + 200 | 40 | 1 | 200 | 40 | 40 | 800.0000000 + 100 | 20 | 1 | 100 | 20 | 20 | 600.0000000 + 300 | 30 | 1 | 300 | 30 | 30 | 480.0000000 + 400 | 50 | 1 | 400 | 50 | 50 | 400.0000000 + 400 | 50 | 1 | 400 | 50 | 50 | 342.8571429 + 500 | 30 | 12 | 500 | 30 | 30 | 800.0000000 + 500 | 30 | 12 | 500 | 30 | 30 | 600.0000000 + 600 | 30 | 12 | 600 | 30 | 30 | 480.0000000 + 700 | 40 | 1 | 700 | 40 | 40 | 241.5000000 + 800 | 40 | 1 | 800 | 40 | 40 | 219.6363636 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn*ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.qty) preceding ), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.prc,ow_sale.dt,ow_sale.pn,ow_sale.vn order by ow_sale.cn asc), +win3 as (order by ow_sale.pn desc); -- mvd 4->3; 6,4,7,8,1->5; 1->9; + pn | pn | to_char | cn | to_char | prc | dt | vn | to_char +-----+-----+-------------------+----+-------------------+------+------------+----+------------------- + 800 | 800 | 70.9090909 | 4 | .0000000 | 1 | 1401-06-01 | 40 | 1.0000000 + 700 | 700 | 62.0000000 | 4 | .0000000 | 1 | 1401-06-01 | 40 | 2.0000000 + 600 | 600 | .0000000 | 3 | .0000000 | 5 | 1401-06-01 | 30 | 3.0000000 + 500 | 500 | .0000000 | 1 | .0000000 | 5 | 1401-06-01 | 30 | 4.0000000 + 500 | 500 | .0000000 | 3 | 1.0000000 | 5 | 1401-06-01 | 30 | 4.0000000 + 400 | 400 | 51.6666667 | 2 | 1.0000000 | 0 | 1401-06-01 | 50 | 5.0000000 + 400 | 400 | 52.0000000 | 1 | .0000000 | 0 | 1401-06-01 | 50 | 5.0000000 + 300 | 300 | 57.5000000 | 1 | .0000000 | 0 | 1401-05-02 | 30 | 6.0000000 + 200 | 200 | 45.0000000 | 3 | .0000000 | 0 | 1401-04-01 | 40 | 7.0000000 + 200 | 200 | 80.0000000 | 1 | .0000000 | 0 | 1401-03-01 | 10 | 7.0000000 + 100 | 100 | .0000000 | 2 | .0000000 | 2400 | 1401-01-01 | 40 | 8.0000000 + 100 | 100 | 70.0000000 | 1 | .0000000 | 0 | 1401-05-01 | 20 | 8.0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 1,2->3; + cn | vn | to_char +----+----+------------------- + 2 | 40 | 1100.0000000 + 1 | 10 | 550.5000000 + 3 | 40 | 367.3333333 + 1 | 20 | 275.7500000 + 1 | 30 | 220.8000000 + 1 | 50 | 184.1666667 + 2 | 50 | 158.0000000 + 1 | 30 | 139.7500000 + 3 | 30 | 125.5555556 + 3 | 30 | 114.2000000 + 4 | 40 | 103.9090909 + 4 | 40 | 95.3333333 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn),floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.dt order by ow_sale.cn asc), +win4 as (order by ow_sale.cn desc); -- mvd 3->2; 5->4; 7,5,8,3->6; 7,5,8,3->9; 5->10; 5->11; + qty | to_char | pn | to_char | cn | to_char | dt | vn | to_char | to_char | to_char +------+-------------------+-----+-------------------+----+-------------------+------------+----+-------------------+-------------------+------------------- + 1 | 2.1666667 | 800 | .9090909 | 4 | .0000000 | 1401-06-01 | 40 | 1.0000000 | 4.0000000 | 1.0000000 + 1 | 2.0000000 | 700 | .9090909 | 4 | .0000000 | 1401-06-01 | 40 | 1.0000000 | 4.0000000 | 1.0000000 + 1 | 2.0000000 | 200 | .6363636 | 3 | .0000000 | 1401-04-01 | 40 | 1.0000000 | 3.0000000 | 2.0000000 + 12 | 1.8000000 | 600 | .6363636 | 3 | .0000000 | 1401-06-01 | 30 | 1.0000000 | 3.0000000 | 2.0000000 + 12 | 1.6666667 | 500 | .6363636 | 3 | .0000000 | 1401-06-01 | 30 | 1.0000000 | 3.0000000 | 2.0000000 + 1 | 1.5714286 | 400 | .4545455 | 2 | .0000000 | 1401-06-01 | 50 | 1.0000000 | 2.0000000 | 3.0000000 + 1100 | 2.0000000 | 100 | .4545455 | 2 | .0000000 | 1401-01-01 | 40 | 1.0000000 | 2.0000000 | 3.0000000 + 1 | 1.5000000 | 400 | .0000000 | 1 | .0000000 | 1401-06-01 | 50 | 1.0000000 | 1.0000000 | 4.0000000 + 1 | 1.6000000 | 300 | .0000000 | 1 | .0000000 | 1401-05-02 | 30 | 1.0000000 | 1.0000000 | 4.0000000 + 1 | 1.7500000 | 100 | .0000000 | 1 | .0000000 | 1401-05-01 | 20 | 1.0000000 | 1.0000000 | 4.0000000 + 12 | 1.5000000 | 500 | .0000000 | 1 | .0000000 | 1401-06-01 | 30 | 1.0000000 | 1.0000000 | 4.0000000 + 1 | 1.5000000 | 200 | .0000000 | 1 | .0000000 | 1401-03-01 | 10 | 1.0000000 | 1.0000000 | 4.0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and 1 following ); -- mvd 5->4; + vn | pn | pn | to_char | cn +----+-----+-----+-------------------+---- + 40 | 100 | 100 | .0000000 | 2 + 10 | 200 | 200 | .0000000 | 1 + 40 | 200 | 200 | .0000000 | 3 + 20 | 100 | 100 | .0000000 | 1 + 30 | 300 | 300 | .0000000 | 1 + 50 | 400 | 400 | .0000000 | 1 + 50 | 400 | 400 | .0000000 | 2 + 30 | 500 | 500 | .0000000 | 1 + 30 | 500 | 500 | .0000000 | 3 + 30 | 600 | 600 | .0000000 | 3 + 40 | 700 | 700 | .0000000 | 4 + 40 | 800 | 800 | .0000000 | 4 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn),floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 3->2; + vn | to_char | cn +----+-------------------+---- + 40 | 400.0000000 | 2 + 10 | 400.0000000 | 1 + 40 | 400.0000000 | 3 + 20 | 400.0000000 | 1 + 30 | 400.0000000 | 1 + 50 | 400.0000000 | 1 + 50 | 400.0000000 | 2 + 30 | 400.0000000 | 1 + 30 | 400.0000000 | 3 + 30 | 400.0000000 | 3 + 40 | 400.0000000 | 4 + 40 | 400.0000000 | 4 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty-ow_sale.cn),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.prc,ow_sale.dt,ow_sale.prc order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.pn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.prc order by ow_sale.vn desc); -- mvd 3,4->2; 3,4->5; 7,8,9->6; 7,8,9->10; + qty | to_char | cn | pn | to_char | to_char | prc | dt | vn | to_char +------+-------------------+----+-----+-------------------+-------------------+------+------------+----+------------------- + 1100 | 93.1666667 | 2 | 100 | 10.0000000 | 1.0000000 | 2400 | 1401-01-01 | 40 | .0000000 + 1 | 93.1666667 | 1 | 200 | 10.0000000 | 1.0000000 | 0 | 1401-03-01 | 10 | .0000000 + 1 | 93.1666667 | 3 | 200 | 10.0000000 | 1.0000000 | 0 | 1401-04-01 | 40 | .0000000 + 1 | 93.1666667 | 1 | 100 | 10.0000000 | 1.0000000 | 0 | 1401-05-01 | 20 | .0000000 + 1 | 93.1666667 | 1 | 300 | 10.0000000 | 1.0000000 | 0 | 1401-05-02 | 30 | .0000000 + 1 | 93.1666667 | 1 | 400 | 10.0000000 | 1.0000000 | 0 | 1401-06-01 | 50 | .0000000 + 1 | 93.1666667 | 2 | 400 | 10.0000000 | 1.0000000 | 0 | 1401-06-01 | 50 | .0000000 + 12 | 93.1666667 | 1 | 500 | 10.0000000 | 1.0000000 | 5 | 1401-06-01 | 30 | .0000000 + 12 | 93.1666667 | 3 | 500 | 10.0000000 | 1.0000000 | 5 | 1401-06-01 | 30 | .0000000 + 12 | 93.1666667 | 3 | 600 | 10.0000000 | 1.0000000 | 5 | 1401-06-01 | 30 | .0000000 + 1 | 93.1666667 | 4 | 700 | 10.0000000 | 1.0000000 | 1 | 1401-06-01 | 40 | .0000000 + 1 | 93.1666667 | 4 | 800 | 10.0000000 | 1.0000000 | 1 | 1401-06-01 | 40 | .0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn-ow_sale.qty),floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between 7 preceding and 9 preceding ); -- mvd 6->7; + qty | dt | prc | dt | qty | vn | to_char +------+------------+------+------------+------+----+------------------- + 1100 | 1401-01-01 | 2400 | 1401-01-01 | 1100 | 40 | .0000000 + 1 | 1401-03-01 | 0 | 1401-03-01 | 1 | 10 | .0000000 + 1 | 1401-04-01 | 0 | 1401-04-01 | 1 | 40 | .0000000 + 1 | 1401-05-01 | 0 | 1401-05-01 | 1 | 20 | .0000000 + 1 | 1401-05-02 | 0 | 1401-05-02 | 1 | 30 | .0000000 + 1 | 1401-06-01 | 0 | 1401-06-01 | 1 | 50 | .0000000 + 1 | 1401-06-01 | 0 | 1401-06-01 | 1 | 50 | .0000000 + 12 | 1401-06-01 | 5 | 1401-06-01 | 12 | 30 | .0000000 + 12 | 1401-06-01 | 5 | 1401-06-01 | 12 | 30 | .0000000 + 12 | 1401-06-01 | 5 | 1401-06-01 | 12 | 30 | .0000000 + 1 | 1401-06-01 | 1 | 1401-06-01 | 1 | 40 | .0000000 + 1 | 1401-06-01 | 1 | 1401-06-01 | 1 | 40 | .0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between 1 preceding and current row ); -- mvd 7,2->6; + vn | pn | vn | vn | qty | to_char | cn +----+-----+----+----+------+-------------------+---- + 40 | 100 | 40 | 40 | 1100 | 40.0000000 | 2 + 10 | 200 | 10 | 10 | 1 | 25.0000000 | 1 + 40 | 200 | 40 | 40 | 1 | 25.0000000 | 3 + 20 | 100 | 20 | 20 | 1 | 30.0000000 | 1 + 30 | 300 | 30 | 30 | 1 | 25.0000000 | 1 + 50 | 400 | 50 | 50 | 1 | 40.0000000 | 1 + 50 | 400 | 50 | 50 | 1 | 50.0000000 | 2 + 30 | 500 | 30 | 30 | 12 | 40.0000000 | 1 + 30 | 500 | 30 | 30 | 12 | 30.0000000 | 3 + 30 | 600 | 30 | 30 | 12 | 30.0000000 | 3 + 40 | 700 | 40 | 40 | 1 | 35.0000000 | 4 + 40 | 800 | 40 | 40 | 1 | 40.0000000 | 4 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn+ow_sale.qty),floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn*ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.pn/ow_sale.pn) preceding and 2 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc*ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.pn/ow_sale.pn) preceding and 2 following ), +win2 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.dt order by ow_sale.cn desc); -- mvd 1->2; 4,5,1->3; 1->6; 4,5,1->7; 4,5,1->8; + cn | to_char | to_char | prc | dt | to_char | to_char | to_char +----+-------------------+-------------------+------+------------+-------------------+-------------------+------------------- + 2 | 397.3333333 | 1.0000000 | 2400 | 1401-01-01 | 3.0000000 | 1.0000000 | 1.0000000 + 1 | 303.2500000 | 1.0000000 | 0 | 1401-03-01 | 4.0000000 | 1.0000000 | 1.0000000 + 3 | 26.0000000 | 1.0000000 | 0 | 1401-04-01 | 4.0000000 | 1.0000000 | 1.0000000 + 1 | 36.0000000 | 1.0000000 | 0 | 1401-05-01 | 4.0000000 | 1.0000000 | 1.0000000 + 1 | 38.5000000 | 1.0000000 | 0 | 1401-05-02 | 4.0000000 | 1.0000000 | 1.0000000 + 1 | 43.7500000 | 1.0000000 | 0 | 1401-06-01 | 4.0000000 | 1.0000000 | 1.0000000 + 2 | 46.5000000 | 1.0000000 | 0 | 1401-06-01 | 4.0000000 | 1.0000000 | 1.0000000 + 1 | 44.2500000 | 1.0000000 | 5 | 1401-06-01 | 4.0000000 | 1.0000000 | 1.0000000 + 3 | 41.7500000 | 1.0000000 | 5 | 1401-06-01 | 4.0000000 | 1.0000000 | 2.0000000 + 3 | 41.5000000 | 1.0000000 | 5 | 1401-06-01 | 4.0000000 | 1.0000000 | 2.0000000 + 4 | 41.3333333 | 1.0000000 | 1 | 1401-06-01 | 3.0000000 | 1.0000000 | 2.0000000 + 4 | 41.0000000 | 1.0000000 | 1 | 1401-06-01 | 2.0000000 | 1.0000000 | 2.0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn-ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.qty) preceding and unbounded following ); -- mvd 1->6; + vn | qty | cn | pn | dt | to_char +----+------+----+-----+------------+------------------- + 40 | 1100 | 2 | 100 | 1401-01-01 | -32.0000000 + 10 | 1 | 1 | 200 | 1401-03-01 | -32.0000000 + 40 | 1 | 3 | 200 | 1401-04-01 | -31.4545455 + 20 | 1 | 1 | 100 | 1401-05-01 | -33.7000000 + 30 | 1 | 1 | 300 | 1401-05-02 | -33.3333333 + 50 | 1 | 1 | 400 | 1401-06-01 | -35.1250000 + 50 | 1 | 2 | 400 | 1401-06-01 | -36.0000000 + 30 | 12 | 1 | 500 | 1401-06-01 | -32.0000000 + 30 | 12 | 3 | 500 | 1401-06-01 | -32.0000000 + 30 | 12 | 3 | 600 | 1401-06-01 | -32.0000000 + 40 | 1 | 4 | 700 | 1401-06-01 | -33.0000000 + 40 | 1 | 4 | 800 | 1401-06-01 | -36.0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn/ow_sale.qty),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and current row ); -- mvd 1->4; + pn | cn | cn | to_char +-----+----+----+------------------- + 100 | 2 | 2 | .0000000 + 200 | 1 | 1 | 200.0000000 + 200 | 3 | 3 | 200.0000000 + 100 | 1 | 1 | 100.0000000 + 300 | 1 | 1 | 300.0000000 + 400 | 1 | 1 | 400.0000000 + 400 | 2 | 2 | 400.0000000 + 500 | 1 | 1 | 41.0000000 + 500 | 3 | 3 | 41.0000000 + 600 | 3 | 3 | 50.0000000 + 700 | 4 | 4 | 700.0000000 + 800 | 4 | 4 | 800.0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn),floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn-ow_sale.pn) as int),cast (floor(ow_sale.vn*ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc rows between current row and current row ), +win2 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 3,4->2; 6,7,4->5; 4->8; 4->9; 4->10; + qty | to_char | cn | pn | to_char | dt | vn | to_char | to_char | to_char +------+-------------------+----+-----+-------------------+------------+----+-------------------+-------------------+------------------- + 1100 | 2.0000000 | 2 | 100 | 1.0000000 | 1401-01-01 | 40 | .0000000 | .0833333 | 2.0000000 + 1 | 1.0000000 | 1 | 200 | 1.0000000 | 1401-03-01 | 10 | .0000000 | .1666667 | 2.0000000 + 1 | 3.0000000 | 3 | 200 | 1.0000000 | 1401-04-01 | 40 | .0000000 | .2500000 | 3.0000000 + 1 | 1.0000000 | 1 | 100 | 1.0000000 | 1401-05-01 | 20 | .0000000 | .3333333 | 3.0000000 + 1 | 1.0000000 | 1 | 300 | 1.0000000 | 1401-05-02 | 30 | .0000000 | .4166667 | 3.0000000 + 1 | 1.0000000 | 1 | 400 | 1.0000000 | 1401-06-01 | 50 | .0000000 | .5000000 | 3.0000000 + 1 | 2.0000000 | 2 | 400 | 1.0000000 | 1401-06-01 | 50 | .0000000 | .5833333 | 3.0000000 + 12 | 1.0000000 | 1 | 500 | .6666667 | 1401-06-01 | 30 | .0000000 | .6666667 | 3.0000000 + 12 | 3.0000000 | 3 | 500 | .6666667 | 1401-06-01 | 30 | .0000000 | .7500000 | 3.0000000 + 12 | 3.0000000 | 3 | 600 | 1.0000000 | 1401-06-01 | 30 | .0000000 | .8333333 | 3.0000000 + 1 | 4.0000000 | 4 | 700 | .5000000 | 1401-06-01 | 40 | .0000000 | .9166667 | 4.0000000 + 1 | 4.0000000 | 4 | 800 | 1.0000000 | 1401-06-01 | 40 | .0000000 | 1.0000000 | 4.0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn+ow_sale.pn),floor(ow_sale.prc*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between current row and floor(ow_sale.prc) following ); -- mvd 7,8->6; + vn | prc | vn | vn | dt | to_char | cn | pn +----+------+----+----+------------+-------------------+----+----- + 40 | 2400 | 40 | 40 | 1401-01-01 | 402.1666667 | 2 | 100 + 10 | 0 | 10 | 10 | 1401-03-01 | 201.0000000 | 1 | 200 + 40 | 0 | 40 | 40 | 1401-04-01 | 203.0000000 | 3 | 200 + 20 | 0 | 20 | 20 | 1401-05-01 | 101.0000000 | 1 | 100 + 30 | 0 | 30 | 30 | 1401-05-02 | 301.0000000 | 1 | 300 + 50 | 0 | 50 | 50 | 1401-06-01 | 401.0000000 | 1 | 400 + 50 | 0 | 50 | 50 | 1401-06-01 | 402.0000000 | 2 | 400 + 30 | 5 | 30 | 30 | 1401-06-01 | 623.0000000 | 1 | 500 + 30 | 5 | 30 | 30 | 1401-06-01 | 653.5000000 | 3 | 500 + 30 | 5 | 30 | 30 | 1401-06-01 | 703.6666667 | 3 | 600 + 40 | 1 | 40 | 40 | 1401-06-01 | 754.0000000 | 4 | 700 + 40 | 1 | 40 | 40 | 1401-06-01 | 804.0000000 | 4 | 800 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and 3 following ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.dt order by ow_sale.pn asc); -- mvd 1->2; 4,1->3; + pn | to_char | to_char | dt +-----+-------------------+-------------------+------------ + 100 | 27.5000000 | 1.0000000 | 1401-01-01 + 200 | 25.0000000 | 1.0000000 | 1401-03-01 + 200 | 35.0000000 | 1.0000000 | 1401-04-01 + 100 | 37.5000000 | 1.0000000 | 1401-05-01 + 300 | 40.0000000 | 1.0000000 | 1401-05-02 + 400 | 40.0000000 | 2.0000000 | 1401-06-01 + 400 | 35.0000000 | 1.0000000 | 1401-06-01 + 500 | 32.5000000 | 1.0000000 | 1401-06-01 + 500 | 35.0000000 | 2.0000000 | 1401-06-01 + 600 | 36.6666667 | 1.0000000 | 1401-06-01 + 700 | 40.0000000 | 1.0000000 | 1401-06-01 + 800 | 40.0000000 | 1.0000000 | 1401-06-01 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.prc*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc,ow_sale.vn asc rows between current row and unbounded following ); -- mvd 1,4->3; + vn | cn | to_char | pn +----+----+-------------------+----- + 40 | 2 | 34.1666667 | 100 + 10 | 1 | 33.6363636 | 200 + 40 | 3 | 36.0000000 | 200 + 20 | 1 | 35.5555556 | 100 + 30 | 1 | 37.5000000 | 300 + 50 | 1 | 38.5714286 | 400 + 50 | 2 | 36.6666667 | 400 + 30 | 1 | 34.0000000 | 500 + 30 | 3 | 35.0000000 | 500 + 30 | 3 | 36.6666667 | 600 + 40 | 4 | 40.0000000 | 700 + 40 | 4 | 40.0000000 | 800 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn/ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc*ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between current row and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.prc order by ow_sale.cn desc); -- mvd 1->6; 1->7; 9,3,1->8; 9,3,1->10; + vn | dt | cn | vn | pn | to_char | to_char | to_char | prc | to_char +----+------------+----+----+-----+-------------------+-------------------+-------------------+------+------------------- + 40 | 1401-01-01 | 2 | 40 | 100 | .0000000 | 12.0000000 | 1.0000000 | 2400 | .0000000 + 10 | 1401-03-01 | 1 | 10 | 200 | .0000000 | 11.0000000 | 1.0000000 | 0 | .0000000 + 40 | 1401-04-01 | 3 | 40 | 200 | .0000000 | 10.0000000 | 1.0000000 | 0 | .0000000 + 20 | 1401-05-01 | 1 | 20 | 100 | .0000000 | 9.0000000 | 1.0000000 | 0 | .0000000 + 30 | 1401-05-02 | 1 | 30 | 300 | .0000000 | 8.0000000 | 1.0000000 | 0 | .0000000 + 50 | 1401-06-01 | 1 | 50 | 400 | .0000000 | 7.0000000 | 1.0000000 | 0 | .0000000 + 50 | 1401-06-01 | 2 | 50 | 400 | .0000000 | 6.0000000 | 1.0000000 | 0 | .0000000 + 30 | 1401-06-01 | 1 | 30 | 500 | .0000000 | 5.0000000 | 1.0000000 | 5 | .0000000 + 30 | 1401-06-01 | 3 | 30 | 500 | .0000000 | 4.0000000 | 1.0000000 | 5 | .0000000 + 30 | 1401-06-01 | 3 | 30 | 600 | .0000000 | 3.0000000 | 1.0000000 | 5 | .0000000 + 40 | 1401-06-01 | 4 | 40 | 700 | .0000000 | 2.0000000 | 1.0000000 | 1 | .0000000 + 40 | 1401-06-01 | 4 | 40 | 800 | .0000000 | 1.0000000 | 1.0000000 | 1 | .0000000 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between floor(ow_sale.qty) following and floor(ow_sale.cn) following ); -- mvd 3,4->2; + vn | to_char | cn | pn +----+-------------------+----+----- + 40 | .0000000 | 2 | 100 + 10 | -40.0000000 | 1 | 200 + 40 | -33.3333333 | 3 | 200 + 20 | -30.0000000 | 1 | 100 + 30 | -50.0000000 | 1 | 300 + 50 | -50.0000000 | 1 | 400 + 50 | -25.0000000 | 2 | 400 + 30 | .0000000 | 1 | 500 + 30 | .0000000 | 3 | 500 + 30 | .0000000 | 3 | 600 + 40 | -39.0000000 | 4 | 700 + 40 | .0000000 | 4 | 800 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.cn asc rows between 4 following and floor(ow_sale.cn) following ), +win2 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc); -- mvd 3,5->4; 1,7,8,5->6; + prc | prc | cn | to_char | pn | to_char | dt | vn +------+------+----+-------------------+-----+-------------------+------------+---- + 2400 | 2400 | 2 | .0000000 | 100 | .0000000 | 1401-01-01 | 40 + 0 | 0 | 1 | .0000000 | 200 | .0000000 | 1401-03-01 | 10 + 0 | 0 | 3 | .0000000 | 200 | .0000000 | 1401-04-01 | 40 + 0 | 0 | 1 | .0000000 | 100 | .0000000 | 1401-05-01 | 20 + 0 | 0 | 1 | .0000000 | 300 | .0000000 | 1401-05-02 | 30 + 0 | 0 | 1 | .0000000 | 400 | .0000000 | 1401-06-01 | 50 + 0 | 0 | 2 | .0000000 | 400 | .0000000 | 1401-06-01 | 50 + 5 | 5 | 1 | .0000000 | 500 | .0000000 | 1401-06-01 | 30 + 5 | 5 | 3 | .0000000 | 500 | .0000000 | 1401-06-01 | 30 + 5 | 5 | 3 | .0000000 | 600 | .0000000 | 1401-06-01 | 30 + 1 | 1 | 4 | .0000000 | 700 | .0000000 | 1401-06-01 | 40 + 1 | 1 | 4 | .0000000 | 800 | .0000000 | 1401-06-01 | 40 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc*ow_sale.cn),floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.vn asc rows between floor(ow_sale.prc) following and unbounded following ); -- mvd 1,3->2; + cn | to_char | vn +----+-------------------+---- + 2 | .0000000 | 40 + 1 | 3.9090909 | 10 + 3 | 4.3000000 | 40 + 1 | 4.7777778 | 20 + 1 | 5.3750000 | 30 + 1 | 6.1428571 | 50 + 2 | 7.1666667 | 50 + 1 | .0000000 | 30 + 3 | .0000000 | 30 + 3 | .0000000 | 30 + 4 | 4.0000000 | 40 + 4 | .0000000 | 40 +(12 rows) + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc-ow_sale.prc),floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.pn asc rows between 2 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between 2 following and unbounded following ), +win2 as (order by ow_sale.pn desc); -- mvd 2->3; 2->4; 2->5; + prc | pn | to_char | to_char | to_char +------+-----+-------------------+-------------------+------------------- + 1 | 800 | .0000000 | .0000000 | 1.0000000 + 1 | 700 | .0000000 | .0000000 | 2.0000000 + 5 | 600 | .0000000 | 1.0000000 | 3.0000000 + 5 | 500 | .0000000 | 5.0000000 | 4.0000000 + 5 | 500 | .0000000 | 1.0000000 | 4.0000000 + 0 | 400 | .0000000 | 5.0000000 | 6.0000000 + 0 | 400 | .0000000 | 5.0000000 | 6.0000000 + 0 | 300 | .0000000 | 5.0000000 | 8.0000000 + 0 | 200 | .0000000 | 5.0000000 | 9.0000000 + 0 | 200 | .0000000 | 5.0000000 | 9.0000000 + 2400 | 100 | .0000000 | 5.0000000 | 11.0000000 + 0 | 100 | .0000000 | 5.0000000 | 11.0000000 +(12 rows) + +-- REGR_AVGY() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn*ow_sale.prc),floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.cn asc); -- mvd 3,4->2; + prc | to_char | dt | cn +------+-------------------+------------+---- + 0 | .0000000 | 1401-05-01 | 1 + 0 | .0000000 | 1401-06-01 | 2 + 0 | .0000000 | 1401-04-01 | 3 + 1 | 40.0000000 | 1401-06-01 | 4 + 1 | 40.0000000 | 1401-06-01 | 4 + 0 | .0000000 | 1401-03-01 | 1 + 0 | .0000000 | 1401-05-02 | 1 + 0 | 75.0000000 | 1401-06-01 | 1 + 5 | 75.0000000 | 1401-06-01 | 1 + 2400 | 96000.0000000 | 1401-01-01 | 2 + 5 | 150.0000000 | 1401-06-01 | 3 + 5 | 150.0000000 | 1401-06-01 | 3 +(12 rows) + +-- REGR_AVGY() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty+ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.vn,ow_sale.dt order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.dt order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.dt order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.vn asc); -- mvd 2,1->3; 2,1->4; 2,1->5; 2,1->6; 2,1->7; 2,1->8; + vn | dt | to_char | to_char | to_char | to_char | to_char | to_char +----+------------+-------------------+-------------------+-------------------+-------------------+-------------------+------------------- + 10 | 1401-03-01 | 2.0000000 | 1.0000000 | 1.0000000 | -9.0000000 | 1.0000000 | 1.0000000 + 30 | 1401-05-02 | 2.0000000 | 1.0000000 | 1.0000000 | -29.0000000 | 1.0000000 | 1.0000000 + 30 | 1401-06-01 | 14.3333333 | 1.0000000 | .0000000 | -18.0000000 | 1.0000000 | 3.0000000 + 30 | 1401-06-01 | 14.3333333 | 1.0000000 | .0000000 | -18.0000000 | 2.0000000 | 3.0000000 + 30 | 1401-06-01 | 14.3333333 | 1.0000000 | .0000000 | -18.0000000 | 3.0000000 | 3.0000000 + 40 | 1401-06-01 | 5.0000000 | 1.0000000 | 4.0000000 | -39.0000000 | 1.0000000 | 2.0000000 + 40 | 1401-06-01 | 5.0000000 | 1.0000000 | 4.0000000 | -39.0000000 | 2.0000000 | 2.0000000 + 50 | 1401-06-01 | 2.5000000 | 1.0000000 | 1.0000000 | -49.0000000 | 1.0000000 | 2.0000000 + 50 | 1401-06-01 | 2.5000000 | 1.0000000 | 1.0000000 | -49.0000000 | 2.0000000 | 2.0000000 + 20 | 1401-05-01 | 2.0000000 | 1.0000000 | 1.0000000 | -19.0000000 | 1.0000000 | 1.0000000 + 40 | 1401-01-01 | 1102.0000000 | 1.0000000 | .0000000 | 1060.0000000 | 1.0000000 | 1.0000000 + 40 | 1401-04-01 | 4.0000000 | 1.0000000 | 3.0000000 | -39.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.dt order by ow_sale.pn desc range unbounded preceding ); -- mvd 3,4,5,6->2; + cn | to_char | prc | dt | vn | pn +----+-------------------+------+------------+----+----- + 1 | 1.0000000 | 0 | 1401-03-01 | 10 | 200 + 1 | 1.0000000 | 0 | 1401-05-02 | 30 | 300 + 3 | 8.0000000 | 5 | 1401-06-01 | 30 | 600 + 1 | 7.3333333 | 5 | 1401-06-01 | 30 | 500 + 3 | 7.3333333 | 5 | 1401-06-01 | 30 | 500 + 2 | 1.5000000 | 0 | 1401-06-01 | 50 | 400 + 1 | 1.5000000 | 0 | 1401-06-01 | 50 | 400 + 2 | 2402.0000000 | 2400 | 1401-01-01 | 40 | 100 + 3 | 3.0000000 | 0 | 1401-04-01 | 40 | 200 + 1 | 1.0000000 | 0 | 1401-05-01 | 20 | 100 + 4 | 5.0000000 | 1 | 1401-06-01 | 40 | 800 + 4 | 5.0000000 | 1 | 1401-06-01 | 40 | 700 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc-ow_sale.qty),floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.vn asc range unbounded preceding ), +win2 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 5,6,1,7->4; 1->8; 1->9; + vn | vn | qty | to_char | prc | dt | pn | to_char | to_char +----+----+------+-------------------+------+------------+-----+-------------------+------------------- + 40 | 40 | 1100 | 1300.0000000 | 2400 | 1401-01-01 | 100 | .0000000 | .0833333 + 10 | 10 | 1 | -1.0000000 | 0 | 1401-03-01 | 200 | .0000000 | .1666667 + 40 | 40 | 1 | -1.0000000 | 0 | 1401-04-01 | 200 | .0000000 | .2500000 + 20 | 20 | 1 | -1.0000000 | 0 | 1401-05-01 | 100 | .0000000 | .3333333 + 30 | 30 | 1 | -1.0000000 | 0 | 1401-05-02 | 300 | .0000000 | .4166667 + 50 | 50 | 1 | -1.0000000 | 0 | 1401-06-01 | 400 | .0000000 | .5000000 + 50 | 50 | 1 | -1.0000000 | 0 | 1401-06-01 | 400 | 5.0000000 | .5833333 + 30 | 30 | 12 | -7.0000000 | 5 | 1401-06-01 | 500 | .0000000 | .6666667 + 30 | 30 | 12 | -7.0000000 | 5 | 1401-06-01 | 500 | .0000000 | .7500000 + 30 | 30 | 12 | -7.0000000 | 5 | 1401-06-01 | 600 | .0000000 | .8333333 + 40 | 40 | 1 | .0000000 | 1 | 1401-06-01 | 700 | 1.0000000 | .9166667 + 40 | 40 | 1 | .0000000 | 1 | 1401-06-01 | 800 | .0000000 | 1.0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.pn/ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn asc range floor(ow_sale.qty/ow_sale.cn) preceding ); -- mvd 2,1->5; + vn | dt | qty | vn | to_char +----+------------+------+----+------------------- + 10 | 1401-03-01 | 1 | 10 | -10.0000000 + 30 | 1401-05-02 | 1 | 30 | -30.0000000 + 30 | 1401-06-01 | 12 | 30 | -25.0000000 + 30 | 1401-06-01 | 12 | 30 | -25.0000000 + 30 | 1401-06-01 | 12 | 30 | -25.0000000 + 40 | 1401-06-01 | 1 | 40 | -39.0000000 + 40 | 1401-06-01 | 1 | 40 | -39.0000000 + 50 | 1401-06-01 | 1 | 50 | -50.0000000 + 50 | 1401-06-01 | 1 | 50 | -50.0000000 + 40 | 1401-01-01 | 1100 | 40 | 2360.0000000 + 40 | 1401-04-01 | 1 | 40 | -40.0000000 + 20 | 1401-05-01 | 1 | 20 | -20.0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.vn asc range 2 preceding ), +win2 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 5,1,3,6->4; 3->7; + dt | qty | vn | to_char | cn | pn | to_char +------------+------+----+-------------------+----+-----+------------------- + 1401-01-01 | 1100 | 40 | 2400.0000000 | 2 | 100 | -3.0000000 + 1401-03-01 | 1 | 10 | .0000000 | 1 | 200 | -3.0000000 + 1401-04-01 | 1 | 40 | .0000000 | 3 | 200 | -1.0000000 + 1401-05-01 | 1 | 20 | .0000000 | 1 | 100 | -1.0000000 + 1401-05-02 | 1 | 30 | .0000000 | 1 | 300 | -1.0000000 + 1401-06-01 | 1 | 50 | .0000000 | 1 | 400 | -2.0000000 + 1401-06-01 | 1 | 50 | .0000000 | 2 | 400 | 2.0000000 + 1401-06-01 | 12 | 30 | 5.0000000 | 1 | 500 | 2.0000000 + 1401-06-01 | 12 | 30 | 5.0000000 | 3 | 500 | -3.0000000 + 1401-06-01 | 12 | 30 | 5.0000000 | 3 | 600 | .0000000 + 1401-06-01 | 1 | 40 | 1.0000000 | 4 | 700 | .0000000 + 1401-06-01 | 1 | 40 | 1.0000000 | 4 | 800 | .0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn*ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty order by ow_sale.pn asc range current row ); -- mvd 3,6,7->5; + vn | cn | dt | cn | to_char | qty | pn +----+----+------------+----+-------------------+------+----- + 40 | 3 | 1401-04-01 | 3 | 8000.0000000 | 1 | 200 + 20 | 1 | 1401-05-01 | 1 | 2000.0000000 | 1 | 100 + 30 | 1 | 1401-06-01 | 1 | 15000.0000000 | 12 | 500 + 30 | 3 | 1401-06-01 | 3 | 15000.0000000 | 12 | 500 + 30 | 3 | 1401-06-01 | 3 | 18000.0000000 | 12 | 600 + 40 | 2 | 1401-01-01 | 2 | 4000.0000000 | 1100 | 100 + 10 | 1 | 1401-03-01 | 1 | 2000.0000000 | 1 | 200 + 30 | 1 | 1401-05-02 | 1 | 9000.0000000 | 1 | 300 + 50 | 2 | 1401-06-01 | 2 | 20000.0000000 | 1 | 400 + 50 | 1 | 1401-06-01 | 1 | 20000.0000000 | 1 | 400 + 40 | 4 | 1401-06-01 | 4 | 28000.0000000 | 1 | 700 + 40 | 4 | 1401-06-01 | 4 | 32000.0000000 | 1 | 800 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.cn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.vn asc range current row ), +win2 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.vn order by ow_sale.cn desc); -- mvd 3,4,5,6,7->2; 1,3,5->8; + prc | to_char | cn | dt | vn | qty | pn | to_char +------+-------------------+----+------------+----+------+-----+------------------- + 0 | 10.0000000 | 1 | 1401-03-01 | 10 | 1 | 200 | 1.0000000 + 0 | 50.0000000 | 2 | 1401-06-01 | 50 | 1 | 400 | 1.0000000 + 5 | 30.0000000 | 1 | 1401-06-01 | 30 | 12 | 500 | 1.0000000 + 5 | 30.0000000 | 3 | 1401-06-01 | 30 | 12 | 500 | 1.0000000 + 1 | 40.0000000 | 4 | 1401-06-01 | 40 | 1 | 800 | 1.0000000 + 2400 | 40.0000000 | 2 | 1401-01-01 | 40 | 1100 | 100 | 1.0000000 + 0 | 20.0000000 | 1 | 1401-05-01 | 20 | 1 | 100 | 1.0000000 + 0 | 40.0000000 | 3 | 1401-04-01 | 40 | 1 | 200 | 1.0000000 + 0 | 30.0000000 | 1 | 1401-05-02 | 30 | 1 | 300 | 1.0000000 + 0 | 50.0000000 | 1 | 1401-06-01 | 50 | 1 | 400 | 1.0000000 + 5 | 30.0000000 | 3 | 1401-06-01 | 30 | 12 | 600 | 1.0000000 + 1 | 40.0000000 | 4 | 1401-06-01 | 40 | 1 | 700 | 1.0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.prc order by ow_sale.pn desc range between unbounded preceding and 1 preceding ); -- mvd 5,6,2,1->4; + pn | vn | vn | to_char | prc | dt +-----+----+----+-------------------+------+------------ + 200 | 10 | 10 | .0000000 | 0 | 1401-03-01 + 600 | 30 | 30 | .0000000 | 5 | 1401-06-01 + 800 | 40 | 40 | .0000000 | 1 | 1401-06-01 + 100 | 40 | 40 | .0000000 | 2400 | 1401-01-01 + 200 | 40 | 40 | .0000000 | 0 | 1401-04-01 + 100 | 20 | 20 | .0000000 | 0 | 1401-05-01 + 300 | 30 | 30 | .0000000 | 0 | 1401-05-02 + 500 | 30 | 30 | .0000000 | 5 | 1401-06-01 + 500 | 30 | 30 | .0000000 | 5 | 1401-06-01 + 700 | 40 | 40 | .0000000 | 1 | 1401-06-01 + 400 | 50 | 50 | .0000000 | 0 | 1401-06-01 + 400 | 50 | 50 | .0000000 | 0 | 1401-06-01 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn+ow_sale.pn),floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.prc order by ow_sale.cn desc range between unbounded preceding and 2 preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 4,2,1->3; 2->5; 2->6; 2->7; + qty | cn | to_char | prc | to_char | to_char | to_char +------+----+-------------------+------+-------------------+-------------------+------------------- + 1 | 4 | .0000000 | 1 | 1.0000000 | .0000000 | 4.0000000 + 1 | 4 | .0000000 | 1 | 1.0000000 | .0000000 | 4.0000000 + 1 | 3 | .0000000 | 0 | 3.0000000 | .1818182 | 4.0000000 + 12 | 3 | .0000000 | 5 | 3.0000000 | .1818182 | 4.0000000 + 12 | 3 | .0000000 | 5 | 3.0000000 | .1818182 | 4.0000000 + 1 | 2 | .0000000 | 0 | 6.0000000 | .4545455 | 4.0000000 + 1100 | 2 | .0000000 | 2400 | 6.0000000 | .4545455 | 4.0000000 + 1 | 1 | .0000000 | 0 | 8.0000000 | .6363636 | 4.0000000 + 1 | 1 | .0000000 | 0 | 8.0000000 | .6363636 | 4.0000000 + 1 | 1 | .0000000 | 0 | 8.0000000 | .6363636 | 4.0000000 + 1 | 1 | .0000000 | 0 | 8.0000000 | .6363636 | 4.0000000 + 12 | 1 | .0000000 | 5 | 8.0000000 | .6363636 | 4.0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.vn desc range between unbounded preceding and current row ); -- mvd 1,4->5; + cn | cn | qty | vn | to_char +----+----+------+----+------------------- + 2 | 2 | 1100 | 40 | 100.0000000 + 2 | 2 | 1 | 50 | 400.0000000 + 4 | 4 | 1 | 40 | 750.0000000 + 4 | 4 | 1 | 40 | 750.0000000 + 1 | 1 | 1 | 10 | 200.0000000 + 1 | 1 | 1 | 20 | 100.0000000 + 1 | 1 | 1 | 30 | 400.0000000 + 1 | 1 | 12 | 30 | 400.0000000 + 1 | 1 | 1 | 50 | 400.0000000 + 3 | 3 | 12 | 30 | 550.0000000 + 3 | 3 | 12 | 30 | 550.0000000 + 3 | 3 | 1 | 40 | 200.0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn desc range between unbounded preceding and current row ), +win2 as (order by ow_sale.pn desc); -- mvd 1,6->5; 1,6->7; 2->8; 2->9; + cn | pn | dt | qty | to_char | vn | to_char | to_char | to_char +----+-----+------------+------+-------------------+----+-------------------+-------------------+------------------- + 4 | 800 | 1401-06-01 | 1 | 4.0000000 | 40 | 2.0000000 | 1.0000000 | 1.0000000 + 4 | 700 | 1401-06-01 | 1 | 4.0000000 | 40 | 2.0000000 | 2.0000000 | 1.0000000 + 3 | 600 | 1401-06-01 | 12 | 3.0000000 | 30 | 2.0000000 | 3.0000000 | 12.0000000 + 1 | 500 | 1401-06-01 | 12 | 2.0000000 | 30 | 4.0000000 | 4.0000000 | 12.0000000 + 3 | 500 | 1401-06-01 | 12 | 3.0000000 | 30 | 2.0000000 | 5.0000000 | 12.0000000 + 1 | 400 | 1401-06-01 | 1 | 1.5000000 | 50 | 2.0000000 | 6.0000000 | 12.0000000 + 2 | 400 | 1401-06-01 | 1 | 2.0000000 | 50 | 1.0000000 | 7.0000000 | 12.0000000 + 1 | 300 | 1401-05-02 | 1 | 2.0000000 | 30 | 4.0000000 | 8.0000000 | 12.0000000 + 3 | 200 | 1401-04-01 | 1 | 3.6666667 | 40 | 3.0000000 | 9.0000000 | 12.0000000 + 1 | 200 | 1401-03-01 | 1 | 1.0000000 | 10 | 1.0000000 | 10.0000000 | 12.0000000 + 1 | 100 | 1401-05-01 | 1 | 1.0000000 | 20 | 1.0000000 | 11.0000000 | 1100.0000000 + 2 | 100 | 1401-01-01 | 1100 | 3.2500000 | 40 | 4.0000000 | 12.0000000 | 1100.0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.vn order by ow_sale.cn desc range between unbounded preceding and 4 following ); -- mvd 6,7,4,3,1->5; + pn | pn | vn | qty | to_char | prc | cn +-----+-----+----+------+-------------------+------+---- + 200 | 200 | 10 | 1 | 10.0000000 | 0 | 1 + 100 | 100 | 20 | 1 | 20.0000000 | 0 | 1 + 600 | 600 | 30 | 12 | 30.0000000 | 5 | 3 + 200 | 200 | 40 | 1 | 40.0000000 | 0 | 3 + 800 | 800 | 40 | 1 | 40.0000000 | 1 | 4 + 400 | 400 | 50 | 1 | 50.0000000 | 0 | 2 + 300 | 300 | 30 | 1 | 30.0000000 | 0 | 1 + 500 | 500 | 30 | 12 | 30.0000000 | 5 | 1 + 500 | 500 | 30 | 12 | 30.0000000 | 5 | 3 + 100 | 100 | 40 | 1100 | 40.0000000 | 2400 | 2 + 700 | 700 | 40 | 1 | 40.0000000 | 1 | 4 + 400 | 400 | 50 | 1 | 50.0000000 | 0 | 1 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.pn asc range between unbounded preceding and 1 following ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.vn asc); -- mvd 4,5,1,6->3; 6->7; 6->8; 10->9; + cn | qty | to_char | prc | dt | pn | to_char | to_char | to_char | vn +----+------+-------------------+------+------------+-----+-------------------+-------------------+-------------------+---- + 1 | 1 | 1.0000000 | 0 | 1401-03-01 | 200 | 10.0000000 | .8333333 | 1.0000000 | 10 + 1 | 1 | 1.0000000 | 0 | 1401-05-01 | 100 | 12.0000000 | 1.0000000 | 2.0000000 | 20 + 1 | 1 | 1.0000000 | 0 | 1401-05-02 | 300 | 8.0000000 | .6666667 | 3.0000000 | 30 + 3 | 12 | 3.0000000 | 5 | 1401-06-01 | 600 | 3.0000000 | .2500000 | 3.0000000 | 30 + 3 | 12 | 3.0000000 | 5 | 1401-06-01 | 500 | 4.0000000 | .4166667 | 3.0000000 | 30 + 1 | 12 | 1.0000000 | 5 | 1401-06-01 | 500 | 5.0000000 | .4166667 | 3.0000000 | 30 + 4 | 1 | 4.0000000 | 1 | 1401-06-01 | 800 | 1.0000000 | .0833333 | 7.0000000 | 40 + 4 | 1 | 4.0000000 | 1 | 1401-06-01 | 700 | 2.0000000 | .1666667 | 7.0000000 | 40 + 3 | 1 | 3.0000000 | 0 | 1401-04-01 | 200 | 9.0000000 | .8333333 | 7.0000000 | 40 + 2 | 1100 | 2.0000000 | 2400 | 1401-01-01 | 100 | 11.0000000 | 1.0000000 | 7.0000000 | 40 + 1 | 1 | 1.0000000 | 0 | 1401-06-01 | 400 | 6.0000000 | .5833333 | 11.0000000 | 50 + 2 | 1 | 2.0000000 | 0 | 1401-06-01 | 400 | 7.0000000 | .5833333 | 11.0000000 | 50 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn*ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.cn desc range between unbounded preceding and unbounded following ); -- mvd 4,6->5; + dt | dt | vn | cn | to_char | pn +------------+------------+----+----+-------------------+----- + 1401-05-02 | 1401-05-02 | 30 | 1 | 300.0000000 | 300 + 1401-06-01 | 1401-06-01 | 50 | 2 | 400.0000000 | 400 + 1401-06-01 | 1401-06-01 | 50 | 1 | 400.0000000 | 400 + 1401-06-01 | 1401-06-01 | 30 | 3 | 6000.0000000 | 500 + 1401-06-01 | 1401-06-01 | 30 | 1 | 6000.0000000 | 500 + 1401-06-01 | 1401-06-01 | 40 | 4 | 800.0000000 | 800 + 1401-01-01 | 1401-01-01 | 40 | 2 | 55050.0000000 | 100 + 1401-05-01 | 1401-05-01 | 20 | 1 | 55050.0000000 | 100 + 1401-04-01 | 1401-04-01 | 40 | 3 | 200.0000000 | 200 + 1401-03-01 | 1401-03-01 | 10 | 1 | 200.0000000 | 200 + 1401-06-01 | 1401-06-01 | 30 | 3 | 7200.0000000 | 600 + 1401-06-01 | 1401-06-01 | 40 | 4 | 700.0000000 | 700 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc/ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.qty order by ow_sale.vn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.cn asc), +win3 as (order by ow_sale.vn desc); -- mvd 3,4,1,5->2; 7,3,4,5->6; 7,3,4,5->8; 4->9; + qty | to_char | dt | vn | pn | to_char | cn | to_char | to_char +------+-------------------+------------+----+-----+-------------------+----+-------------------+------------------- + 1 | .0000000 | 1401-06-01 | 50 | 400 | 1.0000000 | 1 | 1.0000000 | 1.0000000 + 1 | .0000000 | 1401-06-01 | 50 | 400 | 2.0000000 | 2 | 2.0000000 | 2.0000000 + 1 | .0000000 | 1401-06-01 | 40 | 800 | 1.0000000 | 4 | 1.0000000 | 3.0000000 + 1 | .0000000 | 1401-04-01 | 40 | 200 | 1.0000000 | 3 | 1.0000000 | 4.0000000 + 1100 | 1200.0000000 | 1401-01-01 | 40 | 100 | 1.0000000 | 2 | 1.0000000 | 5.0000000 + 1 | .0000000 | 1401-06-01 | 40 | 700 | 1.0000000 | 4 | 1.0000000 | 6.0000000 + 12 | 3.0000000 | 1401-06-01 | 30 | 500 | 1.0000000 | 1 | 1.0000000 | 7.0000000 + 12 | 3.0000000 | 1401-06-01 | 30 | 500 | 2.0000000 | 3 | 2.0000000 | 8.0000000 + 1 | .0000000 | 1401-05-02 | 30 | 300 | 1.0000000 | 1 | 1.0000000 | 9.0000000 + 12 | 1.0000000 | 1401-06-01 | 30 | 600 | 1.0000000 | 3 | 1.0000000 | 10.0000000 + 1 | .0000000 | 1401-05-01 | 20 | 100 | 1.0000000 | 1 | 1.0000000 | 11.0000000 + 1 | .0000000 | 1401-03-01 | 10 | 200 | 1.0000000 | 1 | 1.0000000 | 12.0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc*ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc+ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.vn asc range between floor(ow_sale.qty/ow_sale.cn) preceding and floor(ow_sale.qty/ow_sale.cn) preceding ), +win2 as (partition by ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc), +win4 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc), +win5 as (order by ow_sale.cn asc); -- mvd 3,4->2; 6,7->5; 6,3,7->8; 6,3,10,4->9; 3->11; + qty | to_char | cn | vn | to_char | prc | pn | to_char | to_char | dt | to_char +------+-------------------+----+----+-------------------+------+-----+-------------------+-------------------+------------+------------------- + 1 | .0000000 | 1 | 10 | .0000000 | 0 | 200 | .0000000 | 200.0000000 | 1401-03-01 | .4166667 + 1 | .0000000 | 1 | 20 | .0000000 | 0 | 100 | .0000000 | 100.0000000 | 1401-05-01 | .4166667 + 12 | .0000000 | 1 | 30 | .0000000 | 5 | 500 | .0000000 | .0000000 | 1401-06-01 | .4166667 + 1 | .0000000 | 1 | 30 | .0000000 | 0 | 300 | .0000000 | 300.0000000 | 1401-05-02 | .4166667 + 1 | .0000000 | 1 | 50 | .0000000 | 0 | 400 | .0000000 | 400.0000000 | 1401-06-01 | .4166667 + 1100 | .0000000 | 2 | 40 | .0000000 | 2400 | 100 | .0000000 | .0000000 | 1401-01-01 | .5833333 + 1 | .0000000 | 2 | 50 | .0000000 | 0 | 400 | .0000000 | 400.0000000 | 1401-06-01 | .5833333 + 12 | .0000000 | 3 | 30 | .0000000 | 5 | 500 | .0000000 | .0000000 | 1401-06-01 | .8333333 + 12 | .0000000 | 3 | 30 | .0000000 | 5 | 600 | .0000000 | .0000000 | 1401-06-01 | .8333333 + 1 | .0000000 | 3 | 40 | .0000000 | 0 | 200 | .0000000 | 200.0000000 | 1401-04-01 | .8333333 + 1 | 1.0000000 | 4 | 40 | .0000000 | 1 | 700 | .0000000 | .0000000 | 1401-06-01 | 1.0000000 + 1 | 1.0000000 | 4 | 40 | .0000000 | 1 | 800 | .0000000 | 700.0000000 | 1401-06-01 | 1.0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.prc order by ow_sale.cn desc range between floor(ow_sale.vn) preceding and current row ); -- mvd 2,4,5,6->3; + qty | prc | to_char | cn | dt | vn +------+------+-------------------+----+------------+---- + 1 | 0 | 240.0000000 | 3 | 1401-04-01 | 40 + 1 | 0 | 120.0000000 | 1 | 1401-05-01 | 20 + 1 | 0 | 450.0000000 | 2 | 1401-06-01 | 50 + 1100 | 2400 | 140.0000000 | 2 | 1401-01-01 | 40 + 1 | 0 | 210.0000000 | 1 | 1401-03-01 | 10 + 1 | 0 | 330.0000000 | 1 | 1401-05-02 | 30 + 12 | 5 | 530.0000000 | 1 | 1401-06-01 | 30 + 1 | 0 | 450.0000000 | 1 | 1401-06-01 | 50 + 12 | 5 | 580.0000000 | 3 | 1401-06-01 | 30 + 12 | 5 | 580.0000000 | 3 | 1401-06-01 | 30 + 1 | 1 | 790.0000000 | 4 | 1401-06-01 | 40 + 1 | 1 | 790.0000000 | 4 | 1401-06-01 | 40 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.prc,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty-ow_sale.cn),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc+ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.vn desc range between floor(ow_sale.prc+ow_sale.prc) preceding and current row ), +win2 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.vn order by ow_sale.pn asc); -- mvd 1,7->6; 1,7->8; 2,10,1,4->9; 2,10,1,4->11; 1,4->12; + vn | prc | prc | pn | prc | to_char | qty | to_char | to_char | cn | to_char | to_char +----+------+------+-----+------+-------------------+------+-------------------+-------------------+----+-------------------+------------------- + 50 | 0 | 0 | 400 | 0 | -.5000000 | 1 | 2.0000000 | .0000000 | 2 | 1.0000000 | 1.0000000 + 50 | 0 | 0 | 400 | 0 | -.5000000 | 1 | 2.0000000 | .0000000 | 1 | 1.0000000 | 2.0000000 + 40 | 1 | 1 | 700 | 1 | -2.6666667 | 1 | 3.0000000 | .0000000 | 4 | 1.0000000 | 3.0000000 + 40 | 0 | 0 | 200 | 0 | -2.6666667 | 1 | 3.0000000 | .0000000 | 3 | 1.0000000 | 2.0000000 + 40 | 1 | 1 | 800 | 1 | -2.6666667 | 1 | 3.0000000 | .0000000 | 4 | 1.0000000 | 4.0000000 + 30 | 0 | 0 | 300 | 0 | .0000000 | 1 | 1.0000000 | .0000000 | 1 | 1.0000000 | 1.0000000 + 20 | 0 | 0 | 100 | 0 | .0000000 | 1 | 1.0000000 | .0000000 | 1 | 1.0000000 | 1.0000000 + 10 | 0 | 0 | 200 | 0 | .0000000 | 1 | 1.0000000 | .0000000 | 1 | 1.0000000 | 1.0000000 + 30 | 5 | 5 | 500 | 5 | 9.6666667 | 12 | 3.0000000 | .0000000 | 1 | 1.0000000 | 2.0000000 + 30 | 5 | 5 | 500 | 5 | 9.6666667 | 12 | 3.0000000 | .0000000 | 3 | 1.0000000 | 3.0000000 + 30 | 5 | 5 | 600 | 5 | 9.6666667 | 12 | 3.0000000 | .0000000 | 3 | 1.0000000 | 4.0000000 + 40 | 2400 | 2400 | 100 | 2400 | 1098.0000000 | 1100 | 1.0000000 | .0000000 | 2 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.pn desc range between 2 preceding and 3 following ); -- mvd 3,4->2; + qty | to_char | vn | pn +------+-------------------+----+----- + 1 | .0000000 | 30 | 300 + 1 | .0000000 | 50 | 400 + 1 | .0000000 | 50 | 400 + 12 | .0000000 | 30 | 500 + 12 | .0000000 | 30 | 500 + 1 | .0000000 | 40 | 800 + 1 | .0000000 | 20 | 100 + 1100 | .0000000 | 40 | 100 + 1 | .0000000 | 10 | 200 + 1 | .0000000 | 40 | 200 + 12 | .0000000 | 30 | 600 + 1 | .0000000 | 40 | 700 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn/ow_sale.qty)) OVER(partition by ow_sale.prc,ow_sale.vn,ow_sale.dt order by ow_sale.vn desc range between floor(ow_sale.vn/ow_sale.cn) preceding and floor(ow_sale.prc) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.dt order by ow_sale.vn desc range between floor(ow_sale.vn/ow_sale.cn) preceding and floor(ow_sale.prc) following ), +win2 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.pn desc), +win3 as (order by ow_sale.vn asc); -- mvd 5,3,6->4; 5,1,8->7; 6->9; 5,3,6->10; + cn | cn | dt | to_char | prc | vn | to_char | pn | to_char | to_char +----+----+------------+-------------------+------+----+-------------------+-----+-------------------+------------------- + 1 | 1 | 1401-03-01 | .0000000 | 0 | 10 | 1.0000000 | 200 | .0833333 | 10.0000000 + 1 | 1 | 1401-05-01 | .0000000 | 0 | 20 | 1.0000000 | 100 | .1666667 | 20.0000000 + 1 | 1 | 1401-06-01 | 5.0000000 | 5 | 30 | 1.0000000 | 500 | .5000000 | 2.0000000 + 3 | 3 | 1401-06-01 | 5.0000000 | 5 | 30 | 1.0000000 | 500 | .5000000 | 2.0000000 + 1 | 1 | 1401-05-02 | .0000000 | 0 | 30 | 1.0000000 | 300 | .5000000 | 30.0000000 + 3 | 3 | 1401-06-01 | 5.0000000 | 5 | 30 | 1.0000000 | 600 | .5000000 | 2.0000000 + 3 | 3 | 1401-04-01 | .0000000 | 0 | 40 | 1.0000000 | 200 | .8333333 | 40.0000000 + 4 | 4 | 1401-06-01 | 1.0000000 | 1 | 40 | 1.0000000 | 700 | .8333333 | 40.0000000 + 4 | 4 | 1401-06-01 | 1.0000000 | 1 | 40 | 1.0000000 | 800 | .8333333 | 40.0000000 + 2 | 2 | 1401-01-01 | 2400.0000000 | 2400 | 40 | 1.0000000 | 100 | .8333333 | .0000000 + 1 | 1 | 1401-06-01 | .0000000 | 0 | 50 | 1.0000000 | 400 | 1.0000000 | 50.0000000 + 2 | 2 | 1401-06-01 | .0000000 | 0 | 50 | 1.0000000 | 400 | 1.0000000 | 50.0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.cn desc range between 0 preceding and unbounded following ); -- mvd 4,2,5->3; + prc | cn | to_char | dt | vn +------+----+-------------------+------------+---- + 0 | 1 | 1.0000000 | 1401-05-01 | 20 + 0 | 2 | 2.0000000 | 1401-06-01 | 50 + 0 | 3 | 3.0000000 | 1401-04-01 | 40 + 1 | 4 | 4.0000000 | 1401-06-01 | 40 + 1 | 4 | 4.0000000 | 1401-06-01 | 40 + 0 | 1 | 1.0000000 | 1401-03-01 | 10 + 0 | 1 | 1.0000000 | 1401-05-02 | 30 + 5 | 1 | 1.0000000 | 1401-06-01 | 30 + 0 | 1 | 1.0000000 | 1401-06-01 | 50 + 2400 | 2 | 2.0000000 | 1401-01-01 | 40 + 5 | 3 | 3.0000000 | 1401-06-01 | 30 + 5 | 3 | 3.0000000 | 1401-06-01 | 30 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.pn order by ow_sale.vn asc range between floor(ow_sale.pn+ow_sale.qty) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.vn asc range between floor(ow_sale.pn+ow_sale.qty) preceding and unbounded following ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.cn asc); -- mvd 1,2->6; 1,2->7; 1->8; 10->9; 1,2->11; 1,2->12; + vn | pn | pn | vn | vn | to_char | to_char | to_char | to_char | cn | to_char | to_char +----+-----+-----+----+----+-------------------+-------------------+-------------------+-------------------+----+-------------------+------------------- + 50 | 400 | 400 | 50 | 50 | .0000000 | 2.0000000 | .0000000 | 1.0000000 | 1 | 2.0000000 | 2.0000000 + 30 | 300 | 300 | 30 | 30 | .0000000 | 1.0000000 | .5454545 | 2.0000000 | 1 | 1.0000000 | 1.0000000 + 30 | 500 | 500 | 30 | 30 | 5.0000000 | 2.0000000 | .5454545 | 3.0000000 | 1 | 2.0000000 | 2.0000000 + 20 | 100 | 100 | 20 | 20 | 1200.0000000 | 2.0000000 | .9090909 | 4.0000000 | 1 | 2.0000000 | 2.0000000 + 10 | 200 | 200 | 10 | 10 | .0000000 | 2.0000000 | 1.0000000 | 5.0000000 | 1 | 2.0000000 | 2.0000000 + 50 | 400 | 400 | 50 | 50 | .0000000 | 2.0000000 | .0000000 | 6.0000000 | 2 | 2.0000000 | 2.0000000 + 40 | 100 | 100 | 40 | 40 | 1200.0000000 | 2.0000000 | .1818182 | 7.0000000 | 2 | 2.0000000 | 2.0000000 + 30 | 500 | 500 | 30 | 30 | 5.0000000 | 2.0000000 | .5454545 | 8.0000000 | 3 | 2.0000000 | 2.0000000 + 40 | 200 | 200 | 40 | 40 | .0000000 | 2.0000000 | .1818182 | 9.0000000 | 3 | 2.0000000 | 2.0000000 + 30 | 600 | 600 | 30 | 30 | 5.0000000 | 1.0000000 | .5454545 | 10.0000000 | 3 | 1.0000000 | 1.0000000 + 40 | 700 | 700 | 40 | 40 | 1.0000000 | 1.0000000 | .1818182 | 11.0000000 | 4 | 1.0000000 | 1.0000000 + 40 | 800 | 800 | 40 | 40 | 1.0000000 | 1.0000000 | .1818182 | 12.0000000 | 4 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.pn desc range between current row and current row ); -- mvd 2,1->4; + pn | vn | cn | to_char +-----+----+----+------------------- + 200 | 10 | 1 | 1.0000000 + 100 | 20 | 1 | 1.0000000 + 600 | 30 | 3 | 3.0000000 + 500 | 30 | 1 | 2.0000000 + 500 | 30 | 3 | 2.0000000 + 300 | 30 | 1 | 1.0000000 + 800 | 40 | 4 | 4.0000000 + 700 | 40 | 4 | 4.0000000 + 200 | 40 | 3 | 3.0000000 + 100 | 40 | 2 | 2.0000000 + 400 | 50 | 1 | 1.5000000 + 400 | 50 | 2 | 1.5000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(partition by ow_sale.vn order by ow_sale.pn asc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.pn asc range between current row and current row ), +win2 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.cn order by ow_sale.pn asc); -- mvd 3,1->4; 3,1->5; 3,1->6; 8,9,2,1->7; + pn | cn | vn | to_char | to_char | to_char | to_char | prc | dt +-----+----+----+-------------------+-------------------+-------------------+-------------------+------+------------ + 200 | 1 | 10 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 0 | 1401-03-01 + 100 | 1 | 20 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 0 | 1401-05-01 + 300 | 1 | 30 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 0 | 1401-05-02 + 500 | 1 | 30 | 12.0000000 | 2.0000000 | 12.0000000 | 1.0000000 | 5 | 1401-06-01 + 500 | 3 | 30 | 12.0000000 | 2.0000000 | 12.0000000 | .5000000 | 5 | 1401-06-01 + 600 | 3 | 30 | 12.0000000 | 1.0000000 | 12.0000000 | 1.0000000 | 5 | 1401-06-01 + 100 | 2 | 40 | 1100.0000000 | 1.0000000 | 1100.0000000 | 1.0000000 | 2400 | 1401-01-01 + 200 | 3 | 40 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 0 | 1401-04-01 + 700 | 4 | 40 | 1.0000000 | 1.0000000 | 1.0000000 | .5000000 | 1 | 1401-06-01 + 800 | 4 | 40 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1 | 1401-06-01 + 400 | 1 | 50 | 1.0000000 | 2.0000000 | 1.0000000 | 1.0000000 | 0 | 1401-06-01 + 400 | 2 | 50 | 1.0000000 | 2.0000000 | 1.0000000 | 1.0000000 | 0 | 1401-06-01 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.pn desc range between current row and floor(ow_sale.vn-ow_sale.vn) following ); -- mvd 4,1,5,6->3; + dt | cn | to_char | prc | vn | pn +------------+----+-------------------+------+----+----- + 1401-03-01 | 1 | .0000000 | 0 | 10 | 200 + 1401-06-01 | 3 | 5.0000000 | 5 | 30 | 600 + 1401-06-01 | 4 | 1.0000000 | 1 | 40 | 800 + 1401-05-01 | 1 | .0000000 | 0 | 20 | 100 + 1401-01-01 | 2 | 2400.0000000 | 2400 | 40 | 100 + 1401-04-01 | 3 | .0000000 | 0 | 40 | 200 + 1401-05-02 | 1 | .0000000 | 0 | 30 | 300 + 1401-06-01 | 2 | .0000000 | 0 | 50 | 400 + 1401-06-01 | 1 | .0000000 | 0 | 50 | 400 + 1401-06-01 | 3 | 5.0000000 | 5 | 30 | 500 + 1401-06-01 | 1 | 5.0000000 | 5 | 30 | 500 + 1401-06-01 | 4 | 1.0000000 | 1 | 40 | 700 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.vn,ow_sale.dt,ow_sale.qty,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn+ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.pn asc range between current row and 2 following ), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.qty,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.pn asc), +win4 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 6,4,1->5; 6,3,8,1->7; 4,1->9; 6,3,8,1->10; 4->11; + pn | pn | qty | cn | to_char | dt | to_char | vn | to_char | to_char | to_char +-----+-----+------+----+-------------------+------------+-------------------+----+-------------------+-------------------+------------------- + 100 | 100 | 1100 | 2 | 2400.0000000 | 1401-01-01 | .0000000 | 40 | 1.0000000 | 1.0000000 | .0000000 + 200 | 200 | 1 | 1 | .0000000 | 1401-03-01 | 200.0000000 | 10 | 2.0000000 | 1.0000000 | .0000000 + 200 | 200 | 1 | 3 | .0000000 | 1401-04-01 | 200.0000000 | 40 | 1.0000000 | 1.0000000 | .0000000 + 100 | 100 | 1 | 1 | .0000000 | 1401-05-01 | 100.0000000 | 20 | 1.0000000 | 1.0000000 | .0000000 + 300 | 300 | 1 | 1 | .0000000 | 1401-05-02 | 300.0000000 | 30 | 3.0000000 | 1.0000000 | .0000000 + 400 | 400 | 1 | 1 | .0000000 | 1401-06-01 | 400.0000000 | 50 | 4.0000000 | 1.0000000 | .0000000 + 400 | 400 | 1 | 2 | .0000000 | 1401-06-01 | 400.0000000 | 50 | 2.0000000 | 2.0000000 | .0000000 + 500 | 500 | 12 | 1 | 5.0000000 | 1401-06-01 | .0000000 | 30 | 5.0000000 | 1.0000000 | .0000000 + 500 | 500 | 12 | 3 | 5.0000000 | 1401-06-01 | .0000000 | 30 | 2.0000000 | 2.0000000 | .0000000 + 600 | 600 | 12 | 3 | 5.0000000 | 1401-06-01 | .0000000 | 30 | 3.0000000 | 3.0000000 | .0000000 + 700 | 700 | 1 | 4 | 1.0000000 | 1401-06-01 | 800.0000000 | 40 | 1.0000000 | 1.0000000 | .0000000 + 800 | 800 | 1 | 4 | 1.0000000 | 1401-06-01 | .0000000 | 40 | 2.0000000 | 2.0000000 | .0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.pn asc range between current row and unbounded following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.qty order by ow_sale.cn asc), +win4 as (order by ow_sale.vn desc); -- mvd 2,1->4; 6->5; 8,6,3,2->7; 2->9; 2->10; + pn | vn | qty | to_char | to_char | cn | to_char | prc | to_char | to_char +-----+----+------+-------------------+-------------------+----+-------------------+------+-------------------+------------------- + 200 | 10 | 1 | 10.0000000 | 1.0000000 | 1 | 1.0000000 | 0 | 12.0000000 | 1.0000000 + 400 | 50 | 1 | 50.0000000 | 2.0000000 | 1 | 1.0000000 | 0 | 1.0000000 | .1666667 + 300 | 30 | 1 | 30.0000000 | 3.0000000 | 1 | 1.0000000 | 0 | 7.0000000 | .8333333 + 500 | 30 | 12 | 30.0000000 | 4.0000000 | 1 | 1.0000000 | 5 | 7.0000000 | .8333333 + 100 | 20 | 1 | 20.0000000 | 5.0000000 | 1 | 1.0000000 | 0 | 11.0000000 | .9166667 + 400 | 50 | 1 | 50.0000000 | 6.0000000 | 2 | 1.0000000 | 0 | 1.0000000 | .1666667 + 100 | 40 | 1100 | 40.0000000 | 7.0000000 | 2 | 1.0000000 | 2400 | 3.0000000 | .5000000 + 500 | 30 | 12 | 30.0000000 | 8.0000000 | 3 | 1.0000000 | 5 | 7.0000000 | .8333333 + 600 | 30 | 12 | 30.0000000 | 9.0000000 | 3 | 1.0000000 | 5 | 7.0000000 | .8333333 + 200 | 40 | 1 | 40.0000000 | 10.0000000 | 3 | 1.0000000 | 0 | 3.0000000 | .5000000 + 700 | 40 | 1 | 40.0000000 | 11.0000000 | 4 | 1.0000000 | 1 | 3.0000000 | .5000000 + 800 | 40 | 1 | 40.0000000 | 12.0000000 | 4 | 1.0000000 | 1 | 3.0000000 | .5000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.cn asc range between 4 following and floor(ow_sale.cn) following ), +win2 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.pn desc); -- mvd 7,8,1->6; 8,2,1->9; + pn | qty | vn | qty | pn | to_char | cn | dt | to_char +-----+------+----+------+-----+-------------------+----+------------+------------------- + 200 | 1 | 40 | 1 | 200 | .0000000 | 3 | 1401-04-01 | 1.0000000 + 100 | 1 | 20 | 1 | 100 | .0000000 | 1 | 1401-05-01 | 1.0000000 + 300 | 1 | 30 | 1 | 300 | .0000000 | 1 | 1401-05-02 | 1.0000000 + 400 | 1 | 50 | 1 | 400 | .0000000 | 1 | 1401-06-01 | 1.0000000 + 500 | 12 | 30 | 12 | 500 | .0000000 | 1 | 1401-06-01 | 1.0000000 + 500 | 12 | 30 | 12 | 500 | .0000000 | 3 | 1401-06-01 | 2.0000000 + 700 | 1 | 40 | 1 | 700 | .0000000 | 4 | 1401-06-01 | 1.0000000 + 100 | 1100 | 40 | 1100 | 100 | .0000000 | 2 | 1401-01-01 | 1.0000000 + 200 | 1 | 10 | 1 | 200 | .0000000 | 1 | 1401-03-01 | 1.0000000 + 400 | 1 | 50 | 1 | 400 | .0000000 | 2 | 1401-06-01 | 2.0000000 + 600 | 12 | 30 | 12 | 600 | .0000000 | 3 | 1401-06-01 | 1.0000000 + 800 | 1 | 40 | 1 | 800 | .0000000 | 4 | 1401-06-01 | 1.0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn+ow_sale.prc),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.vn desc range between 1 following and unbounded following ); -- mvd 1,4->3; + vn | cn | to_char | qty +----+----+-------------------+------ + 50 | 2 | 30.3333333 | 1 + 50 | 1 | 30.3333333 | 1 + 40 | 4 | 20.0000000 | 1 + 40 | 4 | 20.0000000 | 1 + 40 | 3 | 20.0000000 | 1 + 30 | 1 | 15.0000000 | 1 + 20 | 1 | 10.0000000 | 1 + 10 | 1 | .0000000 | 1 + 30 | 3 | .0000000 | 12 + 30 | 1 | .0000000 | 12 + 30 | 3 | .0000000 | 12 + 40 | 2 | .0000000 | 1100 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows unbounded preceding ); -- mvd 2,1->5; + qty | cn | qty | cn | to_char +------+----+------+----+------------------- + 1 | 2 | 1 | 2 | 1.0000000 + 1 | 4 | 1 | 4 | 1.0000000 + 1 | 4 | 1 | 4 | 1.0000000 + 12 | 1 | 12 | 1 | 12.0000000 + 12 | 3 | 12 | 3 | 12.0000000 + 12 | 3 | 12 | 3 | 12.0000000 + 1 | 1 | 1 | 1 | 1.0000000 + 1 | 1 | 1 | 1 | 1.0000000 + 1 | 1 | 1 | 1 | 1.0000000 + 1 | 1 | 1 | 1 | 1.0000000 + 1 | 3 | 1 | 3 | 1.0000000 + 1100 | 2 | 1100 | 2 | 1100.0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.prc,ow_sale.qty,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn*ow_sale.pn) as int),cast (floor(ow_sale.cn/ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn*ow_sale.qty)) OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn desc rows unbounded preceding ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 5,7,8->6; 5,4,7,3->9; 7->10; 5,4,7,3->11; 5,4,7,3->12; 5,4,7,3->13; + prc | prc | qty | dt | cn | to_char | vn | pn | to_char | to_char | to_char | to_char | to_char +------+------+------+------------+----+-------------------+----+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 2400 | 2400 | 1100 | 1401-01-01 | 2 | 2400.0000000 | 40 | 100 | 10000.0000000 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 0 | 0 | 1 | 1401-03-01 | 1 | .0000000 | 10 | 200 | 40000.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 0 | 0 | 1 | 1401-04-01 | 3 | 1200.0000000 | 40 | 200 | 40000.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 0 | 0 | 1 | 1401-05-01 | 1 | .0000000 | 20 | 100 | 10000.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 0 | 0 | 1 | 1401-05-02 | 1 | .0000000 | 30 | 300 | 90000.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 0 | 0 | 1 | 1401-06-01 | 1 | .0000000 | 50 | 400 | 160000.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 0 | 0 | 1 | 1401-06-01 | 2 | .0000000 | 50 | 400 | 160000.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 5 | 5 | 12 | 1401-06-01 | 1 | 2.5000000 | 30 | 500 | 250000.0000000 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 5 | 5 | 12 | 1401-06-01 | 3 | 3.3333333 | 30 | 500 | 250000.0000000 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 5 | 5 | 12 | 1401-06-01 | 3 | 3.7500000 | 30 | 600 | 360000.0000000 | .0000000 | 2.0000000 | 2.0000000 | 2.0000000 + 1 | 1 | 1 | 1401-06-01 | 4 | 800.3333333 | 40 | 700 | 490000.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 1 | 1401-06-01 | 4 | 600.5000000 | 40 | 800 | 640000.0000000 | .0000000 | 2.0000000 | 2.0000000 | 2.0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows floor(ow_sale.pn+ow_sale.qty) preceding ); -- mvd 1,8->7; + cn | prc | prc | qty | cn | cn | to_char | vn +----+------+------+------+----+----+-------------------+---- + 1 | 0 | 0 | 1 | 1 | 1 | 10.0000000 | 10 + 1 | 0 | 0 | 1 | 1 | 1 | 20.0000000 | 20 + 1 | 0 | 0 | 1 | 1 | 1 | 30.0000000 | 30 + 1 | 5 | 5 | 12 | 1 | 1 | 30.0000000 | 30 + 3 | 5 | 5 | 12 | 3 | 3 | 30.0000000 | 30 + 3 | 5 | 5 | 12 | 3 | 3 | 30.0000000 | 30 + 2 | 2400 | 2400 | 1100 | 2 | 2 | 40.0000000 | 40 + 3 | 0 | 0 | 1 | 3 | 3 | 40.0000000 | 40 + 4 | 1 | 1 | 1 | 4 | 4 | 40.0000000 | 40 + 4 | 1 | 1 | 1 | 4 | 4 | 40.0000000 | 40 + 1 | 0 | 0 | 1 | 1 | 1 | 50.0000000 | 50 + 2 | 0 | 0 | 1 | 2 | 2 | 50.0000000 | 50 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows current row ); -- mvd 4,5,2->3; + vn | pn | to_char | cn | dt +----+-----+-------------------+----+------------ + 10 | 200 | 1.0000000 | 1 | 1401-03-01 + 30 | 600 | 12.0000000 | 3 | 1401-06-01 + 40 | 700 | 1.0000000 | 4 | 1401-06-01 + 40 | 100 | 1100.0000000 | 2 | 1401-01-01 + 40 | 200 | 1.0000000 | 3 | 1401-04-01 + 20 | 100 | 1.0000000 | 1 | 1401-05-01 + 30 | 300 | 1.0000000 | 1 | 1401-05-02 + 50 | 400 | 1.0000000 | 1 | 1401-06-01 + 50 | 400 | 1.0000000 | 2 | 1401-06-01 + 30 | 500 | 12.0000000 | 1 | 1401-06-01 + 30 | 500 | 12.0000000 | 3 | 1401-06-01 + 40 | 800 | 1.0000000 | 4 | 1401-06-01 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows current row ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.cn asc), +win4 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.prc order by ow_sale.cn asc); -- mvd 5,6,7,1,2->4; 2->8; 6->9; 6->10; 5,6,7,12->11; + qty | pn | qty | to_char | prc | cn | dt | to_char | to_char | to_char | to_char | vn +------+-----+------+-------------------+------+----+------------+-------------------+-------------------+-------------------+-------------------+---- + 1 | 100 | 1 | .0000000 | 0 | 1 | 1401-05-01 | 1.0000000 | 4.0000000 | 5.0000000 | .0000000 | 20 + 1100 | 100 | 1100 | 2400.0000000 | 2400 | 2 | 1401-01-01 | 2.0000000 | 7.0000000 | 2400.0000000 | .0000000 | 40 + 1 | 200 | 1 | .0000000 | 0 | 1 | 1401-03-01 | 3.0000000 | 1.0000000 | 5.0000000 | .0000000 | 10 + 1 | 200 | 1 | .0000000 | 0 | 3 | 1401-04-01 | 4.0000000 | 8.0000000 | 2400.0000000 | .0000000 | 40 + 1 | 300 | 1 | .0000000 | 0 | 1 | 1401-05-02 | 5.0000000 | 2.0000000 | 5.0000000 | .0000000 | 30 + 1 | 400 | 1 | .0000000 | 0 | 1 | 1401-06-01 | 6.0000000 | 3.0000000 | 5.0000000 | .0000000 | 50 + 1 | 400 | 1 | .0000000 | 0 | 2 | 1401-06-01 | 7.0000000 | 6.0000000 | 2400.0000000 | .0000000 | 50 + 12 | 500 | 12 | 5.0000000 | 5 | 3 | 1401-06-01 | 8.0000000 | 9.0000000 | 2400.0000000 | .0000000 | 30 + 12 | 500 | 12 | 5.0000000 | 5 | 1 | 1401-06-01 | 9.0000000 | 5.0000000 | 5.0000000 | .0000000 | 30 + 12 | 600 | 12 | 5.0000000 | 5 | 3 | 1401-06-01 | 10.0000000 | 10.0000000 | 2400.0000000 | .0000000 | 30 + 1 | 700 | 1 | 1.0000000 | 1 | 4 | 1401-06-01 | 11.0000000 | 11.0000000 | 2400.0000000 | .0000000 | 40 + 1 | 800 | 1 | 1.0000000 | 1 | 4 | 1401-06-01 | 12.0000000 | 12.0000000 | 2400.0000000 | .0000000 | 40 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn+ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and floor(ow_sale.qty*ow_sale.cn) preceding ); -- mvd 5,6,7->4; + qty | prc | vn | to_char | cn | dt | pn +------+------+----+-------------------+----+------------+----- + 1 | 0 | 10 | .0000000 | 1 | 1401-03-01 | 200 + 1 | 0 | 30 | .0000000 | 1 | 1401-05-02 | 300 + 1 | 0 | 50 | .0000000 | 1 | 1401-06-01 | 400 + 1 | 0 | 50 | .0000000 | 2 | 1401-06-01 | 400 + 12 | 5 | 30 | .0000000 | 1 | 1401-06-01 | 500 + 12 | 5 | 30 | .0000000 | 3 | 1401-06-01 | 500 + 12 | 5 | 30 | .0000000 | 3 | 1401-06-01 | 600 + 1 | 1 | 40 | 2.5000000 | 4 | 1401-06-01 | 700 + 1 | 1 | 40 | 6.0000000 | 4 | 1401-06-01 | 800 + 1100 | 2400 | 40 | .0000000 | 2 | 1401-01-01 | 100 + 1 | 0 | 40 | .0000000 | 3 | 1401-04-01 | 200 + 1 | 0 | 20 | .0000000 | 1 | 1401-05-01 | 100 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and current row ); -- mvd 2,6->5; + pn | prc | pn | qty | to_char | vn +-----+------+-----+------+-------------------+---- + 700 | 1 | 700 | 1 | 4.0000000 | 40 + 800 | 1 | 800 | 1 | 4.0000000 | 40 + 200 | 0 | 200 | 1 | 1.0000000 | 10 + 200 | 0 | 200 | 1 | 2.0000000 | 40 + 100 | 0 | 100 | 1 | 1.6666667 | 20 + 300 | 0 | 300 | 1 | 1.5000000 | 30 + 400 | 0 | 400 | 1 | 1.4000000 | 50 + 400 | 0 | 400 | 1 | 1.5000000 | 50 + 500 | 5 | 500 | 12 | 1.0000000 | 30 + 500 | 5 | 500 | 12 | 2.0000000 | 30 + 600 | 5 | 600 | 12 | 2.3333333 | 30 + 100 | 2400 | 100 | 1100 | 2.0000000 | 40 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn*ow_sale.prc) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.vn desc); -- mvd 4,2,6->5; 8,9,1,6->7; 4,2,6->10; 2->11; + qty | vn | qty | dt | to_char | pn | to_char | prc | cn | to_char | to_char +------+----+------+------------+-------------------+-----+-------------------+------+----+-------------------+------------------- + 1 | 50 | 1 | 1401-06-01 | 400.0000000 | 400 | .0000000 | 0 | 2 | 400.0000000 | .0000000 + 1 | 50 | 1 | 1401-06-01 | 400.0000000 | 400 | .0000000 | 0 | 1 | 400.0000000 | .0000000 + 1 | 40 | 1 | 1401-06-01 | 800.0000000 | 800 | .0000000 | 1 | 4 | 800.0000000 | .1818182 + 1 | 40 | 1 | 1401-04-01 | 200.0000000 | 200 | .0000000 | 0 | 3 | 200.0000000 | .1818182 + 1100 | 40 | 1100 | 1401-01-01 | 100.0000000 | 100 | .0000000 | 2400 | 2 | 100.0000000 | .1818182 + 1 | 40 | 1 | 1401-06-01 | 700.0000000 | 700 | .0000000 | 1 | 4 | 700.0000000 | .1818182 + 12 | 30 | 12 | 1401-06-01 | 600.0000000 | 600 | .0000000 | 5 | 3 | 600.0000000 | .5454545 + 12 | 30 | 12 | 1401-06-01 | 500.0000000 | 500 | .0000000 | 5 | 1 | 500.0000000 | .5454545 + 12 | 30 | 12 | 1401-06-01 | 500.0000000 | 500 | .0000000 | 5 | 3 | 500.0000000 | .5454545 + 1 | 30 | 1 | 1401-05-02 | 300.0000000 | 300 | .0000000 | 0 | 1 | 300.0000000 | .5454545 + 1 | 20 | 1 | 1401-05-01 | 100.0000000 | 100 | .0000000 | 0 | 1 | 100.0000000 | .9090909 + 1 | 10 | 1 | 1401-03-01 | 200.0000000 | 200 | .0000000 | 0 | 1 | 200.0000000 | 1.0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn asc rows between unbounded preceding and 2 following ); -- mvd 5,6,7,1->4; + pn | qty | pn | to_char | cn | dt | vn +-----+------+-----+-------------------+----+------------+---- + 200 | 1 | 200 | 9.0000000 | 1 | 1401-03-01 | 10 + 600 | 12 | 600 | 27.0000000 | 3 | 1401-06-01 | 30 + 700 | 1 | 700 | 36.0000000 | 4 | 1401-06-01 | 40 + 100 | 1 | 100 | 19.0000000 | 1 | 1401-05-01 | 20 + 100 | 1100 | 100 | 38.0000000 | 2 | 1401-01-01 | 40 + 200 | 1 | 200 | 37.0000000 | 3 | 1401-04-01 | 40 + 300 | 1 | 300 | 29.0000000 | 1 | 1401-05-02 | 30 + 400 | 1 | 400 | 48.5000000 | 1 | 1401-06-01 | 50 + 400 | 1 | 400 | 48.5000000 | 2 | 1401-06-01 | 50 + 500 | 12 | 500 | 28.0000000 | 1 | 1401-06-01 | 30 + 500 | 12 | 500 | 28.0000000 | 3 | 1401-06-01 | 30 + 800 | 1 | 800 | 36.0000000 | 4 | 1401-06-01 | 40 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn-ow_sale.vn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.pn asc rows between unbounded preceding and 0 following ), +win2 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,7,1->6; 7,9,10,1->8; 7,9,10,1->11; 7,3->12; 7,3->13; 7,3->14; + pn | pn | cn | cn | prc | to_char | dt | to_char | vn | qty | to_char | to_char | to_char | to_char +-----+-----+----+----+------+-------------------+------------+-------------------+----+------+-------------------+-------------------+-------------------+------------------- + 200 | 200 | 1 | 1 | 0 | 1.0000000 | 1401-03-01 | .0000000 | 10 | 1 | 1.0000000 | 200.0000000 | 1.0000000 | 1.0000000 + 300 | 300 | 1 | 1 | 0 | 1.0000000 | 1401-05-02 | .0000000 | 30 | 1 | 1.0000000 | 300.0000000 | 1.0000000 | 1.0000000 + 400 | 400 | 1 | 1 | 0 | 1.0000000 | 1401-06-01 | 2.0000000 | 50 | 1 | 1.0000000 | 400.0000000 | .5000000 | 1.0000000 + 400 | 400 | 2 | 2 | 0 | 1.0000000 | 1401-06-01 | .0000000 | 50 | 1 | 2.0000000 | 400.0000000 | 1.0000000 | 1.0000000 + 500 | 500 | 1 | 1 | 5 | 4.6666667 | 1401-06-01 | 3.0000000 | 30 | 12 | 1.0000000 | .0000000 | 1.0000000 | 2.0000000 + 500 | 500 | 3 | 3 | 5 | 6.5000000 | 1401-06-01 | .0000000 | 30 | 12 | 2.0000000 | .0000000 | .5000000 | 1.0000000 + 600 | 600 | 3 | 3 | 5 | 7.6000000 | 1401-06-01 | .0000000 | 30 | 12 | 1.0000000 | .0000000 | 1.0000000 | 2.0000000 + 700 | 700 | 4 | 4 | 1 | 6.5000000 | 1401-06-01 | .0000000 | 40 | 1 | 1.0000000 | .0000000 | .5000000 | 1.0000000 + 800 | 800 | 4 | 4 | 1 | 5.7142857 | 1401-06-01 | .0000000 | 40 | 1 | 1.0000000 | 700.0000000 | 1.0000000 | 2.0000000 + 100 | 100 | 2 | 2 | 2400 | 1100.0000000 | 1401-01-01 | .0000000 | 40 | 1100 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 200 | 200 | 3 | 3 | 0 | 1.0000000 | 1401-04-01 | .0000000 | 40 | 1 | 1.0000000 | 200.0000000 | 1.0000000 | 1.0000000 + 100 | 100 | 1 | 1 | 0 | 1.0000000 | 1401-05-01 | .0000000 | 20 | 1 | 1.0000000 | 100.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.cn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.qty order by ow_sale.cn asc); -- mvd 5,1,6,7->4; 1,6->8; + cn | vn | vn | to_char | prc | qty | pn | to_char +----+----+----+-------------------+------+------+-----+------------------- + 1 | 20 | 20 | -1.0000000 | 0 | 1 | 100 | 1.0000000 + 1 | 10 | 10 | -2.0000000 | 0 | 1 | 200 | 1.0000000 + 1 | 30 | 30 | -1.0000000 | 0 | 1 | 300 | 1.0000000 + 1 | 50 | 50 | -1.5000000 | 0 | 1 | 400 | 1.0000000 + 2 | 50 | 50 | -1.5000000 | 0 | 1 | 400 | 2.0000000 + 3 | 40 | 40 | -2.0000000 | 0 | 1 | 200 | 3.0000000 + 4 | 40 | 40 | -3.0000000 | 1 | 1 | 700 | 4.0000000 + 4 | 40 | 40 | -3.0000000 | 1 | 1 | 800 | 4.0000000 + 1 | 30 | 30 | 3.0000000 | 5 | 12 | 500 | 1.0000000 + 3 | 30 | 30 | 3.0000000 | 5 | 12 | 500 | 2.0000000 + 3 | 30 | 30 | 2.0000000 | 5 | 12 | 600 | 2.0000000 + 2 | 40 | 40 | 2398.0000000 | 2400 | 1100 | 100 | 1.0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn*ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.cn asc rows between floor(ow_sale.prc*ow_sale.pn) preceding and 0 preceding ); -- mvd 6,2,1->5; + pn | vn | pn | prc | to_char | cn +-----+----+-----+------+-------------------+---- + 200 | 10 | 200 | 0 | 10.0000000 | 1 + 100 | 20 | 100 | 0 | 20.0000000 | 1 + 300 | 30 | 300 | 0 | 30.0000000 | 1 + 500 | 30 | 500 | 5 | 30.0000000 | 1 + 500 | 30 | 500 | 5 | 50.0000000 | 3 + 600 | 30 | 600 | 5 | 60.0000000 | 3 + 100 | 40 | 100 | 2400 | 80.0000000 | 2 + 200 | 40 | 200 | 0 | 120.0000000 | 3 + 700 | 40 | 700 | 1 | 120.0000000 | 4 + 800 | 40 | 800 | 1 | 130.0000000 | 4 + 400 | 50 | 400 | 0 | 50.0000000 | 1 + 400 | 50 | 400 | 0 | 100.0000000 | 2 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows between 4 preceding and floor(ow_sale.qty/ow_sale.qty) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows between 4 preceding and floor(ow_sale.qty/ow_sale.qty) preceding ), +win2 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc); -- mvd 3,4,1->2; 3,4,1->5; 3,4,1->6; 3,4,1->7; + pn | to_char | dt | vn | to_char | to_char | to_char +-----+-------------------+------------+----+-------------------+-------------------+------------------- + 200 | .0000000 | 1401-03-01 | 10 | .0000000 | 10.0000000 | .0000000 + 300 | .0000000 | 1401-05-02 | 30 | .0000000 | 30.0000000 | .0000000 + 500 | .0000000 | 1401-06-01 | 30 | .0000000 | .0000000 | 5.0000000 + 500 | 12.0000000 | 1401-06-01 | 30 | 470.0000000 | .0000000 | 5.0000000 + 600 | .0000000 | 1401-06-01 | 30 | .0000000 | .0000000 | 5.0000000 + 700 | .0000000 | 1401-06-01 | 40 | .0000000 | 40.0000000 | 1.0000000 + 800 | .0000000 | 1401-06-01 | 40 | .0000000 | .0000000 | 1.0000000 + 400 | .0000000 | 1401-06-01 | 50 | .0000000 | 50.0000000 | .0000000 + 400 | 1.0000000 | 1401-06-01 | 50 | 350.0000000 | 50.0000000 | .0000000 + 100 | .0000000 | 1401-05-01 | 20 | .0000000 | 20.0000000 | .0000000 + 100 | .0000000 | 1401-01-01 | 40 | .0000000 | .0000000 | 2400.0000000 + 200 | .0000000 | 1401-04-01 | 40 | .0000000 | 40.0000000 | .0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc/ow_sale.pn),floor(ow_sale.prc/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.vn desc rows between 9 preceding and current row ); -- mvd 6,2,7,1->5; + qty | cn | qty | qty | to_char | prc | vn +------+----+------+------+-------------------+------+---- + 1 | 2 | 1 | 1 | .0000000 | 0 | 50 + 12 | 1 | 12 | 12 | .0000000 | 5 | 30 + 12 | 3 | 12 | 12 | .0000000 | 5 | 30 + 12 | 3 | 12 | 12 | .0000000 | 5 | 30 + 1 | 1 | 1 | 1 | .0000000 | 0 | 10 + 1 | 1 | 1 | 1 | .0000000 | 0 | 20 + 1 | 1 | 1 | 1 | .0000000 | 0 | 30 + 1 | 1 | 1 | 1 | .0000000 | 0 | 50 + 1 | 3 | 1 | 1 | .0000000 | 0 | 40 + 1 | 4 | 1 | 1 | .0000000 | 1 | 40 + 1 | 4 | 1 | 1 | .0000000 | 1 | 40 + 1100 | 2 | 1100 | 1100 | 24.0000000 | 2400 | 40 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn asc rows between 4 preceding and current row ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,6,1,3,2->5; 4,6,1,3,2->7; 6,1,3->8; + dt | pn | vn | prc | to_char | cn | to_char | to_char +------------+-----+----+------+-------------------+----+-------------------+------------------- + 1401-03-01 | 200 | 10 | 0 | .0000000 | 1 | 1.0000000 | .0000000 + 1401-05-02 | 300 | 30 | 0 | .0000000 | 1 | 1.0000000 | .0000000 + 1401-06-01 | 500 | 30 | 5 | 5.0000000 | 1 | 1.0000000 | .0000000 + 1401-06-01 | 500 | 30 | 5 | 5.0000000 | 3 | 2.0000000 | .0000000 + 1401-06-01 | 600 | 30 | 5 | 5.0000000 | 3 | 1.0000000 | .0000000 + 1401-06-01 | 700 | 40 | 1 | 1.0000000 | 4 | 1.0000000 | .0000000 + 1401-06-01 | 800 | 40 | 1 | 1.0000000 | 4 | 1.0000000 | .0000000 + 1401-06-01 | 400 | 50 | 0 | .0000000 | 1 | 1.0000000 | .0000000 + 1401-06-01 | 400 | 50 | 0 | .0000000 | 2 | 2.0000000 | .0000000 + 1401-05-01 | 100 | 20 | 0 | .0000000 | 1 | 1.0000000 | .0000000 + 1401-01-01 | 100 | 40 | 2400 | 2400.0000000 | 2 | 1.0000000 | .0000000 + 1401-04-01 | 200 | 40 | 0 | .0000000 | 3 | 1.0000000 | .0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn+ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn desc rows between floor(ow_sale.vn+ow_sale.cn) preceding and floor(ow_sale.prc) following ); -- mvd 3,1,7->6; + dt | qty | cn | cn | qty | to_char | pn +------------+------+----+----+------+-------------------+----- + 1401-05-01 | 1 | 1 | 1 | 1 | 101.0000000 | 100 + 1401-04-01 | 1 | 3 | 3 | 1 | 203.0000000 | 200 + 1401-05-02 | 1 | 1 | 1 | 1 | 301.0000000 | 300 + 1401-06-01 | 1 | 1 | 1 | 1 | 401.0000000 | 400 + 1401-06-01 | 12 | 1 | 1 | 12 | 501.0000000 | 500 + 1401-06-01 | 12 | 3 | 3 | 12 | 503.0000000 | 500 + 1401-06-01 | 1 | 4 | 4 | 1 | 704.0000000 | 700 + 1401-01-01 | 1100 | 2 | 2 | 1100 | 102.0000000 | 100 + 1401-03-01 | 1 | 1 | 1 | 1 | 201.0000000 | 200 + 1401-06-01 | 1 | 2 | 2 | 1 | 402.0000000 | 400 + 1401-06-01 | 12 | 3 | 3 | 12 | 603.0000000 | 600 + 1401-06-01 | 1 | 4 | 4 | 1 | 804.0000000 | 800 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.pn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc rows between 1 preceding and 4 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc rows between 1 preceding and 4 following ), +win2 as (partition by ow_sale.dt order by ow_sale.vn desc); -- mvd 3,4,1->2; 3,4,1->5; 7,1->6; + vn | to_char | prc | cn | to_char | to_char | dt +----+-------------------+------+----+-------------------+-------------------+------------ + 10 | .0000000 | 0 | 1 | 4.0000000 | 1.0000000 | 1401-03-01 + 20 | .0000000 | 0 | 1 | 4.0000000 | 1.0000000 | 1401-05-01 + 30 | .0000000 | 0 | 1 | 3.0000000 | 1.0000000 | 1401-05-02 + 50 | .0000000 | 0 | 1 | 2.0000000 | 1.0000000 | 1401-06-01 + 40 | .0000000 | 0 | 3 | 1.0000000 | 1.0000000 | 1401-04-01 + 40 | 1.0000000 | 1 | 4 | 2.0000000 | 3.0000000 | 1401-06-01 + 40 | 1.0000000 | 1 | 4 | 2.0000000 | 3.0000000 | 1401-06-01 + 30 | 5.0000000 | 5 | 1 | 1.0000000 | 5.0000000 | 1401-06-01 + 30 | 5.0000000 | 5 | 3 | 2.0000000 | 5.0000000 | 1401-06-01 + 30 | 5.0000000 | 5 | 3 | 2.0000000 | 5.0000000 | 1401-06-01 + 50 | .0000000 | 0 | 2 | 1.0000000 | 1.0000000 | 1401-06-01 + 40 | 2400.0000000 | 2400 | 2 | 1.0000000 | 1.0000000 | 1401-01-01 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between floor(ow_sale.qty/ow_sale.qty) preceding and unbounded following ); -- mvd 7,2,3,5->6; + dt | cn | qty | cn | pn | to_char | prc +------------+----+------+----+-----+-------------------+------ + 1401-05-02 | 1 | 1 | 1 | 300 | 1.0000000 | 0 + 1401-06-01 | 1 | 1 | 1 | 400 | 1.5000000 | 0 + 1401-06-01 | 2 | 1 | 2 | 400 | 1.5000000 | 0 + 1401-06-01 | 4 | 1 | 4 | 700 | 4.0000000 | 1 + 1401-06-01 | 3 | 12 | 3 | 600 | 3.0000000 | 5 + 1401-01-01 | 2 | 1100 | 2 | 100 | 2.0000000 | 2400 + 1401-05-01 | 1 | 1 | 1 | 100 | 1.0000000 | 0 + 1401-03-01 | 1 | 1 | 1 | 200 | 2.0000000 | 0 + 1401-04-01 | 3 | 1 | 3 | 200 | 2.0000000 | 0 + 1401-06-01 | 4 | 1 | 4 | 800 | 4.0000000 | 1 + 1401-06-01 | 1 | 12 | 1 | 500 | 2.0000000 | 5 + 1401-06-01 | 3 | 12 | 3 | 500 | 2.0000000 | 5 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc,ow_sale.cn asc rows between current row and current row ); -- mvd 3,4,5,6->2; + qty | to_char | prc | cn | vn | pn +------+-------------------+------+----+----+----- + 1 | 30.0000000 | 0 | 1 | 30 | 300 + 1 | 50.0000000 | 0 | 1 | 50 | 400 + 1 | 50.0000000 | 0 | 2 | 50 | 400 + 1 | 40.0000000 | 1 | 4 | 40 | 700 + 12 | 30.0000000 | 5 | 1 | 30 | 500 + 12 | 30.0000000 | 5 | 3 | 30 | 500 + 1 | 20.0000000 | 0 | 1 | 20 | 100 + 1 | 10.0000000 | 0 | 1 | 10 | 200 + 1 | 40.0000000 | 0 | 3 | 40 | 200 + 1 | 40.0000000 | 1 | 4 | 40 | 800 + 12 | 30.0000000 | 5 | 3 | 30 | 600 + 1100 | 40.0000000 | 2400 | 2 | 40 | 100 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty+ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn/ow_sale.pn) as int),cast (floor(ow_sale.prc/ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc rows between current row and current row ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc), +win3 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.pn asc), +win4 as (order by ow_sale.vn asc); -- mvd 5,6,3,7->4; 5,6,1->8; 5,1,7->9; 1->10; 5,6,1->11; + vn | vn | qty | to_char | cn | dt | pn | to_char | to_char | to_char | to_char +----+----+------+-------------------+----+------------+-----+-------------------+-------------------+-------------------+------------------- + 10 | 10 | 1 | 2.0000000 | 1 | 1401-03-01 | 200 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 20 | 20 | 1 | 2.0000000 | 1 | 1401-05-01 | 100 | .0000000 | 1.0000000 | 2.0000000 | 1.0000000 + 30 | 30 | 12 | 15.0000000 | 3 | 1401-06-01 | 600 | .0000000 | 2.0000000 | 3.0000000 | 2.0000000 + 30 | 30 | 1 | 2.0000000 | 1 | 1401-05-02 | 300 | .0000000 | 1.0000000 | 4.0000000 | 1.0000000 + 30 | 30 | 12 | 13.0000000 | 1 | 1401-06-01 | 500 | .0000000 | 2.0000000 | 5.0000000 | 2.0000000 + 30 | 30 | 12 | 15.0000000 | 3 | 1401-06-01 | 500 | .0000000 | 1.0000000 | 6.0000000 | 1.0000000 + 40 | 40 | 1100 | 1102.0000000 | 2 | 1401-01-01 | 100 | .0000000 | 1.0000000 | 7.0000000 | 1.0000000 + 40 | 40 | 1 | 4.0000000 | 3 | 1401-04-01 | 200 | .0000000 | 1.0000000 | 8.0000000 | 1.0000000 + 40 | 40 | 1 | 5.0000000 | 4 | 1401-06-01 | 700 | .0000000 | 1.0000000 | 9.0000000 | 1.0000000 + 40 | 40 | 1 | 5.0000000 | 4 | 1401-06-01 | 800 | .0000000 | 2.0000000 | 10.0000000 | 2.0000000 + 50 | 50 | 1 | 3.0000000 | 2 | 1401-06-01 | 400 | .0000000 | 1.0000000 | 11.0000000 | 1.0000000 + 50 | 50 | 1 | 2.0000000 | 1 | 1401-06-01 | 400 | .0000000 | 1.0000000 | 12.0000000 | 1.0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn+ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc,ow_sale.pn asc rows between current row and 4 following ), +win2 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.cn order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,1,4->2; 3,6,7,4->5; 4->8; + dt | to_char | cn | pn | to_char | qty | vn | to_char +------------+-------------------+----+-----+-------------------+------+----+------------------- + 1401-01-01 | 40.0000000 | 2 | 100 | 1.0000000 | 1100 | 40 | .0000000 + 1401-03-01 | 10.0000000 | 1 | 200 | 1.0000000 | 1 | 10 | 1200.0000000 + 1401-04-01 | 40.0000000 | 3 | 200 | 1.0000000 | 1 | 40 | .0000000 + 1401-05-01 | 20.0000000 | 1 | 100 | 1.0000000 | 1 | 20 | 201.0000000 + 1401-05-02 | 30.0000000 | 1 | 300 | 1.0000000 | 1 | 30 | 101.0000000 + 1401-06-01 | 38.0000000 | 1 | 400 | 1.0000000 | 1 | 50 | 301.0000000 + 1401-06-01 | 36.0000000 | 2 | 400 | 1.0000000 | 1 | 50 | 301.0000000 + 1401-06-01 | 34.0000000 | 1 | 500 | 1.0000000 | 12 | 30 | 401.0000000 + 1401-06-01 | 35.0000000 | 3 | 500 | 1.0000000 | 12 | 30 | 401.0000000 + 1401-06-01 | 36.6666667 | 3 | 600 | 1.0000000 | 12 | 30 | 401.0000000 + 1401-06-01 | 40.0000000 | 4 | 700 | 1.0000000 | 1 | 40 | 401.0000000 + 1401-06-01 | 40.0000000 | 4 | 800 | 1.0000000 | 1 | 40 | 512.0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc/ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows between current row and unbounded following ); -- mvd 3,2,1->6; + pn | vn | qty | cn | dt | to_char +-----+----+------+----+------------+------------------- + 200 | 10 | 1 | 1 | 1401-03-01 | .0000000 + 100 | 20 | 1 | 1 | 1401-05-01 | .0000000 + 300 | 30 | 1 | 1 | 1401-05-02 | .0000000 + 200 | 40 | 1 | 3 | 1401-04-01 | .0000000 + 700 | 40 | 1 | 4 | 1401-06-01 | .0000000 + 800 | 40 | 1 | 4 | 1401-06-01 | .0000000 + 400 | 50 | 1 | 1 | 1401-06-01 | .0000000 + 400 | 50 | 1 | 2 | 1401-06-01 | .0000000 + 500 | 30 | 12 | 1 | 1401-06-01 | 2.3333333 + 500 | 30 | 12 | 3 | 1401-06-01 | 1.0000000 + 600 | 30 | 12 | 3 | 1401-06-01 | 1.0000000 + 100 | 40 | 1100 | 2 | 1401-01-01 | 1200.0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn+ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win5),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win6),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.cn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.cn asc), +win4 as (order by ow_sale.cn asc), +win5 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.qty order by ow_sale.vn asc), +win6 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.vn asc); -- mvd 4,5,1,2->3; 1->6; 8,4,2->7; 4->9; 8,1,11,2->10; 8,5,4,1->12; + vn | pn | to_char | cn | dt | to_char | to_char | prc | to_char | to_char | qty | to_char +----+-----+-------------------+----+------------+-------------------+-------------------+------+-------------------+-------------------+------+------------------- + 30 | 500 | 563.3333333 | 1 | 1401-06-01 | 9.0000000 | .5000000 | 5 | .4166667 | 1.0000000 | 12 | 1.0000000 + 30 | 300 | 330.0000000 | 1 | 1401-05-02 | 8.0000000 | 1.0000000 | 0 | .4166667 | 1.0000000 | 1 | 1.0000000 + 10 | 200 | 210.0000000 | 1 | 1401-03-01 | 12.0000000 | .5000000 | 0 | .4166667 | 1.0000000 | 1 | 1.0000000 + 20 | 100 | 120.0000000 | 1 | 1401-05-01 | 11.0000000 | 1.0000000 | 0 | .4166667 | 1.0000000 | 1 | 1.0000000 + 50 | 400 | 450.0000000 | 1 | 1401-06-01 | 2.0000000 | .5000000 | 0 | .4166667 | 2.0000000 | 1 | 1.0000000 + 50 | 400 | 450.0000000 | 2 | 1401-06-01 | 1.0000000 | 1.0000000 | 0 | .5833333 | 1.0000000 | 1 | 1.0000000 + 40 | 100 | 140.0000000 | 2 | 1401-01-01 | 5.0000000 | 1.0000000 | 2400 | .5833333 | 1.0000000 | 1100 | 1.0000000 + 30 | 600 | 630.0000000 | 3 | 1401-06-01 | 7.0000000 | 1.0000000 | 5 | .8333333 | 1.0000000 | 12 | 2.0000000 + 40 | 200 | 240.0000000 | 3 | 1401-04-01 | 6.0000000 | 1.0000000 | 0 | .8333333 | 2.0000000 | 1 | 1.0000000 + 30 | 500 | 580.0000000 | 3 | 1401-06-01 | 10.0000000 | 1.0000000 | 5 | .8333333 | 2.0000000 | 12 | 1.0000000 + 40 | 800 | 840.0000000 | 4 | 1401-06-01 | 4.0000000 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1 | 1.0000000 + 40 | 700 | 790.0000000 | 4 | 1401-06-01 | 3.0000000 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1 | 2.0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.cn desc rows between floor(ow_sale.qty) following and floor(ow_sale.cn+ow_sale.pn) following ); -- mvd 7,8,2->6; + vn | pn | dt | qty | qty | to_char | prc | cn +----+-----+------------+------+------+-------------------+------+---- + 30 | 300 | 1401-05-02 | 1 | 1 | .0000000 | 0 | 1 + 50 | 400 | 1401-06-01 | 1 | 1 | 50.0000000 | 0 | 1 + 50 | 400 | 1401-06-01 | 1 | 1 | .0000000 | 0 | 2 + 40 | 700 | 1401-06-01 | 1 | 1 | .0000000 | 1 | 4 + 30 | 500 | 1401-06-01 | 12 | 12 | .0000000 | 5 | 1 + 30 | 500 | 1401-06-01 | 12 | 12 | .0000000 | 5 | 3 + 20 | 100 | 1401-05-01 | 1 | 1 | .0000000 | 0 | 1 + 10 | 200 | 1401-03-01 | 1 | 1 | 40.0000000 | 0 | 1 + 40 | 200 | 1401-04-01 | 1 | 1 | .0000000 | 0 | 3 + 40 | 800 | 1401-06-01 | 1 | 1 | .0000000 | 1 | 4 + 30 | 600 | 1401-06-01 | 12 | 12 | .0000000 | 5 | 3 + 40 | 100 | 1401-01-01 | 1100 | 1100 | .0000000 | 2400 | 2 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows between 3 following and 3 following ), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 1,3,5->4; 5->6; + cn | dt | vn | to_char | pn | to_char +----+------------+----+-------------------+-----+------------------- + 2 | 1401-01-01 | 40 | .0000000 | 100 | .0000000 + 1 | 1401-03-01 | 10 | .0000000 | 200 | 1.0000000 + 3 | 1401-04-01 | 40 | .0000000 | 200 | 3.0000000 + 1 | 1401-05-01 | 20 | .0000000 | 100 | 1.0000000 + 1 | 1401-05-02 | 30 | .0000000 | 300 | 1.0000000 + 1 | 1401-06-01 | 50 | .0000000 | 400 | 1.0000000 + 2 | 1401-06-01 | 50 | .0000000 | 400 | 2.0000000 + 1 | 1401-06-01 | 30 | .0000000 | 500 | .0000000 + 3 | 1401-06-01 | 30 | .0000000 | 500 | .0000000 + 3 | 1401-06-01 | 30 | .0000000 | 600 | .0000000 + 4 | 1401-06-01 | 40 | .0000000 | 700 | 4.0000000 + 4 | 1401-06-01 | 40 | .0000000 | 800 | .0000000 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty*ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.vn) following and unbounded following ); -- mvd 1,8->7; + cn | cn | prc | dt | qty | dt | to_char | vn +----+----+------+------------+------+------------+-------------------+---- + 1 | 1 | 0 | 1401-03-01 | 1 | 1401-03-01 | .0000000 | 10 + 1 | 1 | 0 | 1401-05-01 | 1 | 1401-05-01 | .0000000 | 20 + 1 | 1 | 0 | 1401-05-02 | 1 | 1401-05-02 | .0000000 | 30 + 1 | 1 | 5 | 1401-06-01 | 12 | 1401-06-01 | .0000000 | 30 + 3 | 3 | 5 | 1401-06-01 | 12 | 1401-06-01 | .0000000 | 30 + 3 | 3 | 5 | 1401-06-01 | 12 | 1401-06-01 | .0000000 | 30 + 2 | 2 | 2400 | 1401-01-01 | 1100 | 1401-01-01 | .0000000 | 40 + 3 | 3 | 0 | 1401-04-01 | 1 | 1401-04-01 | .0000000 | 40 + 4 | 4 | 1 | 1401-06-01 | 1 | 1401-06-01 | .0000000 | 40 + 4 | 4 | 1 | 1401-06-01 | 1 | 1401-06-01 | .0000000 | 40 + 1 | 1 | 0 | 1401-06-01 | 1 | 1401-06-01 | .0000000 | 50 + 2 | 2 | 0 | 1401-06-01 | 1 | 1401-06-01 | .0000000 | 50 +(12 rows) + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn*ow_sale.vn),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty-ow_sale.cn) as int),cast (floor(ow_sale.qty/ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc,ow_sale.cn desc rows between floor(ow_sale.vn) following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 3,5->4; 1->6; + pn | pn | cn | to_char | vn | to_char +-----+-----+----+-------------------+----+------------------- + 100 | 100 | 2 | .0000000 | 40 | .0000000 + 200 | 200 | 1 | .0000000 | 10 | 1098.0000000 + 200 | 200 | 3 | .0000000 | 40 | .0000000 + 100 | 100 | 1 | .0000000 | 20 | -2.0000000 + 300 | 300 | 1 | .0000000 | 30 | .0000000 + 400 | 400 | 1 | .0000000 | 50 | .0000000 + 400 | 400 | 2 | .0000000 | 50 | .0000000 + 500 | 500 | 1 | .0000000 | 30 | -1.0000000 + 500 | 500 | 3 | .0000000 | 30 | 11.0000000 + 600 | 600 | 3 | .0000000 | 30 | 9.0000000 + 700 | 700 | 4 | .0000000 | 40 | 9.0000000 + 800 | 800 | 4 | .0000000 | 40 | -3.0000000 +(12 rows) + +-- REGR_COUNT() function with NULL OVER() clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn-ow_sale.cn),floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (); -- mvd 2->2; + vn | to_char +----+------------------- + 30 | 12.0000000 + 30 | 12.0000000 + 30 | 12.0000000 + 40 | 12.0000000 + 40 | 12.0000000 + 50 | 12.0000000 + 10 | 12.0000000 + 20 | 12.0000000 + 30 | 12.0000000 + 40 | 12.0000000 + 40 | 12.0000000 + 50 | 12.0000000 +(12 rows) + +-- REGR_COUNT() function with NULL OVER() clause in combination with other window functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn+ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (), +win2 as (order by ow_sale.cn desc); -- mvd 6->6; 2->7; + qty | cn | vn | vn | cn | to_char | to_char +------+----+----+----+----+-------------------+------------------- + 1 | 4 | 40 | 40 | 4 | 12.0000000 | 1.0000000 + 1 | 4 | 40 | 40 | 4 | 12.0000000 | 2.0000000 + 12 | 3 | 30 | 30 | 3 | 12.0000000 | 3.0000000 + 1 | 3 | 40 | 40 | 3 | 12.0000000 | 4.0000000 + 12 | 3 | 30 | 30 | 3 | 12.0000000 | 5.0000000 + 1 | 2 | 50 | 50 | 2 | 12.0000000 | 6.0000000 + 1100 | 2 | 40 | 40 | 2 | 12.0000000 | 7.0000000 + 1 | 1 | 30 | 30 | 1 | 12.0000000 | 8.0000000 + 1 | 1 | 50 | 50 | 1 | 12.0000000 | 9.0000000 + 12 | 1 | 30 | 30 | 1 | 12.0000000 | 10.0000000 + 1 | 1 | 20 | 20 | 1 | 12.0000000 | 11.0000000 + 1 | 1 | 10 | 10 | 1 | 12.0000000 | 12.0000000 +(12 rows) + +-- REGR_COUNT() function with OVER() clause having ONLY PARTITION BY -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty),floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty); -- mvd 3->2; + pn | to_char | qty +-----+-------------------+------ + 300 | 8.0000000 | 1 + 700 | 8.0000000 | 1 + 400 | 8.0000000 | 1 + 200 | 8.0000000 | 1 + 100 | 8.0000000 | 1 + 200 | 8.0000000 | 1 + 800 | 8.0000000 | 1 + 400 | 8.0000000 | 1 + 500 | 3.0000000 | 12 + 500 | 3.0000000 | 12 + 600 | 3.0000000 | 12 + 100 | 1.0000000 | 1100 +(12 rows) + +-- REGR_COUNT() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc,ow_sale.pn desc,ow_sale.vn desc); -- mvd 6,2,3->5; + qty | vn | pn | vn | to_char | cn +------+----+-----+----+-------------------+---- + 1 | 40 | 800 | 40 | 1.0000000 | 4 + 1 | 40 | 700 | 40 | 2.0000000 | 4 + 12 | 30 | 600 | 30 | 3.0000000 | 3 + 12 | 30 | 500 | 30 | 4.0000000 | 3 + 1 | 40 | 200 | 40 | 5.0000000 | 3 + 1 | 50 | 400 | 50 | 6.0000000 | 2 + 1100 | 40 | 100 | 40 | 7.0000000 | 2 + 12 | 30 | 500 | 30 | 8.0000000 | 1 + 1 | 50 | 400 | 50 | 9.0000000 | 1 + 1 | 30 | 300 | 30 | 10.0000000 | 1 + 1 | 10 | 200 | 10 | 11.0000000 | 1 + 1 | 20 | 100 | 20 | 12.0000000 | 1 +(12 rows) + +-- REGR_COUNT() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty+ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +, +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc); -- mvd 3->2; 3->4; 3->5; + pn | to_char | cn | to_char | to_char +-----+-------------------+----+-------------------+------------------- + 800 | 2.0000000 | 4 | .1666667 | 1.0000000 + 700 | 2.0000000 | 4 | .1666667 | 1.0000000 + 500 | 5.0000000 | 3 | .4166667 | 3.0000000 + 200 | 5.0000000 | 3 | .4166667 | 3.0000000 + 600 | 5.0000000 | 3 | .4166667 | 3.0000000 + 400 | 7.0000000 | 2 | .5833333 | 6.0000000 + 100 | 7.0000000 | 2 | .5833333 | 6.0000000 + 300 | 12.0000000 | 1 | 1.0000000 | 8.0000000 + 400 | 12.0000000 | 1 | 1.0000000 | 8.0000000 + 500 | 12.0000000 | 1 | 1.0000000 | 8.0000000 + 200 | 12.0000000 | 1 | 1.0000000 | 8.0000000 + 100 | 12.0000000 | 1 | 1.0000000 | 8.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn+ow_sale.pn),floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ); -- mvd 6->5; + pn | qty | pn | vn | to_char | cn +-----+------+-----+----+-------------------+---- + 800 | 1 | 800 | 40 | 2.0000000 | 4 + 700 | 1 | 700 | 40 | 2.0000000 | 4 + 500 | 12 | 500 | 30 | 5.0000000 | 3 + 200 | 1 | 200 | 40 | 5.0000000 | 3 + 600 | 12 | 600 | 30 | 5.0000000 | 3 + 400 | 1 | 400 | 50 | 7.0000000 | 2 + 100 | 1100 | 100 | 40 | 7.0000000 | 2 + 300 | 1 | 300 | 30 | 12.0000000 | 1 + 400 | 1 | 400 | 50 | 12.0000000 | 1 + 500 | 12 | 500 | 30 | 12.0000000 | 1 + 200 | 1 | 200 | 10 | 12.0000000 | 1 + 100 | 1 | 100 | 20 | 12.0000000 | 1 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 4->3; 4->5; 4->6; 4,8->7; 4,8->9; 11->10; + qty | pn | to_char | cn | to_char | to_char | to_char | dt | to_char | to_char | vn +------+-----+-------------------+----+-------------------+-------------------+-------------------+------------+-------------------+-------------------+---- + 1100 | 100 | 7.0000000 | 2 | 30.0000000 | 200.0000000 | .0000000 | 1401-01-01 | 1.0000000 | .0000000 | 40 + 1 | 200 | 12.0000000 | 1 | 10.0000000 | 100.0000000 | .0000000 | 1401-03-01 | 1.0000000 | .0000000 | 10 + 1 | 200 | 5.0000000 | 3 | 30.0000000 | 200.0000000 | .0000000 | 1401-04-01 | 1.0000000 | .0000000 | 40 + 1 | 100 | 12.0000000 | 1 | 10.0000000 | 100.0000000 | .0000000 | 1401-05-01 | 1.0000000 | .0000000 | 20 + 1 | 300 | 12.0000000 | 1 | 10.0000000 | 100.0000000 | .0000000 | 1401-05-02 | 1.0000000 | .0000000 | 30 + 1 | 400 | 12.0000000 | 1 | 10.0000000 | 100.0000000 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 | 50 + 1 | 400 | 7.0000000 | 2 | 30.0000000 | 200.0000000 | .0000000 | 1401-06-01 | 2.0000000 | .0000000 | 50 + 12 | 500 | 12.0000000 | 1 | 10.0000000 | 100.0000000 | .0000000 | 1401-06-01 | 3.0000000 | .0000000 | 30 + 12 | 500 | 5.0000000 | 3 | 30.0000000 | 200.0000000 | .0000000 | 1401-06-01 | 4.0000000 | .0000000 | 30 + 12 | 600 | 5.0000000 | 3 | 30.0000000 | 200.0000000 | .0000000 | 1401-06-01 | 5.0000000 | .0000000 | 30 + 1 | 700 | 2.0000000 | 4 | 40.0000000 | 701.0000000 | .0000000 | 1401-06-01 | 6.0000000 | .0000000 | 40 + 1 | 800 | 2.0000000 | 4 | 40.0000000 | 701.0000000 | .0000000 | 1401-06-01 | 7.0000000 | .0000000 | 40 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range 2 preceding ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.cn desc), +win3 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.cn asc), +win4 as (order by ow_sale.cn desc); -- mvd 5->4; 1,5,7->6; 1,7->8; 1->9; 1,7->10; + cn | qty | qty | to_char | vn | to_char | pn | to_char | to_char | to_char +----+------+------+-------------------+----+-------------------+-----+-------------------+-------------------+------------------- + 4 | 1 | 1 | 4.0000000 | 40 | 1.0000000 | 700 | .0000000 | 1.0000000 | 1.0000000 + 4 | 1 | 1 | 4.0000000 | 40 | 1.0000000 | 800 | .0000000 | 1.0000000 | 1.0000000 + 3 | 12 | 12 | 4.0000000 | 30 | 1.0000000 | 600 | .0000000 | 2.0000000 | 1.0000000 + 3 | 12 | 12 | 4.0000000 | 30 | 1.0000000 | 500 | .0000000 | 2.0000000 | 1.0000000 + 3 | 1 | 1 | 4.0000000 | 40 | 1.0000000 | 200 | .0000000 | 2.0000000 | 1.0000000 + 2 | 1 | 1 | 2.0000000 | 50 | 1.0000000 | 400 | .0000000 | 3.0000000 | 1.0000000 + 2 | 1100 | 1100 | 4.0000000 | 40 | 1.0000000 | 100 | .0000000 | 3.0000000 | 1.0000000 + 1 | 1 | 1 | 4.0000000 | 30 | 1.0000000 | 300 | .0000000 | 4.0000000 | 1.0000000 + 1 | 1 | 1 | 2.0000000 | 50 | 2.0000000 | 400 | .0000000 | 4.0000000 | 1.0000000 + 1 | 12 | 12 | 4.0000000 | 30 | 2.0000000 | 500 | .0000000 | 4.0000000 | 1.0000000 + 1 | 1 | 1 | 1.0000000 | 20 | 1.0000000 | 100 | .0000000 | 4.0000000 | 1.0000000 + 1 | 1 | 1 | 1.0000000 | 10 | 1.0000000 | 200 | .0000000 | 4.0000000 | 1.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty),floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range current row ); -- mvd 7->6; + qty | vn | cn | dt | prc | to_char | pn +------+----+----+------------+------+-------------------+----- + 1 | 20 | 1 | 1401-05-01 | 0 | 2.0000000 | 100 + 1100 | 40 | 2 | 1401-01-01 | 2400 | 2.0000000 | 100 + 1 | 10 | 1 | 1401-03-01 | 0 | 2.0000000 | 200 + 1 | 40 | 3 | 1401-04-01 | 0 | 2.0000000 | 200 + 1 | 30 | 1 | 1401-05-02 | 0 | 1.0000000 | 300 + 1 | 50 | 1 | 1401-06-01 | 0 | 2.0000000 | 400 + 1 | 50 | 2 | 1401-06-01 | 0 | 2.0000000 | 400 + 12 | 30 | 1 | 1401-06-01 | 5 | 2.0000000 | 500 + 12 | 30 | 3 | 1401-06-01 | 5 | 2.0000000 | 500 + 12 | 30 | 3 | 1401-06-01 | 5 | 1.0000000 | 600 + 1 | 40 | 4 | 1401-06-01 | 1 | 1.0000000 | 700 + 1 | 40 | 4 | 1401-06-01 | 1 | 1.0000000 | 800 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty),floor(ow_sale.vn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and floor(ow_sale.prc) preceding ); -- mvd 4->3; + dt | vn | to_char | pn +------------+----+-------------------+----- + 1401-06-01 | 40 | .0000000 | 800 + 1401-06-01 | 40 | 1.0000000 | 700 + 1401-06-01 | 30 | 2.0000000 | 600 + 1401-06-01 | 30 | 3.0000000 | 500 + 1401-06-01 | 30 | 3.0000000 | 500 + 1401-06-01 | 50 | 7.0000000 | 400 + 1401-06-01 | 50 | 7.0000000 | 400 + 1401-05-02 | 30 | 8.0000000 | 300 + 1401-03-01 | 10 | 10.0000000 | 200 + 1401-04-01 | 40 | 10.0000000 | 200 + 1401-05-01 | 20 | 12.0000000 | 100 + 1401-01-01 | 40 | .0000000 | 100 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and 4 preceding ), +win2 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.pn desc); -- mvd 1->4; 6,7->5; 6,7->8; + vn | qty | cn | to_char | to_char | prc | pn | to_char +----+------+----+-------------------+-------------------+------+-----+------------------- + 10 | 1 | 1 | .0000000 | 1.0000000 | 0 | 200 | .1666667 + 20 | 1 | 1 | 1.0000000 | 1.0000000 | 0 | 100 | .5000000 + 30 | 12 | 1 | 2.0000000 | .0000000 | 5 | 500 | .3333333 + 30 | 12 | 3 | 2.0000000 | .0000000 | 5 | 500 | .6666667 + 30 | 1 | 1 | 2.0000000 | 1.0000000 | 0 | 300 | .6666667 + 30 | 12 | 3 | 2.0000000 | .0000000 | 5 | 600 | 1.0000000 + 40 | 1100 | 2 | 6.0000000 | .0000000 | 2400 | 100 | 1.0000000 + 40 | 1 | 3 | 6.0000000 | 1.0000000 | 0 | 200 | .3333333 + 40 | 1 | 4 | 6.0000000 | 1.0000000 | 1 | 700 | .5000000 + 40 | 1 | 4 | 6.0000000 | .0000000 | 1 | 800 | 1.0000000 + 50 | 1 | 2 | 10.0000000 | 1.0000000 | 0 | 400 | 1.0000000 + 50 | 1 | 1 | 10.0000000 | 1.0000000 | 0 | 400 | .8333333 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn/ow_sale.qty),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc+ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(order by ow_sale.cn desc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (order by ow_sale.vn asc); -- mvd 3->2; 5->4; 3->6; 8->7; + dt | to_char | cn | to_char | pn | to_char | to_char | vn +------------+-------------------+----+-------------------+-----+-------------------+-------------------+---- + 1401-03-01 | 12.0000000 | 1 | .0000000 | 200 | 2400.0000000 | 1.0000000 | 10 + 1401-05-01 | 12.0000000 | 1 | .0000000 | 100 | 2400.0000000 | 2.0000000 | 20 + 1401-06-01 | 5.0000000 | 3 | .0000000 | 500 | 5.0000000 | 3.0000000 | 30 + 1401-06-01 | 12.0000000 | 1 | .0000000 | 500 | 2400.0000000 | 3.0000000 | 30 + 1401-05-02 | 12.0000000 | 1 | .0000000 | 300 | 2400.0000000 | 3.0000000 | 30 + 1401-06-01 | 5.0000000 | 3 | .0000000 | 600 | 5.0000000 | 3.0000000 | 30 + 1401-01-01 | 7.0000000 | 2 | .0000000 | 100 | 2400.0000000 | 4.0000000 | 40 + 1401-04-01 | 5.0000000 | 3 | .0000000 | 200 | 5.0000000 | 4.0000000 | 40 + 1401-06-01 | 2.0000000 | 4 | .0000000 | 700 | 1.0000000 | 4.0000000 | 40 + 1401-06-01 | 2.0000000 | 4 | .0000000 | 800 | 1.0000000 | 4.0000000 | 40 + 1401-06-01 | 7.0000000 | 2 | .0000000 | 400 | 2400.0000000 | 5.0000000 | 50 + 1401-06-01 | 12.0000000 | 1 | .0000000 | 400 | 2400.0000000 | 5.0000000 | 50 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn*ow_sale.pn)) OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.prc) following ), +win2 as (order by ow_sale.vn desc); -- mvd 6->5; 8->7; 8->9; 8->10; 8->11; 8->12; + pn | dt | pn | dt | to_char | cn | to_char | vn | to_char | to_char | to_char | to_char +-----+------------+-----+------------+-------------------+----+-------------------+----+-------------------+-------------------+-------------------+------------------- + 400 | 1401-06-01 | 400 | 1401-06-01 | 12.0000000 | 1 | .0000000 | 50 | 1.0000000 | 160000.0000000 | .1666667 | .0000000 + 400 | 1401-06-01 | 400 | 1401-06-01 | 7.0000000 | 2 | .0000000 | 50 | 1.0000000 | 160000.0000000 | .1666667 | .0000000 + 200 | 1401-04-01 | 200 | 1401-04-01 | 5.0000000 | 3 | .1818182 | 40 | 3.0000000 | 640000.0000000 | .5000000 | 2400.0000000 + 800 | 1401-06-01 | 800 | 1401-06-01 | 5.0000000 | 4 | .1818182 | 40 | 3.0000000 | 640000.0000000 | .5000000 | 2400.0000000 + 700 | 1401-06-01 | 700 | 1401-06-01 | 5.0000000 | 4 | .1818182 | 40 | 3.0000000 | 640000.0000000 | .5000000 | 2400.0000000 + 100 | 1401-01-01 | 100 | 1401-01-01 | 12.0000000 | 2 | .1818182 | 40 | 3.0000000 | 640000.0000000 | .5000000 | 2400.0000000 + 300 | 1401-05-02 | 300 | 1401-05-02 | 12.0000000 | 1 | .5454545 | 30 | 7.0000000 | 640000.0000000 | .8333333 | 2400.0000000 + 500 | 1401-06-01 | 500 | 1401-06-01 | 12.0000000 | 3 | .5454545 | 30 | 7.0000000 | 640000.0000000 | .8333333 | 2400.0000000 + 500 | 1401-06-01 | 500 | 1401-06-01 | 12.0000000 | 1 | .5454545 | 30 | 7.0000000 | 640000.0000000 | .8333333 | 2400.0000000 + 600 | 1401-06-01 | 600 | 1401-06-01 | 12.0000000 | 3 | .5454545 | 30 | 7.0000000 | 640000.0000000 | .8333333 | 2400.0000000 + 100 | 1401-05-01 | 100 | 1401-05-01 | 12.0000000 | 1 | .9090909 | 20 | 11.0000000 | 640000.0000000 | .9166667 | 2400.0000000 + 200 | 1401-03-01 | 200 | 1401-03-01 | 12.0000000 | 1 | 1.0000000 | 10 | 12.0000000 | 640000.0000000 | 1.0000000 | 2400.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn-ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 1->4; + vn | qty | qty | to_char +----+------+------+------------------- + 10 | 1 | 1 | 12.0000000 + 20 | 1 | 1 | 12.0000000 + 30 | 12 | 12 | 12.0000000 + 30 | 1 | 1 | 12.0000000 + 30 | 12 | 12 | 12.0000000 + 30 | 12 | 12 | 12.0000000 + 40 | 1100 | 1100 | 12.0000000 + 40 | 1 | 1 | 12.0000000 + 40 | 1 | 1 | 12.0000000 + 40 | 1 | 1 | 12.0000000 + 50 | 1 | 1 | 12.0000000 + 50 | 1 | 1 | 12.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.pn desc), +win4 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 4->3; 4->5; 4->6; 8->7; 1->9; + vn | qty | to_char | cn | to_char | to_char | to_char | pn | to_char +----+------+-------------------+----+-------------------+-------------------+-------------------+-----+------------------- + 40 | 1100 | 12.0000000 | 2 | .5833333 | 7.0000000 | .0000000 | 100 | .0000000 + 10 | 1 | 12.0000000 | 1 | .4166667 | 5.0000000 | 2.0000000 | 200 | .0000000 + 40 | 1 | 12.0000000 | 3 | .8333333 | 10.0000000 | 1.0000000 | 200 | .0000000 + 20 | 1 | 12.0000000 | 1 | .4166667 | 5.0000000 | 3.0000000 | 100 | .0000000 + 30 | 1 | 12.0000000 | 1 | .4166667 | 5.0000000 | 1.0000000 | 300 | .0000000 + 50 | 1 | 12.0000000 | 1 | .4166667 | 5.0000000 | 1.0000000 | 400 | .0000000 + 50 | 1 | 12.0000000 | 2 | .5833333 | 7.0000000 | 1.0000000 | 400 | .0000000 + 30 | 12 | 12.0000000 | 1 | .4166667 | 5.0000000 | .0000000 | 500 | .0000000 + 30 | 12 | 12.0000000 | 3 | .8333333 | 10.0000000 | .0000000 | 500 | .0000000 + 30 | 12 | 12.0000000 | 3 | .8333333 | 10.0000000 | .0000000 | 600 | .0000000 + 40 | 1 | 12.0000000 | 4 | 1.0000000 | 12.0000000 | 3.0000000 | 700 | .0000000 + 40 | 1 | 12.0000000 | 4 | 1.0000000 | 12.0000000 | 4.0000000 | 800 | .0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 4 preceding and floor(ow_sale.vn) preceding ); -- mvd 2->3; + qty | pn | to_char +------+-----+------------------- + 1 | 100 | .0000000 + 1100 | 100 | .0000000 + 1 | 200 | .0000000 + 1 | 200 | .0000000 + 1 | 300 | .0000000 + 1 | 400 | .0000000 + 1 | 400 | .0000000 + 12 | 500 | .0000000 + 12 | 500 | .0000000 + 12 | 600 | .0000000 + 1 | 700 | .0000000 + 1 | 800 | .0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn-ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 4 preceding and 2 preceding ), +win2 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.vn order by ow_sale.vn desc), +win3 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.vn asc); -- mvd 3->2; 5,3->4; 3->6; 5,3,8->7; + cn | to_char | vn | to_char | dt | to_char | to_char | pn +----+-------------------+----+-------------------+------------+-------------------+-------------------+----- + 1 | .0000000 | 10 | 1.0000000 | 1401-03-01 | .0000000 | .0000000 | 200 + 1 | .0000000 | 20 | 1.0000000 | 1401-05-01 | .0000000 | .0000000 | 100 + 1 | .0000000 | 30 | 1.0000000 | 1401-05-02 | .0000000 | .0000000 | 300 + 3 | .0000000 | 30 | 1.0000000 | 1401-06-01 | .0000000 | .0000000 | 500 + 1 | .0000000 | 30 | 2.0000000 | 1401-06-01 | .0000000 | .0000000 | 500 + 3 | .0000000 | 30 | 3.0000000 | 1401-06-01 | .0000000 | .0000000 | 600 + 4 | .0000000 | 40 | 1.0000000 | 1401-06-01 | .0000000 | .0000000 | 800 + 4 | .0000000 | 40 | 2.0000000 | 1401-06-01 | .0000000 | .0000000 | 700 + 2 | .0000000 | 40 | 1.0000000 | 1401-01-01 | .0000000 | .0000000 | 100 + 3 | .0000000 | 40 | 1.0000000 | 1401-04-01 | .0000000 | .0000000 | 200 + 1 | .0000000 | 50 | 1.0000000 | 1401-06-01 | .0000000 | .0000000 | 400 + 2 | .0000000 | 50 | 2.0000000 | 1401-06-01 | .0000000 | .0000000 | 400 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty+ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 0 preceding and current row ); -- mvd 2->3; + pn | cn | to_char +-----+----+------------------- + 100 | 1 | 5.0000000 + 200 | 1 | 5.0000000 + 300 | 1 | 5.0000000 + 400 | 1 | 5.0000000 + 500 | 1 | 5.0000000 + 100 | 2 | 2.0000000 + 400 | 2 | 2.0000000 + 200 | 3 | 3.0000000 + 600 | 3 | 3.0000000 + 500 | 3 | 3.0000000 + 700 | 4 | 2.0000000 + 800 | 4 | 2.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.dt,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty+ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn*ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.cn) preceding and current row ), +win2 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc); -- mvd 6->5; 6->7; + prc | dt | prc | prc | to_char | cn | to_char +------+------------+------+------+-------------------+----+------------------- + 1 | 1401-06-01 | 1 | 1 | 2.0000000 | 4 | .0000000 + 1 | 1401-06-01 | 1 | 1 | 2.0000000 | 4 | .0000000 + 0 | 1401-04-01 | 0 | 0 | 5.0000000 | 3 | .0000000 + 5 | 1401-06-01 | 5 | 5 | 5.0000000 | 3 | .0000000 + 5 | 1401-06-01 | 5 | 5 | 5.0000000 | 3 | .0000000 + 2400 | 1401-01-01 | 2400 | 2400 | 7.0000000 | 2 | .0000000 + 0 | 1401-06-01 | 0 | 0 | 7.0000000 | 2 | .0000000 + 0 | 1401-06-01 | 0 | 0 | 7.0000000 | 1 | .0000000 + 0 | 1401-03-01 | 0 | 0 | 7.0000000 | 1 | .0000000 + 5 | 1401-06-01 | 5 | 5 | 7.0000000 | 1 | .0000000 + 0 | 1401-05-01 | 0 | 0 | 7.0000000 | 1 | .0000000 + 0 | 1401-05-02 | 0 | 0 | 7.0000000 | 1 | .0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn+ow_sale.cn),floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 1 preceding and floor(ow_sale.cn+ow_sale.qty) following ); -- mvd 1->2; + cn | to_char +----+------------------- + 1 | 10.0000000 + 1 | 10.0000000 + 1 | 10.0000000 + 1 | 12.0000000 + 1 | 10.0000000 + 2 | 12.0000000 + 2 | 12.0000000 + 3 | 7.0000000 + 3 | 7.0000000 + 3 | 7.0000000 + 4 | 5.0000000 + 4 | 5.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between floor(ow_sale.cn) preceding and 1 following ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.pn order by ow_sale.vn desc), +win4 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.vn desc); -- mvd 2->3; 2->4; 6,2->5; 8,6->7; 2->9; + cn | pn | to_char | to_char | to_char | vn | to_char | dt | to_char +----+-----+-------------------+-------------------+-------------------+----+-------------------+------------+------------------- + 4 | 800 | 1.0000000 | 12.0000000 | 1.0000000 | 40 | 2.0000000 | 1401-06-01 | 1.0000000 + 4 | 700 | 1.0000000 | 11.0000000 | 1.0000000 | 40 | 1.0000000 | 1401-06-01 | .9166667 + 3 | 600 | 1.0000000 | 10.0000000 | 1.0000000 | 30 | 3.0000000 | 1401-06-01 | .8333333 + 3 | 500 | 2.0000000 | 8.0000000 | 1.0000000 | 30 | 1.0000000 | 1401-06-01 | .7500000 + 1 | 500 | 2.0000000 | 9.0000000 | 2.0000000 | 30 | 2.0000000 | 1401-06-01 | .7500000 + 2 | 400 | 2.0000000 | 7.0000000 | 2.0000000 | 50 | 2.0000000 | 1401-06-01 | .5833333 + 1 | 400 | 2.0000000 | 6.0000000 | 1.0000000 | 50 | 1.0000000 | 1401-06-01 | .5833333 + 1 | 300 | 1.0000000 | 5.0000000 | 1.0000000 | 30 | 1.0000000 | 1401-05-02 | .4166667 + 1 | 200 | 2.0000000 | 4.0000000 | 2.0000000 | 10 | 1.0000000 | 1401-03-01 | .3333333 + 3 | 200 | 2.0000000 | 3.0000000 | 1.0000000 | 40 | 1.0000000 | 1401-04-01 | .3333333 + 2 | 100 | 2.0000000 | 1.0000000 | 1.0000000 | 40 | 1.0000000 | 1401-01-01 | .1666667 + 1 | 100 | 2.0000000 | 2.0000000 | 2.0000000 | 20 | 1.0000000 | 1401-05-01 | .1666667 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty+ow_sale.qty),floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 4 preceding and unbounded following ); -- mvd 4->3; + qty | prc | to_char | cn +------+------+-------------------+---- + 1 | 0 | 12.0000000 | 1 + 1 | 0 | 12.0000000 | 1 + 1 | 0 | 12.0000000 | 1 + 1 | 0 | 12.0000000 | 1 + 12 | 5 | 12.0000000 | 1 + 1100 | 2400 | 12.0000000 | 2 + 1 | 0 | 12.0000000 | 2 + 1 | 0 | 12.0000000 | 3 + 12 | 5 | 12.0000000 | 3 + 12 | 5 | 12.0000000 | 3 + 1 | 1 | 12.0000000 | 4 + 1 | 1 | 12.0000000 | 4 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc-ow_sale.pn),floor(ow_sale.prc+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.qty)) OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 4 preceding and unbounded following ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.vn desc); -- mvd 3->4; 3->5; 2->6; 2->7; 2->8; 2->9; + qty | vn | cn | to_char | to_char | to_char | to_char | to_char | to_char +------+----+----+-------------------+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | 50 | 1 | 12.0000000 | 12.0000000 | .0000000 | 49.0000000 | .1666667 | 1.0000000 + 1 | 50 | 2 | 12.0000000 | 12.0000000 | .0000000 | 49.0000000 | .1666667 | 1.0000000 + 1 | 40 | 4 | 12.0000000 | 12.0000000 | .1818182 | 49.0000000 | .5000000 | 1.0000000 + 1100 | 40 | 2 | 12.0000000 | 12.0000000 | .1818182 | 49.0000000 | .5000000 | 1.0000000 + 1 | 40 | 3 | 12.0000000 | 12.0000000 | .1818182 | 49.0000000 | .5000000 | 1.0000000 + 1 | 40 | 4 | 12.0000000 | 12.0000000 | .1818182 | 49.0000000 | .5000000 | 1.0000000 + 12 | 30 | 3 | 12.0000000 | 12.0000000 | .5454545 | 49.0000000 | .8333333 | 1.0000000 + 1 | 30 | 1 | 12.0000000 | 12.0000000 | .5454545 | 49.0000000 | .8333333 | 1.0000000 + 12 | 30 | 1 | 12.0000000 | 12.0000000 | .5454545 | 49.0000000 | .8333333 | 1.0000000 + 12 | 30 | 3 | 12.0000000 | 12.0000000 | .5454545 | 49.0000000 | .8333333 | 1.0000000 + 1 | 20 | 1 | 12.0000000 | 12.0000000 | .9090909 | 49.0000000 | .9166667 | 1.0000000 + 1 | 10 | 1 | 12.0000000 | 12.0000000 | 1.0000000 | 49.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and current row ); -- mvd 2->3; + dt | cn | to_char +------------+----+------------------- + 1401-06-01 | 4 | 2.0000000 + 1401-06-01 | 4 | 2.0000000 + 1401-06-01 | 3 | 3.0000000 + 1401-04-01 | 3 | 3.0000000 + 1401-06-01 | 3 | 3.0000000 + 1401-06-01 | 2 | 2.0000000 + 1401-01-01 | 2 | 2.0000000 + 1401-05-02 | 1 | 5.0000000 + 1401-06-01 | 1 | 5.0000000 + 1401-06-01 | 1 | 5.0000000 + 1401-03-01 | 1 | 5.0000000 + 1401-05-01 | 1 | 5.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn+ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and current row ), +win2 as (partition by ow_sale.dt order by ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc), +win4 as (partition by ow_sale.dt,ow_sale.qty order by ow_sale.vn desc); -- mvd 6->5; 8,9->7; 2,8,6,9->10; 8,6,1->11; + qty | cn | prc | cn | to_char | vn | to_char | dt | pn | to_char | to_char +------+----+------+----+-------------------+----+-------------------+------------+-----+-------------------+------------------- + 1 | 2 | 0 | 2 | 2.0000000 | 50 | 1.0000000 | 1401-06-01 | 400 | .0000000 | 1.0000000 + 1 | 1 | 0 | 1 | 2.0000000 | 50 | 1.0000000 | 1401-06-01 | 400 | 450.0000000 | 1.0000000 + 1 | 4 | 1 | 4 | 4.0000000 | 40 | 5.0000000 | 1401-06-01 | 800 | .0000000 | 2.0000000 + 1 | 4 | 1 | 4 | 4.0000000 | 40 | 4.0000000 | 1401-06-01 | 700 | .0000000 | 2.0000000 + 1100 | 2 | 2400 | 2 | 4.0000000 | 40 | 1.0000000 | 1401-01-01 | 100 | .0000000 | 1.0000000 + 1 | 3 | 0 | 3 | 4.0000000 | 40 | 1.0000000 | 1401-04-01 | 200 | .0000000 | 1.0000000 + 12 | 1 | 5 | 1 | 4.0000000 | 30 | 2.0000000 | 1401-06-01 | 500 | .0000000 | 1.0000000 + 1 | 1 | 0 | 1 | 4.0000000 | 30 | 1.0000000 | 1401-05-02 | 300 | .0000000 | 1.0000000 + 12 | 3 | 5 | 3 | 4.0000000 | 30 | 2.0000000 | 1401-06-01 | 500 | .0000000 | 1.0000000 + 12 | 3 | 5 | 3 | 4.0000000 | 30 | 3.0000000 | 1401-06-01 | 600 | .0000000 | 1.0000000 + 1 | 1 | 0 | 1 | 1.0000000 | 20 | 1.0000000 | 1401-05-01 | 100 | .0000000 | 1.0000000 + 1 | 1 | 0 | 1 | 1.0000000 | 10 | 1.0000000 | 1401-03-01 | 200 | .0000000 | 1.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn-ow_sale.cn),floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and 4 following ); -- mvd 1->4; + vn | qty | vn | to_char +----+------+----+------------------- + 50 | 1 | 50 | 2.0000000 + 50 | 1 | 50 | 2.0000000 + 40 | 1100 | 40 | 4.0000000 + 40 | 1 | 40 | 4.0000000 + 40 | 1 | 40 | 4.0000000 + 40 | 1 | 40 | 4.0000000 + 30 | 12 | 30 | 4.0000000 + 30 | 1 | 30 | 4.0000000 + 30 | 12 | 30 | 4.0000000 + 30 | 12 | 30 | 4.0000000 + 20 | 1 | 20 | 1.0000000 + 10 | 1 | 10 | 1.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn/ow_sale.pn)) OVER(order by ow_sale.cn desc range between current row and 4 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty/ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and 4 following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.prc order by ow_sale.vn desc), +win4 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc), +win5 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.vn asc); -- mvd 4->3; 4->5; 4->6; 8,1,9->7; 8,11,4,1,9->10; 4,1->12; + vn | vn | to_char | cn | to_char | to_char | to_char | prc | pn | to_char | dt | to_char +----+----+-------------------+----+-------------------+-------------------+-------------------+------+-----+-------------------+------------+------------------- + 40 | 40 | 12.0000000 | 4 | 11.0000000 | .0000000 | 1.0000000 | 1 | 800 | .0000000 | 1401-06-01 | 1.0000000 + 40 | 40 | 12.0000000 | 4 | 11.0000000 | .0000000 | 1.0000000 | 1 | 700 | .0000000 | 1401-06-01 | 1.0000000 + 30 | 30 | 10.0000000 | 3 | 8.0000000 | .0000000 | 1.0000000 | 5 | 500 | .0000000 | 1401-06-01 | 1.0000000 + 40 | 40 | 10.0000000 | 3 | 8.0000000 | .0000000 | 1.0000000 | 0 | 200 | .0000000 | 1401-04-01 | 1.0000000 + 30 | 30 | 10.0000000 | 3 | 8.0000000 | .0000000 | 1.0000000 | 5 | 600 | .0000000 | 1401-06-01 | 1.0000000 + 50 | 50 | 7.0000000 | 2 | 6.0000000 | .0000000 | 1.0000000 | 0 | 400 | .0000000 | 1401-06-01 | 1.0000000 + 40 | 40 | 7.0000000 | 2 | 6.0000000 | .0000000 | 1.0000000 | 2400 | 100 | .0000000 | 1401-01-01 | 1.0000000 + 10 | 10 | 5.0000000 | 1 | 1.0000000 | .0000000 | 1.0000000 | 0 | 200 | .0000000 | 1401-03-01 | 1.0000000 + 50 | 50 | 5.0000000 | 1 | 1.0000000 | .0000000 | 1.0000000 | 0 | 400 | .0000000 | 1401-06-01 | 1.0000000 + 30 | 30 | 5.0000000 | 1 | 1.0000000 | .0000000 | 1.0000000 | 5 | 500 | .0000000 | 1401-06-01 | 1.0000000 + 30 | 30 | 5.0000000 | 1 | 1.0000000 | .0000000 | 1.0000000 | 0 | 300 | .0000000 | 1401-05-02 | 1.0000000 + 20 | 20 | 5.0000000 | 1 | 1.0000000 | .0000000 | 1.0000000 | 0 | 100 | .0000000 | 1401-05-01 | 1.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and unbounded following ); -- mvd 4->3; + pn | pn | to_char | vn +-----+-----+-------------------+---- + 200 | 200 | 12.0000000 | 10 + 100 | 100 | 11.0000000 | 20 + 600 | 600 | 10.0000000 | 30 + 300 | 300 | 10.0000000 | 30 + 500 | 500 | 10.0000000 | 30 + 500 | 500 | 10.0000000 | 30 + 100 | 100 | 6.0000000 | 40 + 700 | 700 | 6.0000000 | 40 + 200 | 200 | 6.0000000 | 40 + 800 | 800 | 6.0000000 | 40 + 400 | 400 | 2.0000000 | 50 + 400 | 400 | 2.0000000 | 50 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and unbounded following ); -- mvd 3->2; 3->4; + pn | to_char | vn | to_char +-----+-------------------+----+------------------- + 400 | 12.0000000 | 50 | 12.0000000 + 400 | 12.0000000 | 50 | 12.0000000 + 100 | 10.0000000 | 40 | 10.0000000 + 700 | 10.0000000 | 40 | 10.0000000 + 200 | 10.0000000 | 40 | 10.0000000 + 800 | 10.0000000 | 40 | 10.0000000 + 600 | 6.0000000 | 30 | 6.0000000 + 300 | 6.0000000 | 30 | 6.0000000 + 500 | 6.0000000 | 30 | 6.0000000 + 500 | 6.0000000 | 30 | 6.0000000 + 100 | 2.0000000 | 20 | 2.0000000 + 200 | 1.0000000 | 10 | 1.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 1 following and 4 following ); -- mvd 4->7; + pn | pn | qty | vn | qty | vn | to_char +-----+-----+------+----+------+----+------------------- + 400 | 400 | 1 | 50 | 1 | 50 | .0000000 + 400 | 400 | 1 | 50 | 1 | 50 | .0000000 + 100 | 100 | 1100 | 40 | 1100 | 40 | .0000000 + 700 | 700 | 1 | 40 | 1 | 40 | .0000000 + 200 | 200 | 1 | 40 | 1 | 40 | .0000000 + 800 | 800 | 1 | 40 | 1 | 40 | .0000000 + 600 | 600 | 12 | 30 | 12 | 30 | .0000000 + 300 | 300 | 1 | 30 | 1 | 30 | .0000000 + 500 | 500 | 12 | 30 | 12 | 30 | .0000000 + 500 | 500 | 12 | 30 | 12 | 30 | .0000000 + 100 | 100 | 1 | 20 | 1 | 20 | .0000000 + 200 | 200 | 1 | 10 | 1 | 10 | .0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.pn asc rows unbounded preceding ); -- mvd 1,3->7; + cn | qty | pn | qty | vn | prc | to_char +----+------+-----+------+----+------+------------------- + 2 | 1100 | 100 | 1100 | 40 | 2400 | 1.0000000 + 1 | 1 | 200 | 1 | 10 | 0 | 2.0000000 + 3 | 1 | 200 | 1 | 40 | 0 | 3.0000000 + 1 | 1 | 100 | 1 | 20 | 0 | 4.0000000 + 1 | 1 | 300 | 1 | 30 | 0 | 5.0000000 + 1 | 1 | 400 | 1 | 50 | 0 | 6.0000000 + 2 | 1 | 400 | 1 | 50 | 0 | 7.0000000 + 1 | 12 | 500 | 12 | 30 | 5 | 8.0000000 + 3 | 12 | 500 | 12 | 30 | 5 | 9.0000000 + 3 | 12 | 600 | 12 | 30 | 5 | 10.0000000 + 4 | 1 | 700 | 1 | 40 | 1 | 11.0000000 + 4 | 1 | 800 | 1 | 40 | 1 | 12.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.pn desc rows unbounded preceding ), +win2 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.qty order by ow_sale.cn asc), +win3 as (order by ow_sale.vn asc), +win4 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc), +win5 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.cn asc); -- mvd 3->2; 5,1,6,7,3->4; 5,1,6,7,3->8; 10->9; 1,10,3->11; 1,6->12; + cn | to_char | pn | to_char | prc | dt | qty | to_char | to_char | vn | to_char | to_char +----+-------------------+-----+-------------------+------+------------+------+-------------------+-------------------+----+-------------------+------------------- + 1 | 2.0000000 | 200 | 1.0000000 | 0 | 1401-03-01 | 1 | 1.0000000 | .0833333 | 10 | 1.0000000 | 1.0000000 + 1 | 4.0000000 | 100 | 1.0000000 | 0 | 1401-05-01 | 1 | 1.0000000 | .1666667 | 20 | 1.0000000 | 1.0000000 + 3 | 9.0000000 | 500 | 2.0000000 | 5 | 1401-06-01 | 12 | 2.0000000 | .5000000 | 30 | 1.0000000 | 1.0000000 + 1 | 8.0000000 | 500 | 1.0000000 | 5 | 1401-06-01 | 12 | 1.0000000 | .5000000 | 30 | 1.0000000 | 1.0000000 + 1 | 5.0000000 | 300 | 1.0000000 | 0 | 1401-05-02 | 1 | 1.0000000 | .5000000 | 30 | 1.0000000 | 1.0000000 + 3 | 10.0000000 | 600 | 1.0000000 | 5 | 1401-06-01 | 12 | 1.0000000 | .5000000 | 30 | 1.0000000 | 1.0000000 + 2 | 1.0000000 | 100 | 1.0000000 | 2400 | 1401-01-01 | 1100 | 1.0000000 | .8333333 | 40 | 1.0000000 | 1.0000000 + 3 | 3.0000000 | 200 | 1.0000000 | 0 | 1401-04-01 | 1 | 1.0000000 | .8333333 | 40 | 1.0000000 | 1.0000000 + 4 | 11.0000000 | 700 | 1.0000000 | 1 | 1401-06-01 | 1 | 1.0000000 | .8333333 | 40 | 1.0000000 | 1.0000000 + 4 | 12.0000000 | 800 | 1.0000000 | 1 | 1401-06-01 | 1 | 1.0000000 | .8333333 | 40 | 1.0000000 | 1.0000000 + 2 | 7.0000000 | 400 | 2.0000000 | 0 | 1401-06-01 | 1 | 2.0000000 | 1.0000000 | 50 | 1.0000000 | 1.0000000 + 1 | 6.0000000 | 400 | 1.0000000 | 0 | 1401-06-01 | 1 | 1.0000000 | 1.0000000 | 50 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn*ow_sale.cn),floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows 7 preceding ); -- mvd 3->2; + vn | to_char | cn +----+-------------------+---- + 40 | 1.0000000 | 2 + 10 | 2.0000000 | 1 + 40 | 3.0000000 | 3 + 20 | 4.0000000 | 1 + 30 | 5.0000000 | 1 + 50 | 6.0000000 | 1 + 50 | 7.0000000 | 2 + 30 | 8.0000000 | 1 + 30 | 8.0000000 | 3 + 30 | 8.0000000 | 3 + 40 | 8.0000000 | 4 + 40 | 8.0000000 | 4 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.pn)) OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows 0 preceding ), +win2 as (order by ow_sale.pn desc); -- mvd 1->7; 1->8; 1->9; 1->10; 1->11; + pn | prc | pn | pn | pn | dt | to_char | to_char | to_char | to_char | to_char +-----+------+-----+-----+-----+------------+-------------------+-------------------+-------------------+-------------------+------------------- + 800 | 1 | 800 | 800 | 800 | 1401-06-01 | 1.0000000 | 1.0000000 | 840.0000000 | 1.0000000 | 1.0000000 + 700 | 1 | 700 | 700 | 700 | 1401-06-01 | 1.0000000 | 2.0000000 | 740.0000000 | 2.0000000 | 2.0000000 + 600 | 5 | 600 | 600 | 600 | 1401-06-01 | 1.0000000 | 3.0000000 | 630.0000000 | 3.0000000 | 3.0000000 + 500 | 5 | 500 | 500 | 500 | 1401-06-01 | 1.0000000 | 4.0000000 | 530.0000000 | 5.0000000 | 4.0000000 + 500 | 5 | 500 | 500 | 500 | 1401-06-01 | 1.0000000 | 4.0000000 | 530.0000000 | 5.0000000 | 4.0000000 + 400 | 0 | 400 | 400 | 400 | 1401-06-01 | 1.0000000 | 6.0000000 | 450.0000000 | 7.0000000 | 6.0000000 + 400 | 0 | 400 | 400 | 400 | 1401-06-01 | 1.0000000 | 6.0000000 | 450.0000000 | 7.0000000 | 6.0000000 + 300 | 0 | 300 | 300 | 300 | 1401-05-02 | 1.0000000 | 8.0000000 | 330.0000000 | 8.0000000 | 8.0000000 + 200 | 0 | 200 | 200 | 200 | 1401-04-01 | 1.0000000 | 9.0000000 | 210.0000000 | 10.0000000 | 9.0000000 + 200 | 0 | 200 | 200 | 200 | 1401-03-01 | 1.0000000 | 9.0000000 | 210.0000000 | 10.0000000 | 9.0000000 + 100 | 2400 | 100 | 100 | 100 | 1401-01-01 | 1.0000000 | 11.0000000 | 120.0000000 | 12.0000000 | 11.0000000 + 100 | 0 | 100 | 100 | 100 | 1401-05-01 | 1.0000000 | 11.0000000 | 120.0000000 | 12.0000000 | 11.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty+ow_sale.pn),floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows current row ); -- mvd 5,6->4; + pn | qty | qty | to_char | cn | vn +-----+------+------+-------------------+----+---- + 100 | 1100 | 1100 | 1.0000000 | 2 | 40 + 200 | 1 | 1 | 1.0000000 | 1 | 10 + 200 | 1 | 1 | 1.0000000 | 3 | 40 + 100 | 1 | 1 | 1.0000000 | 1 | 20 + 300 | 1 | 1 | 1.0000000 | 1 | 30 + 400 | 1 | 1 | 1.0000000 | 1 | 50 + 400 | 1 | 1 | 1.0000000 | 2 | 50 + 500 | 12 | 12 | 1.0000000 | 1 | 30 + 500 | 12 | 12 | 1.0000000 | 3 | 30 + 600 | 12 | 12 | 1.0000000 | 3 | 30 + 700 | 1 | 1 | 1.0000000 | 4 | 40 + 800 | 1 | 1 | 1.0000000 | 4 | 40 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.vn)) OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.cn desc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.cn desc rows current row ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 6,3->5; 6->7; 6->8; 6,3->9; 6->10; 6->11; + qty | dt | vn | prc | to_char | cn | to_char | to_char | to_char | to_char | to_char +------+------------+----+------+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | 1401-06-01 | 50 | 0 | 1.0000000 | 1 | 1.0000000 | 11.0000000 | 1.0000000 | 50.0000000 | 6.0000000 + 1 | 1401-03-01 | 10 | 0 | 1.0000000 | 1 | 2.0000000 | 11.0000000 | 1.0000000 | 40.0000000 | 2.0000000 + 12 | 1401-06-01 | 30 | 5 | 1.0000000 | 1 | 3.0000000 | 11.0000000 | 1.0000000 | 30.0000000 | 8.0000000 + 1 | 1401-05-01 | 20 | 0 | 1.0000000 | 1 | 4.0000000 | 11.0000000 | 1.0000000 | 30.0000000 | 4.0000000 + 1 | 1401-05-02 | 30 | 0 | 1.0000000 | 1 | 5.0000000 | 11.0000000 | 1.0000000 | 50.0000000 | 5.0000000 + 1100 | 1401-01-01 | 40 | 2400 | 1.0000000 | 2 | 6.0000000 | 11.0000000 | 2.0000000 | 40.0000000 | 1.0000000 + 1 | 1401-06-01 | 50 | 0 | 1.0000000 | 2 | 7.0000000 | 11.0000000 | 2.0000000 | 30.0000000 | 7.0000000 + 1 | 1401-04-01 | 40 | 0 | 1.0000000 | 3 | 8.0000000 | 11.0000000 | 3.0000000 | 50.0000000 | 3.0000000 + 12 | 1401-06-01 | 30 | 5 | 1.0000000 | 3 | 9.0000000 | 11.0000000 | 3.0000000 | 40.0000000 | 9.0000000 + 12 | 1401-06-01 | 30 | 5 | 1.0000000 | 3 | 10.0000000 | 11.0000000 | 3.0000000 | .0000000 | 10.0000000 + 1 | 1401-06-01 | 40 | 1 | 1.0000000 | 4 | 11.0000000 | 11.0000000 | 4.0000000 | .0000000 | 11.0000000 + 1 | 1401-06-01 | 40 | 1 | 1.0000000 | 4 | 12.0000000 | 11.0000000 | 4.0000000 | .0000000 | 12.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between unbounded preceding and 8 preceding ); -- mvd 5->4; + cn | qty | prc | to_char | vn +----+------+------+-------------------+---- + 2 | 1100 | 2400 | .0000000 | 40 + 1 | 1 | 0 | .0000000 | 10 + 3 | 1 | 0 | .0000000 | 40 + 1 | 1 | 0 | .0000000 | 20 + 1 | 1 | 0 | .0000000 | 30 + 1 | 1 | 0 | .0000000 | 50 + 2 | 1 | 0 | .0000000 | 50 + 1 | 12 | 5 | .0000000 | 30 + 3 | 12 | 5 | 1.0000000 | 30 + 3 | 12 | 5 | 2.0000000 | 30 + 4 | 1 | 1 | 3.0000000 | 40 + 4 | 1 | 1 | 4.0000000 | 40 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and 0 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and 0 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and 0 preceding ), +win2 as (order by ow_sale.vn asc), +win3 as (order by ow_sale.vn desc); -- mvd 4,5,6->3; 4,5,6->7; 5->8; 4,5,6->9; 5->10; + qty | qty | to_char | cn | vn | pn | to_char | to_char | to_char | to_char +------+------+-------------------+----+----+-----+-------------------+-------------------+-------------------+------------------- + 1 | 1 | 7.0000000 | 2 | 50 | 400 | .0000000 | 5.0000000 | 7.0000000 | 1.0000000 + 1 | 1 | 6.0000000 | 1 | 50 | 400 | .0000000 | 5.0000000 | 6.0000000 | 1.0000000 + 1100 | 1100 | 1.0000000 | 2 | 40 | 100 | .0000000 | 4.0000000 | 1.0000000 | 2.0000000 + 1 | 1 | 3.0000000 | 3 | 40 | 200 | .0000000 | 4.0000000 | 3.0000000 | 2.0000000 + 1 | 1 | 11.0000000 | 4 | 40 | 700 | .0000000 | 4.0000000 | 11.0000000 | 2.0000000 + 1 | 1 | 12.0000000 | 4 | 40 | 800 | .0000000 | 4.0000000 | 12.0000000 | 2.0000000 + 12 | 12 | 9.0000000 | 3 | 30 | 500 | .0000000 | 3.0000000 | 9.0000000 | 3.0000000 + 12 | 12 | 8.0000000 | 1 | 30 | 500 | .0000000 | 3.0000000 | 8.0000000 | 3.0000000 + 1 | 1 | 5.0000000 | 1 | 30 | 300 | .0000000 | 3.0000000 | 5.0000000 | 3.0000000 + 12 | 12 | 10.0000000 | 3 | 30 | 600 | .0000000 | 3.0000000 | 10.0000000 | 3.0000000 + 1 | 1 | 4.0000000 | 1 | 20 | 100 | .0000000 | 2.0000000 | 4.0000000 | 4.0000000 + 1 | 1 | 2.0000000 | 1 | 10 | 200 | .0000000 | 1.0000000 | 2.0000000 | 5.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn+ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.vn asc rows between unbounded preceding and current row ); -- mvd 4,5->3; + qty | dt | to_char | cn | vn +------+------------+-------------------+----+---- + 1100 | 1401-01-01 | 1.0000000 | 2 | 40 + 1 | 1401-03-01 | 2.0000000 | 1 | 10 + 1 | 1401-04-01 | 3.0000000 | 3 | 40 + 1 | 1401-05-01 | 4.0000000 | 1 | 20 + 1 | 1401-05-02 | 5.0000000 | 1 | 30 + 1 | 1401-06-01 | 6.0000000 | 1 | 50 + 1 | 1401-06-01 | 7.0000000 | 2 | 50 + 12 | 1401-06-01 | 8.0000000 | 1 | 30 + 12 | 1401-06-01 | 9.0000000 | 3 | 30 + 12 | 1401-06-01 | 10.0000000 | 3 | 30 + 1 | 1401-06-01 | 11.0000000 | 4 | 40 + 1 | 1401-06-01 | 12.0000000 | 4 | 40 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty*ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc,ow_sale.vn asc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.vn desc); -- mvd 8,9->7; 8,9->10; 8,9->11; 9->12; + qty | qty | pn | pn | prc | prc | to_char | cn | vn | to_char | to_char | to_char +------+------+-----+-----+------+------+-------------------+----+----+-------------------+-------------------+------------------- + 1 | 1 | 400 | 400 | 0 | 0 | 7.0000000 | 2 | 50 | 240000.0000000 | .0000000 | .0000000 + 1 | 1 | 400 | 400 | 0 | 0 | 6.0000000 | 1 | 50 | 240000.0000000 | .0000000 | .0000000 + 1 | 1 | 800 | 800 | 1 | 1 | 12.0000000 | 4 | 40 | 240000.0000000 | .0000000 | .1818182 + 1 | 1 | 200 | 200 | 0 | 0 | 3.0000000 | 3 | 40 | 240000.0000000 | .0000000 | .1818182 + 1 | 1 | 700 | 700 | 1 | 1 | 11.0000000 | 4 | 40 | 240000.0000000 | .0000000 | .1818182 + 1100 | 1100 | 100 | 100 | 2400 | 2400 | 1.0000000 | 2 | 40 | 240000.0000000 | 2400.0000000 | .1818182 + 12 | 12 | 500 | 500 | 5 | 5 | 8.0000000 | 1 | 30 | 240000.0000000 | .0000000 | .5454545 + 12 | 12 | 500 | 500 | 5 | 5 | 9.0000000 | 3 | 30 | 240000.0000000 | .0000000 | .5454545 + 12 | 12 | 600 | 600 | 5 | 5 | 10.0000000 | 3 | 30 | 240000.0000000 | .0000000 | .5454545 + 1 | 1 | 300 | 300 | 0 | 0 | 5.0000000 | 1 | 30 | 240000.0000000 | .0000000 | .5454545 + 1 | 1 | 100 | 100 | 0 | 0 | 4.0000000 | 1 | 20 | 240000.0000000 | .0000000 | .9090909 + 1 | 1 | 200 | 200 | 0 | 0 | 2.0000000 | 1 | 10 | 240000.0000000 | .0000000 | 1.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty*ow_sale.vn),floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and floor(ow_sale.qty/ow_sale.qty) following ); -- mvd 2->5; + qty | pn | prc | cn | to_char +------+-----+------+----+------------------- + 1100 | 100 | 2400 | 2 | 2.0000000 + 1 | 200 | 0 | 1 | 3.0000000 + 1 | 200 | 0 | 3 | 4.0000000 + 1 | 100 | 0 | 1 | 5.0000000 + 1 | 300 | 0 | 1 | 6.0000000 + 1 | 400 | 0 | 1 | 7.0000000 + 1 | 400 | 0 | 2 | 8.0000000 + 12 | 500 | 5 | 1 | 9.0000000 + 12 | 500 | 5 | 3 | 10.0000000 + 12 | 600 | 5 | 3 | 11.0000000 + 1 | 700 | 1 | 4 | 12.0000000 + 1 | 800 | 1 | 4 | 12.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty),floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.vn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc,ow_sale.cn asc rows between unbounded preceding and 1 following ), +win2 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.pn asc); -- mvd 3,4->2; 3,4->5; 3,4->6; 4,1->7; 3,4->8; + pn | to_char | cn | vn | to_char | to_char | to_char | to_char +-----+-------------------+----+----+-------------------+-------------------+-------------------+------------------- + 100 | 2.0000000 | 2 | 40 | .0000000 | .2500000 | 1.0000000 | 100.0000000 + 200 | 3.0000000 | 1 | 10 | .0000000 | 1.0000000 | 1.0000000 | 200.0000000 + 200 | 4.0000000 | 3 | 40 | .0000000 | .5000000 | 1.0000000 | 200.0000000 + 100 | 5.0000000 | 1 | 20 | .0000000 | 1.0000000 | 1.0000000 | 100.0000000 + 300 | 6.0000000 | 1 | 30 | .0000000 | .2500000 | 1.0000000 | 300.0000000 + 400 | 7.0000000 | 1 | 50 | .0000000 | .5000000 | 1.0000000 | 400.0000000 + 400 | 8.0000000 | 2 | 50 | .0000000 | 1.0000000 | 1.0000000 | 400.0000000 + 500 | 9.0000000 | 1 | 30 | .0000000 | .5000000 | 1.0000000 | 500.0000000 + 500 | 10.0000000 | 3 | 30 | .0000000 | .7500000 | 1.0000000 | 500.0000000 + 600 | 11.0000000 | 3 | 30 | .0000000 | 1.0000000 | 1.0000000 | 600.0000000 + 700 | 12.0000000 | 4 | 40 | .0000000 | .7500000 | 1.0000000 | 700.0000000 + 800 | 12.0000000 | 4 | 40 | .0000000 | 1.0000000 | 1.0000000 | 800.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn*ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc,ow_sale.vn asc rows between unbounded preceding and unbounded following ); -- mvd 1->2; + vn | to_char +----+------------------- + 40 | 12.0000000 + 10 | 12.0000000 + 40 | 12.0000000 + 20 | 12.0000000 + 30 | 12.0000000 + 50 | 12.0000000 + 50 | 12.0000000 + 30 | 12.0000000 + 30 | 12.0000000 + 30 | 12.0000000 + 40 | 12.0000000 + 40 | 12.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.cn order by ow_sale.cn desc), +win4 as (order by ow_sale.cn asc); -- mvd 3->2; 5,1,6,7,3->4; 5,6,3->8; 6->9; 3->10; 5,1,6,7,3->11; + dt | to_char | pn | to_char | prc | cn | vn | to_char | to_char | to_char | to_char +------------+-------------------+-----+-------------------+------+----+----+-------------------+-------------------+-------------------+------------------- + 1401-06-01 | 12.0000000 | 400 | .0000000 | 0 | 1 | 50 | 1.0000000 | 1.0000000 | -9.0000000 | 1.0000000 + 1401-03-01 | 12.0000000 | 200 | .0000000 | 0 | 1 | 10 | 1.0000000 | 1.0000000 | -9.0000000 | 1.0000000 + 1401-06-01 | 12.0000000 | 500 | .0000000 | 5 | 1 | 30 | 1.0000000 | 1.0000000 | -9.0000000 | 1.0000000 + 1401-05-01 | 12.0000000 | 100 | .0000000 | 0 | 1 | 20 | 1.0000000 | 1.0000000 | -9.0000000 | 1.0000000 + 1401-05-02 | 12.0000000 | 300 | .0000000 | 0 | 1 | 30 | 1.0000000 | 1.0000000 | -9.0000000 | 1.0000000 + 1401-01-01 | 12.0000000 | 100 | .0000000 | 2400 | 2 | 40 | 1.0000000 | 6.0000000 | -9.0000000 | 1.0000000 + 1401-06-01 | 12.0000000 | 400 | .0000000 | 0 | 2 | 50 | 1.0000000 | 6.0000000 | -9.0000000 | 1.0000000 + 1401-04-01 | 12.0000000 | 200 | .0000000 | 0 | 3 | 40 | 1.0000000 | 8.0000000 | -9.0000000 | 1.0000000 + 1401-06-01 | 12.0000000 | 500 | .0000000 | 5 | 3 | 30 | 1.0000000 | 8.0000000 | -9.0000000 | 1.0000000 + 1401-06-01 | 12.0000000 | 600 | .0000000 | 5 | 3 | 30 | 1.0000000 | 8.0000000 | -9.0000000 | 1.0000000 + 1401-06-01 | 12.0000000 | 700 | .0000000 | 1 | 4 | 40 | 1.0000000 | 11.0000000 | -9.0000000 | 1.0000000 + 1401-06-01 | 12.0000000 | 800 | .0000000 | 1 | 4 | 40 | 1.0000000 | 11.0000000 | -9.0000000 | 1.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between 8 preceding and floor(ow_sale.prc/ow_sale.cn) preceding ); -- mvd 5->4; + dt | vn | prc | to_char | pn +------------+----+------+-------------------+----- + 1401-01-01 | 40 | 2400 | .0000000 | 100 + 1401-03-01 | 10 | 0 | 2.0000000 | 200 + 1401-04-01 | 40 | 0 | 3.0000000 | 200 + 1401-05-01 | 20 | 0 | 4.0000000 | 100 + 1401-05-02 | 30 | 0 | 5.0000000 | 300 + 1401-06-01 | 50 | 0 | 6.0000000 | 400 + 1401-06-01 | 50 | 0 | 7.0000000 | 400 + 1401-06-01 | 30 | 5 | 3.0000000 | 500 + 1401-06-01 | 30 | 5 | 8.0000000 | 500 + 1401-06-01 | 30 | 5 | 8.0000000 | 600 + 1401-06-01 | 40 | 1 | 9.0000000 | 700 + 1401-06-01 | 40 | 1 | 9.0000000 | 800 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty-ow_sale.qty),floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc/ow_sale.cn)) OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between 4 preceding and floor(ow_sale.vn) preceding ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.pn asc); -- mvd 1->7; 2->8; 2->9; 11->10; 2->12; 1->13; + vn | cn | dt | vn | vn | cn | to_char | to_char | to_char | to_char | pn | to_char | to_char +----+----+------------+----+----+----+-------------------+-------------------+-------------------+-------------------+-----+-------------------+------------------- + 40 | 2 | 1401-01-01 | 40 | 40 | 2 | .0000000 | .4545455 | .4545455 | 1.0000000 | 100 | 1200.0000000 | .0000000 + 20 | 1 | 1401-05-01 | 20 | 20 | 1 | .0000000 | .6363636 | .6363636 | 2.0000000 | 100 | 1200.0000000 | .0000000 + 10 | 1 | 1401-03-01 | 10 | 10 | 1 | .0000000 | .6363636 | .6363636 | 3.0000000 | 200 | 1200.0000000 | .0000000 + 40 | 3 | 1401-04-01 | 40 | 40 | 3 | .0000000 | .1818182 | .1818182 | 4.0000000 | 200 | 1.0000000 | .0000000 + 30 | 1 | 1401-05-02 | 30 | 30 | 1 | .0000000 | .6363636 | .6363636 | 5.0000000 | 300 | 1200.0000000 | .0000000 + 50 | 2 | 1401-06-01 | 50 | 50 | 2 | .0000000 | .4545455 | .4545455 | 6.0000000 | 400 | 1200.0000000 | .0000000 + 50 | 1 | 1401-06-01 | 50 | 50 | 1 | .0000000 | .6363636 | .6363636 | 7.0000000 | 400 | 1200.0000000 | .0000000 + 30 | 3 | 1401-06-01 | 30 | 30 | 3 | .0000000 | .1818182 | .1818182 | 8.0000000 | 500 | 1.0000000 | .0000000 + 30 | 1 | 1401-06-01 | 30 | 30 | 1 | .0000000 | .6363636 | .6363636 | 9.0000000 | 500 | 1200.0000000 | .0000000 + 30 | 3 | 1401-06-01 | 30 | 30 | 3 | .0000000 | .1818182 | .1818182 | 10.0000000 | 600 | 1.0000000 | .0000000 + 40 | 4 | 1401-06-01 | 40 | 40 | 4 | .0000000 | .0000000 | .0000000 | 11.0000000 | 700 | .0000000 | .0000000 + 40 | 4 | 1401-06-01 | 40 | 40 | 4 | .0000000 | .0000000 | .0000000 | 12.0000000 | 800 | .0000000 | .0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows between floor(ow_sale.vn) preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 1,4->3; 1,4->5; 1->6; + cn | vn | to_char | pn | to_char | to_char +----+----+-------------------+-----+-------------------+------------------- + 2 | 40 | 1.0000000 | 100 | 96000.0000000 | .0000000 + 1 | 10 | 2.0000000 | 200 | 96000.0000000 | 1.0000000 + 3 | 40 | 3.0000000 | 200 | 96000.0000000 | .0000000 + 1 | 20 | 4.0000000 | 100 | 96000.0000000 | .0000000 + 1 | 30 | 5.0000000 | 300 | 96000.0000000 | .0000000 + 1 | 50 | 6.0000000 | 400 | 96000.0000000 | .0000000 + 2 | 50 | 7.0000000 | 400 | 96000.0000000 | .0000000 + 1 | 30 | 8.0000000 | 500 | 96000.0000000 | .0000000 + 3 | 30 | 9.0000000 | 500 | 96000.0000000 | .0000000 + 3 | 30 | 10.0000000 | 600 | 96000.0000000 | .0000000 + 4 | 40 | 11.0000000 | 700 | 96000.0000000 | .0000000 + 4 | 40 | 12.0000000 | 800 | 96000.0000000 | .0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn/ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between 7 preceding and floor(ow_sale.qty) following ); -- mvd 5->4; + prc | qty | qty | to_char | cn +------+------+------+-------------------+---- + 2400 | 1100 | 1100 | 12.0000000 | 2 + 0 | 1 | 1 | 3.0000000 | 1 + 0 | 1 | 1 | 4.0000000 | 3 + 0 | 1 | 1 | 5.0000000 | 1 + 0 | 1 | 1 | 6.0000000 | 1 + 0 | 1 | 1 | 7.0000000 | 1 + 0 | 1 | 1 | 8.0000000 | 2 + 5 | 12 | 12 | 12.0000000 | 1 + 5 | 12 | 12 | 11.0000000 | 3 + 5 | 12 | 12 | 10.0000000 | 3 + 1 | 1 | 1 | 9.0000000 | 4 + 1 | 1 | 1 | 8.0000000 | 4 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty/ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between 3 preceding and floor(ow_sale.cn) following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.vn desc); -- mvd 1->2; 1->3; 1->4; 1->5; 1->6; + vn | to_char | to_char | to_char | to_char | to_char +----+-------------------+-------------------+-------------------+-------------------+------------------- + 50 | 6.0000000 | 2.0000000 | 7.0000000 | 1.0000000 | 1.0000000 + 50 | 5.0000000 | 1.0000000 | 6.0000000 | 2.0000000 | 1.0000000 + 40 | 4.0000000 | 4.0000000 | 12.0000000 | 3.0000000 | 2.0000000 + 40 | 6.0000000 | 3.0000000 | 3.0000000 | 4.0000000 | 2.0000000 + 40 | 5.0000000 | 4.0000000 | 11.0000000 | 5.0000000 | 2.0000000 + 40 | 3.0000000 | .0000000 | 1.0000000 | 6.0000000 | 2.0000000 + 30 | 5.0000000 | 1.0000000 | 8.0000000 | 7.0000000 | 3.0000000 + 30 | 7.0000000 | 3.0000000 | 9.0000000 | 8.0000000 | 3.0000000 + 30 | 6.0000000 | 3.0000000 | 10.0000000 | 9.0000000 | 3.0000000 + 30 | 5.0000000 | 1.0000000 | 5.0000000 | 10.0000000 | 3.0000000 + 20 | 5.0000000 | 1.0000000 | 4.0000000 | 11.0000000 | 4.0000000 + 10 | 3.0000000 | 1.0000000 | 2.0000000 | 12.0000000 | 5.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn+ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.vn asc rows between 1 preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.pn asc); -- mvd 7,1,8->6; 7,8->9; + vn | qty | vn | qty | qty | to_char | cn | pn | to_char +----+------+----+------+------+-------------------+----+-----+------------------- + 40 | 1100 | 40 | 1100 | 1100 | 12.0000000 | 2 | 100 | 1.0000000 + 10 | 1 | 10 | 1 | 1 | 12.0000000 | 1 | 200 | 1.0000000 + 40 | 1 | 40 | 1 | 1 | 11.0000000 | 3 | 200 | 1.0000000 + 20 | 1 | 20 | 1 | 1 | 10.0000000 | 1 | 100 | 1.0000000 + 30 | 1 | 30 | 1 | 1 | 9.0000000 | 1 | 300 | 1.0000000 + 50 | 1 | 50 | 1 | 1 | 8.0000000 | 1 | 400 | 1.0000000 + 50 | 1 | 50 | 1 | 1 | 7.0000000 | 2 | 400 | 1.0000000 + 30 | 12 | 30 | 12 | 12 | 6.0000000 | 1 | 500 | 1.0000000 + 30 | 12 | 30 | 12 | 12 | 5.0000000 | 3 | 500 | 1.0000000 + 30 | 12 | 30 | 12 | 12 | 4.0000000 | 3 | 600 | 1.0000000 + 40 | 1 | 40 | 1 | 1 | 3.0000000 | 4 | 700 | 1.0000000 + 40 | 1 | 40 | 1 | 1 | 2.0000000 | 4 | 800 | 1.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between current row and current row ); -- mvd 8,2->7; + qty | vn | prc | vn | pn | vn | to_char | cn +------+----+------+----+-----+----+-------------------+---- + 1100 | 40 | 2400 | 40 | 100 | 40 | 1.0000000 | 2 + 1 | 10 | 0 | 10 | 200 | 10 | 1.0000000 | 1 + 1 | 40 | 0 | 40 | 200 | 40 | 1.0000000 | 3 + 1 | 20 | 0 | 20 | 100 | 20 | 1.0000000 | 1 + 1 | 30 | 0 | 30 | 300 | 30 | 1.0000000 | 1 + 1 | 50 | 0 | 50 | 400 | 50 | 1.0000000 | 1 + 1 | 50 | 0 | 50 | 400 | 50 | 1.0000000 | 2 + 12 | 30 | 5 | 30 | 500 | 30 | 1.0000000 | 1 + 12 | 30 | 5 | 30 | 500 | 30 | 1.0000000 | 3 + 12 | 30 | 5 | 30 | 600 | 30 | 1.0000000 | 3 + 1 | 40 | 1 | 40 | 700 | 40 | 1.0000000 | 4 + 1 | 40 | 1 | 40 | 800 | 40 | 1.0000000 | 4 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn+ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty*ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows between current row and current row ), +win2 as (order by ow_sale.pn desc); -- mvd 6,3->5; 6,3->7; 3->8; + prc | qty | pn | cn | to_char | vn | to_char | to_char +------+------+-----+----+-------------------+----+-------------------+------------------- + 1 | 1 | 800 | 4 | 1.0000000 | 40 | 40.0000000 | .0000000 + 1 | 1 | 700 | 4 | 1.0000000 | 40 | 40.0000000 | .0909091 + 5 | 12 | 600 | 3 | 1.0000000 | 30 | 360.0000000 | .1818182 + 5 | 12 | 500 | 1 | 1.0000000 | 30 | 360.0000000 | .2727273 + 5 | 12 | 500 | 3 | 1.0000000 | 30 | 360.0000000 | .2727273 + 0 | 1 | 400 | 2 | 1.0000000 | 50 | 50.0000000 | .4545455 + 0 | 1 | 400 | 1 | 1.0000000 | 50 | 50.0000000 | .4545455 + 0 | 1 | 300 | 1 | 1.0000000 | 30 | 30.0000000 | .6363636 + 0 | 1 | 200 | 3 | 1.0000000 | 40 | 40.0000000 | .7272727 + 0 | 1 | 200 | 1 | 1.0000000 | 10 | 10.0000000 | .7272727 + 2400 | 1100 | 100 | 2 | 1.0000000 | 40 | 44000.0000000 | .9090909 + 0 | 1 | 100 | 1 | 1.0000000 | 20 | 20.0000000 | .9090909 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.vn desc rows between current row and 1 following ), +win2 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.vn asc), +win3 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.pn desc); -- mvd 3,4,5->2; 7,4,5->6; 9,5->8; + qty | to_char | cn | vn | pn | to_char | prc | to_char | dt +------+-------------------+----+----+-----+-------------------+------+-------------------+------------ + 1100 | 2.0000000 | 2 | 40 | 100 | 1.0000000 | 2400 | .0000000 | 1401-01-01 + 1 | 2.0000000 | 1 | 10 | 200 | .5000000 | 0 | .0000000 | 1401-03-01 + 1 | 2.0000000 | 3 | 40 | 200 | 1.0000000 | 0 | .0000000 | 1401-04-01 + 1 | 2.0000000 | 1 | 20 | 100 | 1.0000000 | 0 | .0000000 | 1401-05-01 + 1 | 2.0000000 | 1 | 30 | 300 | 1.0000000 | 0 | .0000000 | 1401-05-02 + 1 | 2.0000000 | 1 | 50 | 400 | 1.0000000 | 0 | .0000000 | 1401-06-01 + 1 | 2.0000000 | 2 | 50 | 400 | 1.0000000 | 0 | .0000000 | 1401-06-01 + 12 | 2.0000000 | 1 | 30 | 500 | 1.0000000 | 5 | .0000000 | 1401-06-01 + 12 | 2.0000000 | 3 | 30 | 500 | 1.0000000 | 5 | .0000000 | 1401-06-01 + 12 | 2.0000000 | 3 | 30 | 600 | 1.0000000 | 5 | .0000000 | 1401-06-01 + 1 | 2.0000000 | 4 | 40 | 700 | 1.0000000 | 1 | .0000000 | 1401-06-01 + 1 | 1.0000000 | 4 | 40 | 800 | 1.0000000 | 1 | .0000000 | 1401-06-01 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc rows between current row and unbounded following ); -- mvd 3,1->5; + pn | cn | vn | qty | to_char +-----+----+----+------+------------------- + 100 | 2 | 40 | 1100 | 12.0000000 + 200 | 1 | 10 | 1 | 11.0000000 + 200 | 3 | 40 | 1 | 10.0000000 + 100 | 1 | 20 | 1 | 9.0000000 + 300 | 1 | 30 | 1 | 8.0000000 + 400 | 1 | 50 | 1 | 7.0000000 + 400 | 2 | 50 | 1 | 6.0000000 + 500 | 1 | 30 | 12 | 5.0000000 + 500 | 3 | 30 | 12 | 4.0000000 + 600 | 3 | 30 | 12 | 3.0000000 + 700 | 4 | 40 | 1 | 2.0000000 + 800 | 4 | 40 | 1 | 1.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn-ow_sale.vn),floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between current row and unbounded following ); -- mvd 3->2; 3->4; + vn | to_char | cn | to_char +----+-------------------+----+------------------- + 40 | 12.0000000 | 2 | -1060.0000000 + 10 | 11.0000000 | 1 | 9.0000000 + 40 | 10.0000000 | 3 | 18.0000000 + 20 | 9.0000000 | 1 | 18.0000000 + 30 | 8.0000000 | 1 | 18.0000000 + 50 | 7.0000000 | 1 | 18.0000000 + 50 | 6.0000000 | 2 | 18.0000000 + 30 | 5.0000000 | 1 | 18.0000000 + 30 | 4.0000000 | 3 | 18.0000000 + 30 | 3.0000000 | 3 | 18.0000000 + 40 | 2.0000000 | 4 | 39.0000000 + 40 | 1.0000000 | 4 | 39.0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc,ow_sale.pn asc rows between floor(ow_sale.pn*ow_sale.qty) following and 8 following ); -- mvd 6,2->5; + prc | pn | vn | vn | to_char | cn +------+-----+----+----+-------------------+---- + 2400 | 100 | 40 | 40 | .0000000 | 2 + 0 | 200 | 10 | 10 | .0000000 | 1 + 0 | 200 | 40 | 40 | .0000000 | 3 + 0 | 100 | 20 | 20 | .0000000 | 1 + 0 | 300 | 30 | 30 | .0000000 | 1 + 0 | 400 | 50 | 50 | .0000000 | 1 + 0 | 400 | 50 | 50 | .0000000 | 2 + 5 | 500 | 30 | 30 | .0000000 | 1 + 5 | 500 | 30 | 30 | .0000000 | 3 + 5 | 600 | 30 | 30 | .0000000 | 3 + 1 | 700 | 40 | 40 | .0000000 | 4 + 1 | 800 | 40 | 40 | .0000000 | 4 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty-ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.vn) as int),cast (floor(ow_sale.pn*ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.cn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.vn desc rows between floor(ow_sale.qty) following and 2 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.vn desc rows between floor(ow_sale.qty) following and 2 following ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.cn order by ow_sale.pn desc), +win3 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 4,5->3; 7,1,8,5->6; 7,2,1,4->9; 4->10; 7,1,8,5->11; 4,5->12; + cn | dt | to_char | vn | pn | to_char | prc | qty | to_char | to_char | to_char | to_char +----+------------+-------------------+----+-----+-------------------+------+------+-------------------+-------------------+-------------------+------------------- + 2 | 1401-01-01 | .0000000 | 40 | 100 | .0000000 | 2400 | 1100 | .0000000 | .0000000 | 1.0000000 | .0000000 + 1 | 1401-03-01 | 2.0000000 | 10 | 200 | .0000000 | 0 | 1 | .0000000 | -9.0000000 | 1.0000000 | 1.0000000 + 3 | 1401-04-01 | 2.0000000 | 40 | 200 | .0000000 | 0 | 1 | .0000000 | -37.0000000 | 1.0000000 | 1.0000000 + 1 | 1401-05-01 | 2.0000000 | 20 | 100 | .0000000 | 0 | 1 | .0000000 | -19.0000000 | 1.0000000 | 1.0000000 + 1 | 1401-05-02 | 2.0000000 | 30 | 300 | .0000000 | 0 | 1 | .0000000 | -29.0000000 | 1.0000000 | 1.0000000 + 1 | 1401-06-01 | 2.0000000 | 50 | 400 | .0000000 | 0 | 1 | .0000000 | -49.0000000 | 1.0000000 | 1.0000000 + 2 | 1401-06-01 | 2.0000000 | 50 | 400 | .0000000 | 0 | 1 | .0000000 | -48.0000000 | 1.0000000 | 12.0000000 + 1 | 1401-06-01 | .0000000 | 30 | 500 | .0000000 | 5 | 12 | .0000000 | .0000000 | 1.0000000 | .0000000 + 3 | 1401-06-01 | .0000000 | 30 | 500 | .0000000 | 5 | 12 | .0000000 | .0000000 | 1.0000000 | .0000000 + 3 | 1401-06-01 | .0000000 | 30 | 600 | .0000000 | 5 | 12 | .0000000 | .0000000 | 1.0000000 | .0000000 + 4 | 1401-06-01 | 1.0000000 | 40 | 700 | .0000000 | 1 | 1 | .0000000 | .0000000 | 1.0000000 | 1.0000000 + 4 | 1401-06-01 | .0000000 | 40 | 800 | .0000000 | 1 | 1 | .0000000 | .0000000 | 1.0000000 | .0000000 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc rows between floor(ow_sale.pn) following and unbounded following ); -- mvd 3,4->2; + cn | to_char | vn | pn +----+-------------------+----+----- + 2 | .0000000 | 40 | 100 + 1 | .0000000 | 10 | 200 + 3 | .0000000 | 40 | 200 + 1 | .0000000 | 20 | 100 + 1 | .0000000 | 30 | 300 + 1 | .0000000 | 50 | 400 + 2 | .0000000 | 50 | 400 + 1 | .0000000 | 30 | 500 + 3 | .0000000 | 30 | 500 + 3 | .0000000 | 30 | 600 + 4 | .0000000 | 40 | 700 + 4 | .0000000 | 40 | 800 +(12 rows) + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.cn) following and unbounded following ), +win2 as (partition by ow_sale.vn order by ow_sale.pn desc); -- mvd 4->5; 4->6; 8,4->7; + cn | dt | qty | pn | to_char | to_char | to_char | vn +----+------------+------+-----+-------------------+-------------------+-------------------+---- + 2 | 1401-01-01 | 1100 | 100 | 10.0000000 | 4.0000000 | 1.0000000 | 40 + 1 | 1401-03-01 | 1 | 200 | 10.0000000 | 4.0000000 | 1.0000000 | 10 + 3 | 1401-04-01 | 1 | 200 | 7.0000000 | 4.0000000 | .7500000 | 40 + 1 | 1401-05-01 | 1 | 100 | 8.0000000 | 4.0000000 | 1.0000000 | 20 + 1 | 1401-05-02 | 1 | 300 | 7.0000000 | 4.0000000 | 1.0000000 | 30 + 1 | 1401-06-01 | 1 | 400 | 6.0000000 | 4.0000000 | 1.0000000 | 50 + 2 | 1401-06-01 | 1 | 400 | 4.0000000 | 4.0000000 | 1.0000000 | 50 + 1 | 1401-06-01 | 12 | 500 | 4.0000000 | 4.0000000 | .7500000 | 30 + 3 | 1401-06-01 | 12 | 500 | 1.0000000 | 4.0000000 | .7500000 | 30 + 3 | 1401-06-01 | 12 | 600 | .0000000 | .0000000 | .2500000 | 30 + 4 | 1401-06-01 | 1 | 700 | .0000000 | .0000000 | .5000000 | 40 + 4 | 1401-06-01 | 1 | 800 | .0000000 | .0000000 | .2500000 | 40 +(12 rows) + +-- REGR_COUNT() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn*ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.vn desc); -- mvd 1,3,4,5->2; + dt | to_char | cn | vn | pn +------------+-------------------+----+----+----- + 1401-05-02 | 1.0000000 | 1 | 30 | 300 + 1401-06-01 | 1.0000000 | 1 | 30 | 500 + 1401-06-01 | 1.0000000 | 3 | 30 | 500 + 1401-01-01 | 1.0000000 | 2 | 40 | 100 + 1401-06-01 | 1.0000000 | 4 | 40 | 700 + 1401-06-01 | 1.0000000 | 1 | 50 | 400 + 1401-03-01 | 1.0000000 | 1 | 10 | 200 + 1401-05-01 | 1.0000000 | 1 | 20 | 100 + 1401-06-01 | 1.0000000 | 3 | 30 | 600 + 1401-04-01 | 1.0000000 | 3 | 40 | 200 + 1401-06-01 | 1.0000000 | 4 | 40 | 800 + 1401-06-01 | 1.0000000 | 2 | 50 | 400 +(12 rows) + +-- REGR_COUNT() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn+ow_sale.cn),floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc*ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.cn desc,ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.cn desc,ow_sale.cn asc); -- mvd 4,5,7,3->6; 4,5,7,3->8; + qty | pn | vn | prc | cn | to_char | dt | to_char +------+-----+----+------+----+-------------------+------------+------------------- + 1 | 200 | 10 | 0 | 1 | 1.0000000 | 1401-03-01 | 1.0000000 + 1 | 300 | 30 | 0 | 1 | 1.0000000 | 1401-05-02 | 1.0000000 + 12 | 600 | 30 | 5 | 3 | 2.0000000 | 1401-06-01 | 2.0000000 + 12 | 500 | 30 | 5 | 3 | 2.0000000 | 1401-06-01 | 2.0000000 + 12 | 500 | 30 | 5 | 1 | 3.0000000 | 1401-06-01 | 3.0000000 + 1 | 400 | 50 | 0 | 2 | 1.0000000 | 1401-06-01 | 1.0000000 + 1 | 400 | 50 | 0 | 1 | 2.0000000 | 1401-06-01 | 2.0000000 + 1100 | 100 | 40 | 2400 | 2 | 1.0000000 | 1401-01-01 | 1.0000000 + 1 | 200 | 40 | 0 | 3 | 1.0000000 | 1401-04-01 | 1.0000000 + 1 | 100 | 20 | 0 | 1 | 1.0000000 | 1401-05-01 | 1.0000000 + 1 | 800 | 40 | 1 | 4 | 2.0000000 | 1401-06-01 | 2.0000000 + 1 | 700 | 40 | 1 | 4 | 2.0000000 | 1401-06-01 | 2.0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.pn asc range unbounded preceding ); -- mvd 1,6,3->5; + cn | dt | pn | qty | to_char | vn +----+------------+-----+------+-------------------+---- + 1 | 1401-03-01 | 200 | 1 | 1.0000000 | 10 + 1 | 1401-05-01 | 100 | 1 | 1.0000000 | 20 + 1 | 1401-05-02 | 300 | 1 | 1.0000000 | 30 + 1 | 1401-06-01 | 500 | 12 | 2.0000000 | 30 + 1 | 1401-06-01 | 400 | 1 | 1.0000000 | 50 + 3 | 1401-06-01 | 500 | 12 | 1.0000000 | 30 + 3 | 1401-06-01 | 600 | 12 | 2.0000000 | 30 + 3 | 1401-04-01 | 200 | 1 | 1.0000000 | 40 + 2 | 1401-01-01 | 100 | 1100 | 1.0000000 | 40 + 2 | 1401-06-01 | 400 | 1 | 1.0000000 | 50 + 4 | 1401-06-01 | 700 | 1 | 1.0000000 | 40 + 4 | 1401-06-01 | 800 | 1 | 2.0000000 | 40 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn+ow_sale.qty),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.vn desc range unbounded preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.cn order by ow_sale.vn asc); -- mvd 1,6,2->7; 6->8; 10,1,6,2->9; + cn | pn | cn | pn | qty | vn | to_char | to_char | to_char | prc +----+-----+----+-----+------+----+-------------------+-------------------+-------------------+------ + 2 | 400 | 2 | 400 | 1 | 50 | 1.0000000 | .1666667 | 1.0000000 | 0 + 1 | 400 | 1 | 400 | 1 | 50 | 1.0000000 | .1666667 | 1.0000000 | 0 + 2 | 100 | 2 | 100 | 1100 | 40 | 1.0000000 | .5000000 | 1.0000000 | 2400 + 4 | 700 | 4 | 700 | 1 | 40 | 1.0000000 | .5000000 | 1.0000000 | 1 + 3 | 200 | 3 | 200 | 1 | 40 | 1.0000000 | .5000000 | 1.0000000 | 0 + 4 | 800 | 4 | 800 | 1 | 40 | 1.0000000 | .5000000 | 1.0000000 | 1 + 3 | 600 | 3 | 600 | 12 | 30 | 1.0000000 | .8333333 | 1.0000000 | 5 + 1 | 300 | 1 | 300 | 1 | 30 | 1.0000000 | .8333333 | 1.0000000 | 0 + 1 | 500 | 1 | 500 | 12 | 30 | 1.0000000 | .8333333 | 1.0000000 | 5 + 3 | 500 | 3 | 500 | 12 | 30 | 1.0000000 | .8333333 | 1.0000000 | 5 + 1 | 100 | 1 | 100 | 1 | 20 | 1.0000000 | .9166667 | 1.0000000 | 0 + 1 | 200 | 1 | 200 | 1 | 10 | 1.0000000 | 1.0000000 | 1.0000000 | 0 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.cn order by ow_sale.cn desc range 4 preceding ); -- mvd 2,3->5; + vn | cn | dt | qty | to_char +----+----+------------+------+------------------- + 40 | 2 | 1401-01-01 | 1100 | 1.0000000 + 10 | 1 | 1401-03-01 | 1 | 1.0000000 + 30 | 1 | 1401-05-02 | 1 | 1.0000000 + 30 | 1 | 1401-06-01 | 12 | 2.0000000 + 50 | 1 | 1401-06-01 | 1 | 2.0000000 + 30 | 3 | 1401-06-01 | 12 | 2.0000000 + 30 | 3 | 1401-06-01 | 12 | 2.0000000 + 40 | 3 | 1401-04-01 | 1 | 1.0000000 + 20 | 1 | 1401-05-01 | 1 | 1.0000000 + 50 | 2 | 1401-06-01 | 1 | 1.0000000 + 40 | 4 | 1401-06-01 | 1 | 2.0000000 + 40 | 4 | 1401-06-01 | 1 | 2.0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.vn order by ow_sale.pn desc range 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.pn desc range 1 preceding ); -- mvd 6,2->5; 6,2->7; 6,2->8; 6,2->9; 6,2->10; + cn | pn | cn | pn | to_char | vn | to_char | to_char | to_char | to_char +----+-----+----+-----+-------------------+----+-------------------+-------------------+-------------------+------------------- + 1 | 200 | 1 | 200 | 1.0000000 | 10 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 100 | 1 | 100 | 1.0000000 | 20 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 3 | 600 | 3 | 600 | 1.0000000 | 30 | 3.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 3 | 500 | 3 | 500 | 2.0000000 | 30 | 3.0000000 | 2.0000000 | 2.0000000 | 2.0000000 + 1 | 500 | 1 | 500 | 2.0000000 | 30 | 3.0000000 | 2.0000000 | 2.0000000 | 2.0000000 + 1 | 300 | 1 | 300 | 1.0000000 | 30 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 4 | 800 | 4 | 800 | 1.0000000 | 40 | 4.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 4 | 700 | 4 | 700 | 1.0000000 | 40 | 4.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 3 | 200 | 3 | 200 | 1.0000000 | 40 | 3.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 2 | 100 | 2 | 100 | 1.0000000 | 40 | 2.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 400 | 1 | 400 | 2.0000000 | 50 | 2.0000000 | 2.0000000 | 2.0000000 | 2.0000000 + 2 | 400 | 2 | 400 | 2.0000000 | 50 | 2.0000000 | 2.0000000 | 2.0000000 | 2.0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.pn desc range current row ); -- mvd 4,2,5->3; + prc | qty | to_char | vn | pn +------+------+-------------------+----+----- + 5 | 12 | 1.0000000 | 30 | 600 + 5 | 12 | 2.0000000 | 30 | 500 + 5 | 12 | 2.0000000 | 30 | 500 + 2400 | 1100 | 1.0000000 | 40 | 100 + 0 | 1 | 1.0000000 | 10 | 200 + 0 | 1 | 1.0000000 | 20 | 100 + 0 | 1 | 1.0000000 | 30 | 300 + 1 | 1 | 1.0000000 | 40 | 800 + 1 | 1 | 1.0000000 | 40 | 700 + 0 | 1 | 1.0000000 | 40 | 200 + 0 | 1 | 2.0000000 | 50 | 400 + 0 | 1 | 2.0000000 | 50 | 400 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.dt order by ow_sale.cn desc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.dt order by ow_sale.cn desc range current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.dt order by ow_sale.cn desc range current row ); -- mvd 3,4,1,5->2; 3,4,1,5->6; 3,4,1,5->7; + dt | to_char | prc | cn | pn | to_char | to_char +------------+-------------------+------+----+-----+-------------------+------------------- + 1401-05-01 | 1.0000000 | 0 | 1 | 100 | 1.0000000 | 1.0000000 + 1401-04-01 | 1.0000000 | 0 | 3 | 200 | 3.0000000 | 1.0000000 + 1401-05-02 | 1.0000000 | 0 | 1 | 300 | 1.0000000 | 1.0000000 + 1401-06-01 | 1.0000000 | 0 | 1 | 400 | 1.0000000 | 1.0000000 + 1401-06-01 | 1.0000000 | 5 | 1 | 500 | 1.0000000 | 1.0000000 + 1401-06-01 | 1.0000000 | 5 | 3 | 500 | 3.0000000 | 1.0000000 + 1401-06-01 | 1.0000000 | 1 | 4 | 800 | 4.0000000 | 1.0000000 + 1401-01-01 | 1.0000000 | 2400 | 2 | 100 | 2.0000000 | 1.0000000 + 1401-03-01 | 1.0000000 | 0 | 1 | 200 | 1.0000000 | 1.0000000 + 1401-06-01 | 1.0000000 | 0 | 2 | 400 | 2.0000000 | 1.0000000 + 1401-06-01 | 1.0000000 | 5 | 3 | 600 | 3.0000000 | 1.0000000 + 1401-06-01 | 1.0000000 | 1 | 4 | 700 | 4.0000000 | 1.0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn+ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.pn asc range between unbounded preceding and 1 preceding ); -- mvd 1,6->7; + cn | qty | dt | qty | cn | pn | to_char +----+------+------------+------+----+-----+------------------- + 1 | 1 | 1401-05-01 | 1 | 1 | 100 | .0000000 + 1 | 1 | 1401-03-01 | 1 | 1 | 200 | .0000000 + 2 | 1 | 1401-06-01 | 1 | 2 | 400 | .0000000 + 3 | 1 | 1401-04-01 | 1 | 3 | 200 | .0000000 + 3 | 12 | 1401-06-01 | 12 | 3 | 600 | .0000000 + 4 | 1 | 1401-06-01 | 1 | 4 | 800 | .0000000 + 1 | 1 | 1401-05-02 | 1 | 1 | 300 | .0000000 + 1 | 1 | 1401-06-01 | 1 | 1 | 400 | .0000000 + 1 | 12 | 1401-06-01 | 12 | 1 | 500 | .0000000 + 2 | 1100 | 1401-01-01 | 1100 | 2 | 100 | .0000000 + 3 | 12 | 1401-06-01 | 12 | 3 | 500 | .0000000 + 4 | 1 | 1401-06-01 | 1 | 4 | 700 | .0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn asc range between unbounded preceding and floor(ow_sale.prc) preceding ), +win2 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.pn asc); -- mvd 3,2->5; 3,2->6; 8,9->7; 8,2,9->10; + qty | vn | dt | prc | to_char | to_char | to_char | cn | pn | to_char +------+----+------------+------+-------------------+-------------------+-------------------+----+-----+------------------- + 1 | 10 | 1401-03-01 | 0 | 1.0000000 | 1.0000000 | .0000000 | 1 | 200 | 1.0000000 + 1 | 30 | 1401-05-02 | 0 | 1.0000000 | 1.0000000 | .0000000 | 1 | 300 | 1.0000000 + 12 | 30 | 1401-06-01 | 5 | .0000000 | .0000000 | .0000000 | 3 | 500 | 1.0000000 + 12 | 30 | 1401-06-01 | 5 | .0000000 | .0000000 | .0000000 | 1 | 500 | 2.0000000 + 12 | 30 | 1401-06-01 | 5 | .0000000 | .0000000 | .0000000 | 3 | 600 | 2.0000000 + 1 | 40 | 1401-06-01 | 1 | 3.0000000 | 17.0000000 | .0000000 | 4 | 800 | 2.0000000 + 1 | 40 | 1401-06-01 | 1 | 3.0000000 | 17.0000000 | .0000000 | 4 | 700 | 1.0000000 + 1 | 50 | 1401-06-01 | 0 | 7.0000000 | 1.0000000 | .0000000 | 1 | 400 | 1.0000000 + 1 | 50 | 1401-06-01 | 0 | 7.0000000 | 1.0000000 | .0000000 | 2 | 400 | 1.0000000 + 1100 | 40 | 1401-01-01 | 2400 | .0000000 | .0000000 | .0000000 | 2 | 100 | 1.0000000 + 1 | 40 | 1401-04-01 | 0 | 1.0000000 | 1.0000000 | .0000000 | 3 | 200 | 1.0000000 + 1 | 20 | 1401-05-01 | 0 | 1.0000000 | 1.0000000 | .0000000 | 1 | 100 | 1.0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.dt,ow_sale.prc order by ow_sale.vn asc range between unbounded preceding and current row ); -- mvd 1,4,2,5->3; + prc | vn | to_char | dt | qty +------+----+-------------------+------------+------ + 0 | 40 | 1.0000000 | 1401-04-01 | 1 + 0 | 20 | 1.0000000 | 1401-05-01 | 1 + 1 | 40 | 2.0000000 | 1401-06-01 | 1 + 1 | 40 | 2.0000000 | 1401-06-01 | 1 + 5 | 30 | 3.0000000 | 1401-06-01 | 12 + 5 | 30 | 3.0000000 | 1401-06-01 | 12 + 5 | 30 | 3.0000000 | 1401-06-01 | 12 + 0 | 10 | 1.0000000 | 1401-03-01 | 1 + 0 | 30 | 1.0000000 | 1401-05-02 | 1 + 0 | 50 | 2.0000000 | 1401-06-01 | 1 + 0 | 50 | 2.0000000 | 1401-06-01 | 1 + 2400 | 40 | 1.0000000 | 1401-01-01 | 1100 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.vn) as int),cast (floor(ow_sale.prc+ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.cn desc range between unbounded preceding and current row ), +win2 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,1->7; 3,9,2,5,1->8; 3,9,2,5,1->10; 3,9,2,5,1->11; 3,9,2,5,1->12; + pn | vn | cn | vn | qty | vn | to_char | to_char | dt | to_char | to_char | to_char +-----+----+----+----+------+----+-------------------+-------------------+------------+-------------------+-------------------+------------------- + 100 | 20 | 1 | 20 | 1 | 20 | 1.0000000 | .0000000 | 1401-05-01 | .0000000 | 1.0000000 | 1.0000000 + 200 | 10 | 1 | 10 | 1 | 10 | 1.0000000 | .0000000 | 1401-03-01 | .0000000 | 1.0000000 | 1.0000000 + 400 | 50 | 2 | 50 | 1 | 50 | 1.0000000 | .0000000 | 1401-06-01 | .0000000 | 1.0000000 | 1.0000000 + 200 | 40 | 3 | 40 | 1 | 40 | 1.0000000 | .0000000 | 1401-04-01 | .0000000 | 1.0000000 | 1.0000000 + 600 | 30 | 3 | 30 | 12 | 30 | 1.0000000 | .0000000 | 1401-06-01 | .0000000 | 1.0000000 | 12.0000000 + 800 | 40 | 4 | 40 | 1 | 40 | 1.0000000 | .0000000 | 1401-06-01 | .0000000 | 1.0000000 | 1.0000000 + 300 | 30 | 1 | 30 | 1 | 30 | 1.0000000 | .0000000 | 1401-05-02 | .0000000 | 1.0000000 | 1.0000000 + 400 | 50 | 1 | 50 | 1 | 50 | 1.0000000 | .0000000 | 1401-06-01 | .0000000 | 1.0000000 | 1.0000000 + 500 | 30 | 1 | 30 | 12 | 30 | 1.0000000 | .0000000 | 1401-06-01 | .0000000 | 1.0000000 | 12.0000000 + 100 | 40 | 2 | 40 | 1100 | 40 | 1.0000000 | .0000000 | 1401-01-01 | .0000000 | 1.0000000 | 1100.0000000 + 500 | 30 | 3 | 30 | 12 | 30 | 1.0000000 | .0000000 | 1401-06-01 | .0000000 | 1.0000000 | 12.0000000 + 700 | 40 | 4 | 40 | 1 | 40 | 1.0000000 | .0000000 | 1401-06-01 | .0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn/ow_sale.pn),floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.cn+ow_sale.cn) following ); -- mvd 1,2,4,5->3; + prc | dt | to_char | cn | pn +------+------------+-------------------+----+----- + 0 | 1401-05-01 | 1.0000000 | 1 | 100 + 0 | 1401-05-02 | 1.0000000 | 1 | 300 + 0 | 1401-06-01 | 1.0000000 | 1 | 400 + 5 | 1401-06-01 | 1.0000000 | 1 | 500 + 0 | 1401-04-01 | 1.0000000 | 3 | 200 + 5 | 1401-06-01 | 1.0000000 | 3 | 500 + 1 | 1401-06-01 | 1.0000000 | 4 | 800 + 0 | 1401-03-01 | 1.0000000 | 1 | 200 + 0 | 1401-06-01 | 1.0000000 | 2 | 400 + 2400 | 1401-01-01 | 1.0000000 | 2 | 100 + 5 | 1401-06-01 | 1.0000000 | 3 | 600 + 1 | 1401-06-01 | 1.0000000 | 4 | 700 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.cn asc range between unbounded preceding and 1 following ), +win2 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.cn desc); -- mvd 2,8,9,10->7; 5,2,1,10->11; + vn | cn | vn | cn | prc | prc | to_char | dt | qty | pn | to_char +----+----+----+----+------+------+-------------------+------------+------+-----+------------------- + 10 | 1 | 10 | 1 | 0 | 0 | 1.0000000 | 1401-03-01 | 1 | 200 | 1.0000000 + 50 | 2 | 50 | 2 | 0 | 0 | 1.0000000 | 1401-06-01 | 1 | 400 | 1.0000000 + 30 | 1 | 30 | 1 | 5 | 5 | 1.0000000 | 1401-06-01 | 12 | 500 | 1.0000000 + 30 | 3 | 30 | 3 | 5 | 5 | 1.0000000 | 1401-06-01 | 12 | 500 | 1.0000000 + 40 | 4 | 40 | 4 | 1 | 1 | 1.0000000 | 1401-06-01 | 1 | 800 | 1.0000000 + 40 | 2 | 40 | 2 | 2400 | 2400 | 1.0000000 | 1401-01-01 | 1100 | 100 | 1.0000000 + 40 | 3 | 40 | 3 | 0 | 0 | 1.0000000 | 1401-04-01 | 1 | 200 | 1.0000000 + 20 | 1 | 20 | 1 | 0 | 0 | 1.0000000 | 1401-05-01 | 1 | 100 | 1.0000000 + 30 | 1 | 30 | 1 | 0 | 0 | 1.0000000 | 1401-05-02 | 1 | 300 | 1.0000000 + 50 | 1 | 50 | 1 | 0 | 0 | 1.0000000 | 1401-06-01 | 1 | 400 | 1.0000000 + 30 | 3 | 30 | 3 | 5 | 5 | 1.0000000 | 1401-06-01 | 12 | 600 | 1.0000000 + 40 | 4 | 40 | 4 | 1 | 1 | 1.0000000 | 1401-06-01 | 1 | 700 | 1.0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn/ow_sale.pn),floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn/ow_sale.qty)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.cn desc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.vn asc); -- mvd 1,5->4; 2->6; 2->7; + cn | vn | pn | to_char | qty | to_char | to_char +----+----+-----+-------------------+------+-------------------+------------------- + 1 | 10 | 200 | 8.0000000 | 1 | .0000000 | 1.0000000 + 1 | 20 | 100 | 8.0000000 | 1 | .0909091 | 2.0000000 + 1 | 30 | 300 | 8.0000000 | 1 | .1818182 | 6.0000000 + 3 | 30 | 600 | 3.0000000 | 12 | .1818182 | 6.0000000 + 3 | 30 | 500 | 3.0000000 | 12 | .1818182 | 6.0000000 + 1 | 30 | 500 | 3.0000000 | 12 | .1818182 | 6.0000000 + 2 | 40 | 100 | 1.0000000 | 1100 | .5454545 | 10.0000000 + 3 | 40 | 200 | 8.0000000 | 1 | .5454545 | 10.0000000 + 4 | 40 | 800 | 8.0000000 | 1 | .5454545 | 10.0000000 + 4 | 40 | 700 | 8.0000000 | 1 | .5454545 | 10.0000000 + 2 | 50 | 400 | 8.0000000 | 1 | .9090909 | 12.0000000 + 1 | 50 | 400 | 8.0000000 | 1 | .9090909 | 12.0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc+ow_sale.vn),floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.vn desc range between floor(ow_sale.vn*ow_sale.cn) preceding and floor(ow_sale.prc) preceding ); -- mvd 6,8,3->7; + qty | qty | vn | vn | prc | dt | to_char | cn +------+------+----+----+------+------------+-------------------+---- + 1 | 1 | 20 | 20 | 0 | 1401-05-01 | 1.0000000 | 1 + 1 | 1 | 50 | 50 | 0 | 1401-06-01 | 1.0000000 | 2 + 1 | 1 | 40 | 40 | 0 | 1401-04-01 | 1.0000000 | 3 + 1 | 1 | 40 | 40 | 1 | 1401-06-01 | .0000000 | 4 + 1 | 1 | 40 | 40 | 1 | 1401-06-01 | .0000000 | 4 + 1 | 1 | 10 | 10 | 0 | 1401-03-01 | 1.0000000 | 1 + 1 | 1 | 30 | 30 | 0 | 1401-05-02 | 1.0000000 | 1 + 12 | 12 | 30 | 30 | 5 | 1401-06-01 | .0000000 | 1 + 1 | 1 | 50 | 50 | 0 | 1401-06-01 | 1.0000000 | 1 + 1100 | 1100 | 40 | 40 | 2400 | 1401-01-01 | .0000000 | 2 + 12 | 12 | 30 | 30 | 5 | 1401-06-01 | .0000000 | 3 + 12 | 12 | 30 | 30 | 5 | 1401-06-01 | .0000000 | 3 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn*ow_sale.pn),floor(ow_sale.pn/ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn/ow_sale.prc)) OVER(partition by ow_sale.vn order by ow_sale.pn desc range between 1 preceding and 3 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.pn desc range between 1 preceding and 3 preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 2,4->5; 2,4->6; 1->7; 1->8; 1->9; 2,4->10; + cn | vn | cn | pn | to_char | to_char | to_char | to_char | to_char | to_char +----+----+----+-----+-------------------+-------------------+-------------------+-------------------+-------------------+------------------- + 2 | 40 | 2 | 100 | .0000000 | .0000000 | .0000000 | .0833333 | .0000000 | .0000000 + 1 | 10 | 1 | 200 | .0000000 | .0000000 | .0000000 | .1666667 | .0909091 | .0000000 + 3 | 40 | 3 | 200 | .0000000 | .0000000 | .0000000 | .2500000 | .1818182 | .0000000 + 1 | 20 | 1 | 100 | .0000000 | .0000000 | .0000000 | .3333333 | .2727273 | .0000000 + 1 | 30 | 1 | 300 | .0000000 | .0000000 | .0000000 | .4166667 | .3636364 | .0000000 + 1 | 50 | 1 | 400 | .0000000 | .0000000 | .0000000 | .5000000 | .4545455 | .0000000 + 2 | 50 | 2 | 400 | .0000000 | .0000000 | .0000000 | .5833333 | .5454545 | .0000000 + 1 | 30 | 1 | 500 | .0000000 | .0000000 | .0000000 | .6666667 | .6363636 | .0000000 + 3 | 30 | 3 | 500 | .0000000 | .0000000 | .0000000 | .7500000 | .7272727 | .0000000 + 3 | 30 | 3 | 600 | .0000000 | .0000000 | .0000000 | .8333333 | .8181818 | .0000000 + 4 | 40 | 4 | 700 | .0000000 | .0000000 | .0000000 | .9166667 | .9090909 | .0000000 + 4 | 40 | 4 | 800 | .0000000 | .0000000 | .0000000 | 1.0000000 | 1.0000000 | .0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty),floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.pn asc range between 2 preceding and current row ); -- mvd 3,4,1->2; + pn | to_char | prc | vn +-----+-------------------+------+---- + 200 | 1.0000000 | 0 | 10 + 100 | 1.0000000 | 0 | 20 + 600 | 1.0000000 | 5 | 30 + 200 | 1.0000000 | 0 | 40 + 800 | 1.0000000 | 1 | 40 + 100 | 1.0000000 | 2400 | 40 + 300 | 1.0000000 | 0 | 30 + 500 | 2.0000000 | 5 | 30 + 500 | 2.0000000 | 5 | 30 + 700 | 1.0000000 | 1 | 40 + 400 | 2.0000000 | 0 | 50 + 400 | 2.0000000 | 0 | 50 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty),floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc*ow_sale.prc) as int),cast (floor(ow_sale.cn*ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.prc,ow_sale.vn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.cn)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn desc range between 0 preceding and current row ), +win2 as (partition by ow_sale.prc,ow_sale.vn order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc), +win4 as (order by ow_sale.vn asc); -- mvd 1,6->5; 3,6,8->7; 6->9; 3,6,8->10; 6->11; 6->12; + dt | qty | prc | prc | to_char | vn | to_char | pn | to_char | to_char | to_char | to_char +------------+------+------+------+-------------------+----+-------------------+-----+-------------------+-------------------+-------------------+------------------- + 1401-01-01 | 1100 | 2400 | 2400 | 1.0000000 | 40 | 1.0000000 | 100 | .0000000 | .0000000 | 4.0000000 | .5454545 + 1401-03-01 | 1 | 0 | 0 | 1.0000000 | 10 | 1.0000000 | 200 | .0000000 | .0000000 | 4.0000000 | .0000000 + 1401-04-01 | 1 | 0 | 0 | 1.0000000 | 40 | 1.0000000 | 200 | .0000000 | .0000000 | 6.0000000 | .5454545 + 1401-05-01 | 1 | 0 | 0 | 1.0000000 | 20 | 1.0000000 | 100 | .0000000 | .0000000 | 6.0000000 | .0909091 + 1401-05-02 | 1 | 0 | 0 | 1.0000000 | 30 | 1.0000000 | 300 | .0000000 | .0000000 | 6.0000000 | .1818182 + 1401-06-01 | 1 | 0 | 0 | 2.0000000 | 50 | 1.0000000 | 400 | .0000000 | .0000000 | 6.0000000 | .9090909 + 1401-06-01 | 1 | 0 | 0 | 2.0000000 | 50 | 1.0000000 | 400 | .0000000 | .0000000 | 6.0000000 | .9090909 + 1401-06-01 | 12 | 5 | 5 | 3.0000000 | 30 | 1.0000000 | 500 | .0000000 | .5000000 | 6.0000000 | .1818182 + 1401-06-01 | 12 | 5 | 5 | 3.0000000 | 30 | 1.0000000 | 500 | .0000000 | .5000000 | 6.0000000 | .1818182 + 1401-06-01 | 12 | 5 | 5 | 3.0000000 | 30 | .3333333 | 600 | .0000000 | .0000000 | 6.0000000 | .1818182 + 1401-06-01 | 1 | 1 | 1 | 2.0000000 | 40 | 1.0000000 | 700 | .0000000 | 1.0000000 | 8.0000000 | .5454545 + 1401-06-01 | 1 | 1 | 1 | 2.0000000 | 40 | .5000000 | 800 | .0000000 | .0000000 | 8.0000000 | .5454545 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn/ow_sale.cn),floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc order by ow_sale.cn desc range between floor(ow_sale.pn) preceding and 0 following ); -- mvd 4,5,6->3; + pn | vn | to_char | prc | cn | dt +-----+----+-------------------+------+----+------------ + 200 | 10 | 1.0000000 | 0 | 1 | 1401-03-01 + 300 | 30 | 1.0000000 | 0 | 1 | 1401-05-02 + 400 | 50 | 1.0000000 | 0 | 2 | 1401-06-01 + 400 | 50 | 2.0000000 | 0 | 1 | 1401-06-01 + 600 | 30 | 2.0000000 | 5 | 3 | 1401-06-01 + 500 | 30 | 2.0000000 | 5 | 3 | 1401-06-01 + 500 | 30 | 3.0000000 | 5 | 1 | 1401-06-01 + 100 | 40 | 1.0000000 | 2400 | 2 | 1401-01-01 + 200 | 40 | 1.0000000 | 0 | 3 | 1401-04-01 + 100 | 20 | 1.0000000 | 0 | 1 | 1401-05-01 + 800 | 40 | 2.0000000 | 1 | 4 | 1401-06-01 + 700 | 40 | 2.0000000 | 1 | 4 | 1401-06-01 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn-ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.pn desc range between floor(ow_sale.pn) preceding and floor(ow_sale.prc) following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn desc), +win4 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,5,6,1,7->4; 5->8; 5->9; 5->10; 3,6,5,1,2,7->11; 5->12; + vn | qty | prc | to_char | cn | dt | pn | to_char | to_char | to_char | to_char | to_char +----+------+------+-------------------+----+------------+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 40 | 1100 | 2400 | 1.0000000 | 2 | 1401-01-01 | 100 | .0000000 | .0000000 | 1.0000000 | .0000000 | 1.0000000 + 10 | 1 | 0 | 1.0000000 | 1 | 1401-03-01 | 200 | .0000000 | 1.0000000 | 2.0000000 | .0000000 | 2.0000000 + 40 | 1 | 0 | 1.0000000 | 3 | 1401-04-01 | 200 | .0000000 | .0000000 | 3.0000000 | .0000000 | 3.0000000 + 20 | 1 | 0 | 1.0000000 | 1 | 1401-05-01 | 100 | .0000000 | .0000000 | 4.0000000 | .0000000 | 4.0000000 + 30 | 1 | 0 | 1.0000000 | 1 | 1401-05-02 | 300 | .0000000 | .0000000 | 5.0000000 | .0000000 | 5.0000000 + 50 | 1 | 0 | 1.0000000 | 1 | 1401-06-01 | 400 | .0000000 | .0000000 | 6.0000000 | .0000000 | 6.0000000 + 50 | 1 | 0 | 1.0000000 | 2 | 1401-06-01 | 400 | .0000000 | .0000000 | 7.0000000 | .0000000 | 7.0000000 + 30 | 12 | 5 | 1.0000000 | 1 | 1401-06-01 | 500 | .0000000 | .0000000 | 8.0000000 | .0000000 | 8.0000000 + 30 | 12 | 5 | 1.0000000 | 3 | 1401-06-01 | 500 | .0000000 | .0000000 | 9.0000000 | .0000000 | 9.0000000 + 30 | 12 | 5 | 1.0000000 | 3 | 1401-06-01 | 600 | .0000000 | .0000000 | 10.0000000 | .0000000 | 10.0000000 + 40 | 1 | 1 | 1.0000000 | 4 | 1401-06-01 | 700 | .0000000 | .0000000 | 11.0000000 | .0000000 | 11.0000000 + 40 | 1 | 1 | 1.0000000 | 4 | 1401-06-01 | 800 | .0000000 | .0000000 | 12.0000000 | .0000000 | 12.0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty*ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.cn asc range between floor(ow_sale.pn/ow_sale.vn) preceding and unbounded following ); -- mvd 2,7,1,8->6; + cn | prc | qty | qty | vn | to_char | dt | pn +----+------+------+------+----+-------------------+------------+----- + 1 | 0 | 1 | 1 | 20 | 1.0000000 | 1401-05-01 | 100 + 1 | 0 | 1 | 1 | 30 | 1.0000000 | 1401-05-02 | 300 + 1 | 0 | 1 | 1 | 50 | 1.0000000 | 1401-06-01 | 400 + 1 | 5 | 12 | 12 | 30 | 1.0000000 | 1401-06-01 | 500 + 3 | 0 | 1 | 1 | 40 | 1.0000000 | 1401-04-01 | 200 + 3 | 5 | 12 | 12 | 30 | 1.0000000 | 1401-06-01 | 500 + 4 | 1 | 1 | 1 | 40 | 1.0000000 | 1401-06-01 | 800 + 1 | 0 | 1 | 1 | 10 | 1.0000000 | 1401-03-01 | 200 + 2 | 2400 | 1100 | 1100 | 40 | 1.0000000 | 1401-01-01 | 100 + 2 | 0 | 1 | 1 | 50 | 1.0000000 | 1401-06-01 | 400 + 3 | 5 | 12 | 12 | 30 | 1.0000000 | 1401-06-01 | 600 + 4 | 1 | 1 | 1 | 40 | 1.0000000 | 1401-06-01 | 700 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn desc range between 1 preceding and unbounded following ); -- mvd 2,4->3; 2,4->5; + qty | cn | to_char | pn | to_char +------+----+-------------------+-----+------------------- + 1 | 1 | 1.0000000 | 300 | 1.0000000 + 1 | 2 | 2.0000000 | 400 | 1.0000000 + 1 | 1 | 2.0000000 | 400 | 1.0000000 + 12 | 3 | 2.0000000 | 500 | 12.0000000 + 12 | 1 | 1.0000000 | 500 | 12.0000000 + 1 | 4 | 1.0000000 | 800 | 1.0000000 + 1100 | 2 | 2.0000000 | 100 | 1100.0000000 + 1 | 1 | 2.0000000 | 100 | 1100.0000000 + 1 | 3 | 2.0000000 | 200 | 1.0000000 + 1 | 1 | 1.0000000 | 200 | 1.0000000 + 12 | 3 | 1.0000000 | 600 | 12.0000000 + 1 | 4 | 1.0000000 | 700 | 1.0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty-ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.qty order by ow_sale.pn desc range between current row and current row ); -- mvd 8,9,3,1,4,10->7; + qty | qty | dt | vn | qty | qty | to_char | prc | cn | pn +------+------+------------+----+------+------+-------------------+------+----+----- + 1 | 1 | 1401-03-01 | 10 | 1 | 1 | 1.0000000 | 0 | 1 | 200 + 1 | 1 | 1401-05-02 | 30 | 1 | 1 | 1.0000000 | 0 | 1 | 300 + 1 | 1 | 1401-06-01 | 50 | 1 | 1 | 1.0000000 | 0 | 1 | 400 + 1 | 1 | 1401-06-01 | 40 | 1 | 1 | 1.0000000 | 1 | 4 | 800 + 1 | 1 | 1401-06-01 | 40 | 1 | 1 | 1.0000000 | 1 | 4 | 700 + 1 | 1 | 1401-05-01 | 20 | 1 | 1 | 1.0000000 | 0 | 1 | 100 + 1 | 1 | 1401-04-01 | 40 | 1 | 1 | 1.0000000 | 0 | 3 | 200 + 1 | 1 | 1401-06-01 | 50 | 1 | 1 | 1.0000000 | 0 | 2 | 400 + 12 | 12 | 1401-06-01 | 30 | 12 | 12 | 1.0000000 | 5 | 1 | 500 + 12 | 12 | 1401-06-01 | 30 | 12 | 12 | 1.0000000 | 5 | 3 | 600 + 12 | 12 | 1401-06-01 | 30 | 12 | 12 | 1.0000000 | 5 | 3 | 500 + 1100 | 1100 | 1401-01-01 | 40 | 1100 | 1100 | 1.0000000 | 2400 | 2 | 100 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.vn asc range between current row and 3 following ); -- mvd 1,5->4; + vn | vn | vn | to_char | pn +----+----+----+-------------------+----- + 30 | 30 | 30 | 1.0000000 | 300 + 50 | 50 | 50 | 2.0000000 | 400 + 50 | 50 | 50 | 2.0000000 | 400 + 30 | 30 | 30 | 2.0000000 | 500 + 30 | 30 | 30 | 2.0000000 | 500 + 40 | 40 | 40 | 1.0000000 | 800 + 20 | 20 | 20 | 1.0000000 | 100 + 40 | 40 | 40 | 1.0000000 | 100 + 10 | 10 | 10 | 1.0000000 | 200 + 40 | 40 | 40 | 1.0000000 | 200 + 30 | 30 | 30 | 1.0000000 | 600 + 40 | 40 | 40 | 1.0000000 | 700 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.cn asc range between current row and 4 following ), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.vn desc); -- mvd 3,1,4,5->2; 7,1,5,8->6; + dt | to_char | cn | qty | vn | to_char | prc | pn +------------+-------------------+----+------+----+-------------------+------+----- + 1401-03-01 | 1.0000000 | 1 | 1 | 10 | 1.0000000 | 0 | 200 + 1401-05-02 | 1.0000000 | 1 | 1 | 30 | 1.0000000 | 0 | 300 + 1401-06-01 | 1.0000000 | 1 | 1 | 50 | 1.0000000 | 0 | 400 + 1401-05-01 | 1.0000000 | 1 | 1 | 20 | 1.0000000 | 0 | 100 + 1401-06-01 | 1.0000000 | 1 | 12 | 30 | 1.0000000 | 5 | 500 + 1401-06-01 | 2.0000000 | 3 | 12 | 30 | 1.0000000 | 5 | 600 + 1401-06-01 | 2.0000000 | 3 | 12 | 30 | 1.0000000 | 5 | 500 + 1401-01-01 | 1.0000000 | 2 | 1100 | 40 | 1.0000000 | 2400 | 100 + 1401-04-01 | 1.0000000 | 3 | 1 | 40 | 1.0000000 | 0 | 200 + 1401-06-01 | 2.0000000 | 4 | 1 | 40 | 1.0000000 | 1 | 700 + 1401-06-01 | 2.0000000 | 4 | 1 | 40 | 1.0000000 | 1 | 800 + 1401-06-01 | 1.0000000 | 2 | 1 | 50 | 1.0000000 | 0 | 400 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.prc,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.pn desc range between current row and unbounded following ); -- mvd 8->7; + dt | vn | prc | prc | dt | dt | to_char | pn +------------+----+------+------+------------+------------+-------------------+----- + 1401-05-02 | 30 | 0 | 0 | 1401-05-02 | 1401-05-02 | 1.0000000 | 300 + 1401-06-01 | 50 | 0 | 0 | 1401-06-01 | 1401-06-01 | 2.0000000 | 400 + 1401-06-01 | 50 | 0 | 0 | 1401-06-01 | 1401-06-01 | 2.0000000 | 400 + 1401-06-01 | 30 | 5 | 5 | 1401-06-01 | 1401-06-01 | 2.0000000 | 500 + 1401-06-01 | 30 | 5 | 5 | 1401-06-01 | 1401-06-01 | 2.0000000 | 500 + 1401-06-01 | 40 | 1 | 1 | 1401-06-01 | 1401-06-01 | 1.0000000 | 800 + 1401-05-01 | 20 | 0 | 0 | 1401-05-01 | 1401-05-01 | 2.0000000 | 100 + 1401-01-01 | 40 | 2400 | 2400 | 1401-01-01 | 1401-01-01 | 2.0000000 | 100 + 1401-03-01 | 10 | 0 | 0 | 1401-03-01 | 1401-03-01 | 2.0000000 | 200 + 1401-04-01 | 40 | 0 | 0 | 1401-04-01 | 1401-04-01 | 2.0000000 | 200 + 1401-06-01 | 30 | 5 | 5 | 1401-06-01 | 1401-06-01 | 1.0000000 | 600 + 1401-06-01 | 40 | 1 | 1 | 1401-06-01 | 1401-06-01 | 1.0000000 | 700 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn/ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.prc order by ow_sale.cn asc range between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 5,6,7,2->4; 7->8; 7->9; + qty | pn | pn | to_char | prc | cn | vn | to_char | to_char +------+-----+-----+-------------------+------+----+----+-------------------+------------------- + 1100 | 100 | 100 | 1.0000000 | 2400 | 2 | 40 | .0000000 | .0833333 + 1 | 200 | 200 | 1.0000000 | 0 | 1 | 10 | .0000000 | .1666667 + 1 | 200 | 200 | 1.0000000 | 0 | 3 | 40 | .0000000 | .2500000 + 1 | 100 | 100 | 1.0000000 | 0 | 1 | 20 | .0000000 | .3333333 + 1 | 300 | 300 | 1.0000000 | 0 | 1 | 30 | .0000000 | .4166667 + 1 | 400 | 400 | 1.0000000 | 0 | 1 | 50 | .0000000 | .5000000 + 1 | 400 | 400 | 1.0000000 | 0 | 2 | 50 | .0000000 | .5833333 + 12 | 500 | 500 | 1.0000000 | 5 | 1 | 30 | .0000000 | .6666667 + 12 | 500 | 500 | 1.0000000 | 5 | 3 | 30 | .0000000 | .7500000 + 12 | 600 | 600 | 1.0000000 | 5 | 3 | 30 | .0000000 | .8333333 + 1 | 700 | 700 | 1.0000000 | 1 | 4 | 40 | .0000000 | .9166667 + 1 | 800 | 800 | 1.0000000 | 1 | 4 | 40 | .0000000 | 1.0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty),floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc order by ow_sale.cn desc range between floor(ow_sale.pn-ow_sale.vn) following and 1 following ); -- mvd 5,1->4; + cn | vn | vn | to_char | prc +----+----+----+-------------------+------ + 4 | 40 | 40 | .0000000 | 1 + 4 | 40 | 40 | .0000000 | 1 + 3 | 40 | 40 | .0000000 | 0 + 2 | 50 | 50 | .0000000 | 0 + 1 | 30 | 30 | .0000000 | 0 + 1 | 50 | 50 | .0000000 | 0 + 1 | 20 | 20 | .0000000 | 0 + 1 | 10 | 10 | .0000000 | 0 + 3 | 30 | 30 | .0000000 | 5 + 3 | 30 | 30 | .0000000 | 5 + 1 | 30 | 30 | .0000000 | 5 + 2 | 40 | 40 | .0000000 | 2400 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.prc)) OVER(partition by ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.qty order by ow_sale.cn desc range between 0 following and floor(ow_sale.cn+ow_sale.prc) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.qty order by ow_sale.cn desc range between 0 following and floor(ow_sale.cn+ow_sale.prc) following ), +win2 as (order by ow_sale.vn desc); -- mvd 4,5,1,6,2->3; 4,5,1,6,2->7; 6->8; 6->9; + qty | pn | to_char | prc | cn | vn | to_char | to_char | to_char +------+-----+-------------------+------+----+----+-------------------+-------------------+------------------- + 1 | 400 | 2.0000000 | 0 | 2 | 50 | .0000000 | .1666667 | 1.0000000 + 1 | 400 | 1.0000000 | 0 | 1 | 50 | .0000000 | .1666667 | 1.0000000 + 1 | 700 | 1.0000000 | 1 | 4 | 40 | 40.0000000 | .5000000 | 3.0000000 + 1100 | 100 | 1.0000000 | 2400 | 2 | 40 | 96000.0000000 | .5000000 | 3.0000000 + 1 | 200 | 1.0000000 | 0 | 3 | 40 | .0000000 | .5000000 | 3.0000000 + 1 | 800 | 1.0000000 | 1 | 4 | 40 | 40.0000000 | .5000000 | 3.0000000 + 12 | 500 | 2.0000000 | 5 | 3 | 30 | 150.0000000 | .8333333 | 7.0000000 + 12 | 500 | 1.0000000 | 5 | 1 | 30 | 150.0000000 | .8333333 | 7.0000000 + 1 | 300 | 1.0000000 | 0 | 1 | 30 | .0000000 | .8333333 | 7.0000000 + 12 | 600 | 1.0000000 | 5 | 3 | 30 | 150.0000000 | .8333333 | 7.0000000 + 1 | 100 | 1.0000000 | 0 | 1 | 20 | .0000000 | .9166667 | 11.0000000 + 1 | 200 | 1.0000000 | 0 | 1 | 10 | .0000000 | 1.0000000 | 12.0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.vn desc range between floor(ow_sale.pn) following and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.qty order by ow_sale.cn asc), +win3 as (order by ow_sale.pn asc); -- mvd 4,5,1->3; 4,7->6; 1->8; + pn | pn | to_char | cn | vn | to_char | qty | to_char +-----+-----+-------------------+----+----+-------------------+------+------------------- + 100 | 100 | .0000000 | 1 | 20 | .0000000 | 1 | .1666667 + 100 | 100 | .0000000 | 2 | 40 | .0000000 | 1100 | .1666667 + 200 | 200 | .0000000 | 1 | 10 | .0000000 | 1 | .3333333 + 200 | 200 | .0000000 | 3 | 40 | .0000000 | 1 | .3333333 + 300 | 300 | .0000000 | 1 | 30 | .0000000 | 1 | .4166667 + 400 | 400 | .0000000 | 1 | 50 | .0000000 | 1 | .5833333 + 400 | 400 | .0000000 | 2 | 50 | .0000000 | 1 | .5833333 + 500 | 500 | .0000000 | 1 | 30 | .0000000 | 12 | .7500000 + 500 | 500 | .0000000 | 3 | 30 | .0000000 | 12 | .7500000 + 600 | 600 | .0000000 | 3 | 30 | .0000000 | 12 | .8333333 + 700 | 700 | .0000000 | 4 | 40 | .0000000 | 1 | .9166667 + 800 | 800 | .0000000 | 4 | 40 | .0000000 | 1 | 1.0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows unbounded preceding ); -- mvd 6,7,8->5; + qty | pn | pn | vn | to_char | prc | cn | dt +------+-----+-----+----+-------------------+------+----+------------ + 1 | 200 | 200 | 10 | 1.0000000 | 0 | 1 | 1401-03-01 + 1 | 300 | 300 | 30 | 1.0000000 | 0 | 1 | 1401-05-02 + 1 | 400 | 400 | 50 | 1.0000000 | 0 | 1 | 1401-06-01 + 1 | 400 | 400 | 50 | 2.0000000 | 0 | 2 | 1401-06-01 + 12 | 500 | 500 | 30 | 1.0000000 | 5 | 1 | 1401-06-01 + 12 | 500 | 500 | 30 | 2.0000000 | 5 | 3 | 1401-06-01 + 12 | 600 | 600 | 30 | 3.0000000 | 5 | 3 | 1401-06-01 + 1 | 200 | 200 | 40 | 1.0000000 | 0 | 3 | 1401-04-01 + 1 | 100 | 100 | 20 | 1.0000000 | 0 | 1 | 1401-05-01 + 1 | 700 | 700 | 40 | 1.0000000 | 1 | 4 | 1401-06-01 + 1 | 800 | 800 | 40 | 2.0000000 | 1 | 4 | 1401-06-01 + 1100 | 100 | 100 | 40 | 1.0000000 | 2400 | 2 | 1401-01-01 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc rows 9 preceding ); -- mvd 4,2,5->3; + qty | vn | to_char | prc | pn +------+----+-------------------+------+----- + 1 | 30 | 1.0000000 | 0 | 300 + 12 | 30 | 1.0000000 | 5 | 500 + 12 | 30 | 2.0000000 | 5 | 500 + 1 | 40 | 1.0000000 | 1 | 700 + 1 | 50 | 1.0000000 | 0 | 400 + 1 | 50 | 2.0000000 | 0 | 400 + 1 | 10 | 1.0000000 | 0 | 200 + 1 | 20 | 1.0000000 | 0 | 100 + 12 | 30 | 1.0000000 | 5 | 600 + 1100 | 40 | 1.0000000 | 2400 | 100 + 1 | 40 | 1.0000000 | 0 | 200 + 1 | 40 | 1.0000000 | 1 | 800 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn*ow_sale.cn),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.cn) as int),cast (floor(ow_sale.cn*ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc rows floor(ow_sale.pn/ow_sale.cn) preceding ), +win2 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.vn order by ow_sale.cn desc), +win3 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 8,1,3,6->7; 2,1,4,6->9; 2,1,4,6->10; 2,1,4,6->11; 2,1,4,6->12; + cn | prc | qty | vn | cn | pn | to_char | dt | to_char | to_char | to_char | to_char +----+------+------+----+----+-----+-------------------+------------+-------------------+-------------------+-------------------+------------------- + 1 | 0 | 1 | 10 | 1 | 200 | 1.0000000 | 1401-03-01 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 2 | 0 | 1 | 50 | 2 | 400 | 1.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | .5000000 | .0000000 + 1 | 5 | 12 | 30 | 1 | 500 | 1.0000000 | 1401-06-01 | 2.0000000 | 2.0000000 | 1.0000000 | .0000000 + 3 | 5 | 12 | 30 | 3 | 500 | 1.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | .5000000 | .0000000 + 4 | 1 | 1 | 40 | 4 | 800 | 1.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 1 | 0 | 1 | 20 | 1 | 100 | 1.0000000 | 1401-05-01 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 2 | 2400 | 1100 | 40 | 2 | 100 | 1.0000000 | 1401-01-01 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 3 | 0 | 1 | 40 | 3 | 200 | 1.0000000 | 1401-04-01 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 1 | 0 | 1 | 30 | 1 | 300 | 1.0000000 | 1401-05-02 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 1 | 0 | 1 | 50 | 1 | 400 | 1.0000000 | 1401-06-01 | 2.0000000 | 2.0000000 | 1.0000000 | .0000000 + 3 | 5 | 12 | 30 | 3 | 600 | 1.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 4 | 1 | 1 | 40 | 4 | 700 | 1.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.prc,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc rows current row ); -- mvd 1,6,7->5; + prc | prc | cn | prc | to_char | dt | pn +------+------+----+------+-------------------+------------+----- + 0 | 0 | 1 | 0 | 1.0000000 | 1401-03-01 | 200 + 0 | 0 | 1 | 0 | 1.0000000 | 1401-05-02 | 300 + 0 | 0 | 1 | 0 | 1.0000000 | 1401-06-01 | 400 + 0 | 0 | 2 | 0 | 1.0000000 | 1401-06-01 | 400 + 5 | 5 | 1 | 5 | 1.0000000 | 1401-06-01 | 500 + 5 | 5 | 3 | 5 | 1.0000000 | 1401-06-01 | 500 + 5 | 5 | 3 | 5 | 1.0000000 | 1401-06-01 | 600 + 2400 | 2400 | 2 | 2400 | 1.0000000 | 1401-01-01 | 100 + 0 | 0 | 3 | 0 | 1.0000000 | 1401-04-01 | 200 + 0 | 0 | 1 | 0 | 1.0000000 | 1401-05-01 | 100 + 1 | 1 | 4 | 1 | 1.0000000 | 1401-06-01 | 700 + 1 | 1 | 4 | 1 | 1.0000000 | 1401-06-01 | 800 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.pn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn+ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc,ow_sale.pn asc rows current row ), +win2 as (partition by ow_sale.vn order by ow_sale.pn desc), +win3 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 1,8,4,9->7; 4,9->10; 1,8,2->11; + cn | qty | cn | vn | qty | cn | to_char | dt | pn | to_char | to_char +----+------+----+----+------+----+-------------------+------------+-----+-------------------+------------------- + 3 | 1 | 3 | 40 | 1 | 3 | 1.0000000 | 1401-04-01 | 200 | .7500000 | .0000000 + 1 | 1 | 1 | 20 | 1 | 1 | 1.0000000 | 1401-05-01 | 100 | 1.0000000 | .0000000 + 2 | 1 | 2 | 50 | 1 | 2 | 1.0000000 | 1401-06-01 | 400 | 1.0000000 | .0000000 + 4 | 1 | 4 | 40 | 1 | 4 | 1.0000000 | 1401-06-01 | 700 | .5000000 | .0000000 + 4 | 1 | 4 | 40 | 1 | 4 | 1.0000000 | 1401-06-01 | 800 | .2500000 | .0000000 + 2 | 1100 | 2 | 40 | 1100 | 2 | 1.0000000 | 1401-01-01 | 100 | 1.0000000 | .0000000 + 1 | 1 | 1 | 10 | 1 | 1 | 1.0000000 | 1401-03-01 | 200 | 1.0000000 | .0000000 + 1 | 1 | 1 | 30 | 1 | 1 | 1.0000000 | 1401-05-02 | 300 | 1.0000000 | .0000000 + 1 | 1 | 1 | 50 | 1 | 1 | 1.0000000 | 1401-06-01 | 400 | 1.0000000 | .0000000 + 1 | 12 | 1 | 30 | 12 | 1 | 1.0000000 | 1401-06-01 | 500 | .7500000 | .0000000 + 3 | 12 | 3 | 30 | 12 | 3 | 1.0000000 | 1401-06-01 | 500 | .7500000 | .0000000 + 3 | 12 | 3 | 30 | 12 | 3 | 1.0000000 | 1401-06-01 | 600 | .2500000 | .0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.pn-ow_sale.pn) preceding ); -- mvd 2,6,7,8->5; + prc | cn | qty | prc | to_char | dt | vn | pn +------+----+------+------+-------------------+------------+----+----- + 0 | 1 | 1 | 0 | 1.0000000 | 1401-03-01 | 10 | 200 + 5 | 3 | 12 | 5 | 1.0000000 | 1401-06-01 | 30 | 600 + 1 | 4 | 1 | 1 | 1.0000000 | 1401-06-01 | 40 | 700 + 2400 | 2 | 1100 | 2400 | 1.0000000 | 1401-01-01 | 40 | 100 + 0 | 3 | 1 | 0 | 1.0000000 | 1401-04-01 | 40 | 200 + 0 | 1 | 1 | 0 | 1.0000000 | 1401-05-01 | 20 | 100 + 0 | 1 | 1 | 0 | 1.0000000 | 1401-05-02 | 30 | 300 + 0 | 1 | 1 | 0 | 1.0000000 | 1401-06-01 | 50 | 400 + 0 | 2 | 1 | 0 | 2.0000000 | 1401-06-01 | 50 | 400 + 5 | 1 | 12 | 5 | 1.0000000 | 1401-06-01 | 30 | 500 + 5 | 3 | 12 | 5 | 2.0000000 | 1401-06-01 | 30 | 500 + 1 | 4 | 1 | 1 | 1.0000000 | 1401-06-01 | 40 | 800 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn*ow_sale.qty),floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows between unbounded preceding and floor(ow_sale.pn+ow_sale.prc) preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.cn asc); -- mvd 3,1->2; 3->4; 6->5; 3->7; + qty | to_char | vn | to_char | to_char | cn | to_char +------+-------------------+----+-------------------+-------------------+----+------------------- + 1 | .0000000 | 10 | 12.0000000 | 1.0000000 | 1 | 12.0000000 + 1 | .0000000 | 50 | 2.0000000 | 1.0000000 | 1 | 2.0000000 + 12 | .0000000 | 30 | 7.0000000 | 1.0000000 | 1 | 10.0000000 + 1 | .0000000 | 30 | 10.0000000 | 1.0000000 | 1 | 10.0000000 + 1 | .0000000 | 20 | 11.0000000 | 1.0000000 | 1 | 11.0000000 + 1 | .0000000 | 50 | 1.0000000 | 6.0000000 | 2 | 2.0000000 + 1100 | .0000000 | 40 | 6.0000000 | 6.0000000 | 2 | 6.0000000 + 12 | .0000000 | 30 | 9.0000000 | 8.0000000 | 3 | 10.0000000 + 12 | .0000000 | 30 | 8.0000000 | 8.0000000 | 3 | 10.0000000 + 1 | .0000000 | 40 | 4.0000000 | 8.0000000 | 3 | 6.0000000 + 1 | .0000000 | 40 | 5.0000000 | 11.0000000 | 4 | 6.0000000 + 1 | .0000000 | 40 | 3.0000000 | 11.0000000 | 4 | 6.0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn*ow_sale.prc),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and current row ); -- mvd 1,2->5; + prc | vn | vn | vn | to_char +------+----+----+----+------------------- + 1 | 40 | 40 | 40 | 1.0000000 + 1 | 40 | 40 | 40 | 2.0000000 + 0 | 10 | 10 | 10 | 1.0000000 + 0 | 20 | 20 | 20 | 1.0000000 + 0 | 30 | 30 | 30 | 1.0000000 + 5 | 30 | 30 | 30 | 1.0000000 + 5 | 30 | 30 | 30 | 2.0000000 + 5 | 30 | 30 | 30 | 3.0000000 + 0 | 40 | 40 | 40 | 1.0000000 + 2400 | 40 | 40 | 40 | 1.0000000 + 0 | 50 | 50 | 50 | 1.0000000 + 0 | 50 | 50 | 50 | 2.0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.cn order by ow_sale.cn asc); -- mvd 2,6,4,3->7; 2->8; + qty | cn | pn | vn | pn | dt | to_char | to_char +------+----+-----+----+-----+------------+-------------------+------------------- + 1 | 1 | 200 | 10 | 200 | 1401-03-01 | 1.0000000 | 1.0000000 + 1 | 1 | 300 | 30 | 300 | 1401-05-02 | 1.0000000 | 1.0000000 + 1 | 1 | 400 | 50 | 400 | 1401-06-01 | 1.0000000 | 1.0000000 + 12 | 1 | 500 | 30 | 500 | 1401-06-01 | 1.0000000 | 1.0000000 + 1 | 1 | 100 | 20 | 100 | 1401-05-01 | 1.0000000 | 1.0000000 + 1 | 3 | 200 | 40 | 200 | 1401-04-01 | 1.0000000 | 1.0000000 + 12 | 3 | 500 | 30 | 500 | 1401-06-01 | 1.0000000 | 1.0000000 + 12 | 3 | 600 | 30 | 600 | 1401-06-01 | 1.0000000 | 1.0000000 + 1 | 2 | 400 | 50 | 400 | 1401-06-01 | 1.0000000 | 1.0000000 + 1100 | 2 | 100 | 40 | 100 | 1401-01-01 | 1.0000000 | 1.0000000 + 1 | 4 | 800 | 40 | 800 | 1401-06-01 | 1.0000000 | 1.0000000 + 1 | 4 | 700 | 40 | 700 | 1401-06-01 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and unbounded following ); -- mvd 5,6,1,3->4; + qty | dt | pn | to_char | prc | cn +------+------------+-----+-------------------+------+---- + 1 | 1401-05-02 | 300 | 1.0000000 | 0 | 1 + 1 | 1401-06-01 | 400 | 1.0000000 | 0 | 1 + 12 | 1401-06-01 | 600 | 1.0000000 | 5 | 3 + 1 | 1401-06-01 | 800 | 1.0000000 | 1 | 4 + 1 | 1401-05-01 | 100 | 1.0000000 | 0 | 1 + 1100 | 1401-01-01 | 100 | 1.0000000 | 2400 | 2 + 1 | 1401-03-01 | 200 | 1.0000000 | 0 | 1 + 1 | 1401-04-01 | 200 | 1.0000000 | 0 | 3 + 1 | 1401-06-01 | 400 | 1.0000000 | 0 | 2 + 12 | 1401-06-01 | 500 | 1.0000000 | 5 | 1 + 12 | 1401-06-01 | 500 | 1.0000000 | 5 | 3 + 1 | 1401-06-01 | 700 | 1.0000000 | 1 | 4 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between unbounded preceding and unbounded following ); -- mvd 1,4,2->5; 1,4,2->6; 1,4,2->7; + dt | pn | pn | cn | to_char | to_char | to_char +------------+-----+-----+----+-------------------+-------------------+------------------- + 1401-05-01 | 100 | 100 | 1 | 1.0000000 | .0000000 | 1.0000000 + 1401-06-01 | 400 | 400 | 2 | 1.0000000 | .0000000 | 2.0000000 + 1401-04-01 | 200 | 200 | 3 | 1.0000000 | .0000000 | 3.0000000 + 1401-06-01 | 700 | 700 | 4 | 2.0000000 | 1.0000000 | 4.0000000 + 1401-06-01 | 800 | 800 | 4 | 2.0000000 | 1.0000000 | 4.0000000 + 1401-03-01 | 200 | 200 | 1 | 1.0000000 | .0000000 | 1.0000000 + 1401-05-02 | 300 | 300 | 1 | 1.0000000 | .0000000 | 1.0000000 + 1401-06-01 | 400 | 400 | 1 | 2.0000000 | 5.0000000 | 1.0000000 + 1401-06-01 | 500 | 500 | 1 | 2.0000000 | 5.0000000 | 1.0000000 + 1401-01-01 | 100 | 100 | 2 | 1.0000000 | 2400.0000000 | 2.0000000 + 1401-06-01 | 500 | 500 | 3 | 2.0000000 | 5.0000000 | 3.0000000 + 1401-06-01 | 600 | 600 | 3 | 2.0000000 | 5.0000000 | 3.0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn-ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.dt,ow_sale.prc,ow_sale.dt order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between 4 preceding and floor(ow_sale.vn) preceding ), +win2 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.dt order by ow_sale.vn asc); -- mvd 1,3,2->5; 7,8,3->6; 7,8,3->9; + cn | qty | vn | vn | to_char | to_char | prc | dt | to_char +----+------+----+----+-------------------+-------------------+------+------------+------------------- + 1 | 1 | 10 | 10 | .0000000 | .0000000 | 0 | 1401-03-01 | 1.0000000 + 1 | 1 | 20 | 20 | .0000000 | .0000000 | 0 | 1401-05-01 | 1.0000000 + 1 | 1 | 30 | 30 | .0000000 | .0000000 | 0 | 1401-05-02 | 1.0000000 + 3 | 1 | 40 | 40 | .0000000 | .0000000 | 0 | 1401-04-01 | 1.0000000 + 4 | 1 | 40 | 40 | .0000000 | .0000000 | 1 | 1401-06-01 | 2.0000000 + 4 | 1 | 40 | 40 | .0000000 | .0000000 | 1 | 1401-06-01 | 1.0000000 + 1 | 1 | 50 | 50 | .0000000 | .0000000 | 0 | 1401-06-01 | 2.0000000 + 2 | 1 | 50 | 50 | .0000000 | .0000000 | 0 | 1401-06-01 | 1.0000000 + 1 | 12 | 30 | 30 | .0000000 | .0000000 | 5 | 1401-06-01 | 2.0000000 + 3 | 12 | 30 | 30 | .0000000 | .0000000 | 5 | 1401-06-01 | 3.0000000 + 3 | 12 | 30 | 30 | .0000000 | .0000000 | 5 | 1401-06-01 | 1.0000000 + 2 | 1100 | 40 | 40 | .0000000 | .0000000 | 2400 | 1401-01-01 | 1.0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.prc/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows between 1 preceding and current row ); -- mvd 5,6,7,1,8->4; + vn | pn | pn | to_char | prc | cn | dt | qty +----+-----+-----+-------------------+------+----+------------+------ + 10 | 200 | 200 | 1.0000000 | 0 | 1 | 1401-03-01 | 1 + 30 | 300 | 300 | 1.0000000 | 0 | 1 | 1401-05-02 | 1 + 50 | 400 | 400 | 1.0000000 | 0 | 1 | 1401-06-01 | 1 + 40 | 700 | 700 | 1.0000000 | 1 | 4 | 1401-06-01 | 1 + 40 | 800 | 800 | 2.0000000 | 1 | 4 | 1401-06-01 | 1 + 40 | 200 | 200 | 1.0000000 | 0 | 3 | 1401-04-01 | 1 + 20 | 100 | 100 | 1.0000000 | 0 | 1 | 1401-05-01 | 1 + 50 | 400 | 400 | 1.0000000 | 0 | 2 | 1401-06-01 | 1 + 30 | 500 | 500 | 1.0000000 | 5 | 1 | 1401-06-01 | 12 + 30 | 500 | 500 | 1.0000000 | 5 | 3 | 1401-06-01 | 12 + 30 | 600 | 600 | 2.0000000 | 5 | 3 | 1401-06-01 | 12 + 40 | 100 | 100 | 1.0000000 | 2400 | 2 | 1401-01-01 | 1100 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc rows between floor(ow_sale.vn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.pn/ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc rows between floor(ow_sale.vn) preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 6,1,7->5; 6,1,7->8; 6,1,7->9; 7->10; 7->11; 7->12; + dt | cn | cn | qty | to_char | prc | pn | to_char | to_char | to_char | to_char | to_char +------------+----+----+------+-------------------+------+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 1401-01-01 | 2 | 2 | 1100 | 1.0000000 | 2400 | 100 | 38.0000000 | 4800.0000000 | .0000000 | .0000000 | 1.0000000 + 1401-03-01 | 1 | 1 | 1 | 1.0000000 | 0 | 200 | 9.0000000 | .0000000 | .0000000 | .0000000 | 2.0000000 + 1401-04-01 | 3 | 3 | 1 | 1.0000000 | 0 | 200 | 37.0000000 | .0000000 | 2.0000000 | .0000000 | 3.0000000 + 1401-05-01 | 1 | 1 | 1 | 1.0000000 | 0 | 100 | 19.0000000 | .0000000 | .0000000 | .0000000 | 4.0000000 + 1401-05-02 | 1 | 1 | 1 | 1.0000000 | 0 | 300 | 29.0000000 | .0000000 | .0000000 | .0000000 | 5.0000000 + 1401-06-01 | 1 | 1 | 1 | 1.0000000 | 0 | 400 | 49.0000000 | .0000000 | .0000000 | .0000000 | 6.0000000 + 1401-06-01 | 2 | 2 | 1 | 2.0000000 | 0 | 400 | 48.0000000 | .0000000 | 1.0000000 | 5.0000000 | 7.0000000 + 1401-06-01 | 1 | 1 | 12 | 1.0000000 | 5 | 500 | 29.0000000 | 5.0000000 | .0000000 | 5.0000000 | 8.0000000 + 1401-06-01 | 3 | 3 | 12 | 2.0000000 | 5 | 500 | 27.0000000 | 15.0000000 | .0000000 | 5.0000000 | 9.0000000 + 1401-06-01 | 3 | 3 | 12 | 1.0000000 | 5 | 600 | 27.0000000 | 15.0000000 | .0000000 | 1.0000000 | 10.0000000 + 1401-06-01 | 4 | 4 | 1 | 1.0000000 | 1 | 700 | 36.0000000 | 4.0000000 | 3.0000000 | 1.0000000 | 11.0000000 + 1401-06-01 | 4 | 4 | 1 | 1.0000000 | 1 | 800 | 36.0000000 | 4.0000000 | .0000000 | .0000000 | 12.0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn asc rows between 7 preceding and floor(ow_sale.prc*ow_sale.cn) following ); -- mvd 5,3,6,7->4; + qty | qty | dt | to_char | cn | vn | pn +------+------+------------+-------------------+----+----+----- + 1 | 1 | 1401-03-01 | 1.0000000 | 1 | 10 | 200 + 12 | 12 | 1401-06-01 | 1.0000000 | 3 | 30 | 600 + 1 | 1 | 1401-06-01 | 1.0000000 | 4 | 40 | 700 + 1100 | 1100 | 1401-01-01 | 1.0000000 | 2 | 40 | 100 + 1 | 1 | 1401-04-01 | 1.0000000 | 3 | 40 | 200 + 1 | 1 | 1401-05-01 | 1.0000000 | 1 | 20 | 100 + 1 | 1 | 1401-05-02 | 1.0000000 | 1 | 30 | 300 + 1 | 1 | 1401-06-01 | 1.0000000 | 1 | 50 | 400 + 1 | 1 | 1401-06-01 | 2.0000000 | 2 | 50 | 400 + 12 | 12 | 1401-06-01 | 2.0000000 | 1 | 30 | 500 + 12 | 12 | 1401-06-01 | 2.0000000 | 3 | 30 | 500 + 1 | 1 | 1401-06-01 | 1.0000000 | 4 | 40 | 800 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc*ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.cn asc rows between floor(ow_sale.pn-ow_sale.pn) preceding and unbounded following ); -- mvd 5,1,3,6->4; + cn | qty | vn | to_char | dt | pn +----+------+----+-------------------+------------+----- + 1 | 1 | 20 | 1.0000000 | 1401-05-01 | 100 + 1 | 1 | 10 | 1.0000000 | 1401-03-01 | 200 + 2 | 1 | 50 | 1.0000000 | 1401-06-01 | 400 + 3 | 1 | 40 | 1.0000000 | 1401-04-01 | 200 + 3 | 12 | 30 | 1.0000000 | 1401-06-01 | 600 + 4 | 1 | 40 | 1.0000000 | 1401-06-01 | 800 + 1 | 1 | 30 | 1.0000000 | 1401-05-02 | 300 + 1 | 1 | 50 | 1.0000000 | 1401-06-01 | 400 + 1 | 12 | 30 | 1.0000000 | 1401-06-01 | 500 + 2 | 1100 | 40 | 1.0000000 | 1401-01-01 | 100 + 3 | 12 | 30 | 1.0000000 | 1401-06-01 | 500 + 4 | 1 | 40 | 1.0000000 | 1401-06-01 | 700 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc,ow_sale.cn asc rows between 1 preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 5,1,6,3->4; 3->7; 3->8; + cn | cn | vn | to_char | dt | qty | to_char | to_char +----+----+----+-------------------+------------+------+-------------------+------------------- + 2 | 2 | 40 | 1.0000000 | 1401-01-01 | 1100 | .0000000 | .0000000 + 1 | 1 | 10 | 1.0000000 | 1401-03-01 | 1 | 38.0000000 | 40.0000000 + 3 | 3 | 40 | 1.0000000 | 1401-04-01 | 1 | 9.0000000 | .0000000 + 1 | 1 | 20 | 1.0000000 | 1401-05-01 | 1 | 37.0000000 | 40.0000000 + 1 | 1 | 30 | 1.0000000 | 1401-05-02 | 1 | 19.0000000 | 20.0000000 + 1 | 1 | 50 | 1.0000000 | 1401-06-01 | 1 | 29.0000000 | 30.0000000 + 2 | 2 | 50 | 1.0000000 | 1401-06-01 | 1 | 49.0000000 | 30.0000000 + 1 | 1 | 30 | 1.0000000 | 1401-06-01 | 12 | .0000000 | 50.0000000 + 3 | 3 | 30 | 2.0000000 | 1401-06-01 | 12 | .0000000 | 50.0000000 + 3 | 3 | 30 | 2.0000000 | 1401-06-01 | 12 | .0000000 | 50.0000000 + 4 | 4 | 40 | 2.0000000 | 1401-06-01 | 1 | 27.0000000 | 50.0000000 + 4 | 4 | 40 | 2.0000000 | 1401-06-01 | 1 | 36.0000000 | 30.0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between current row and current row ); -- mvd 2,4->3; + pn | cn | to_char | qty +-----+----+-------------------+------ + 500 | 1 | 1.0000000 | 12 + 400 | 2 | 1.0000000 | 1 + 500 | 3 | 1.0000000 | 12 + 600 | 3 | 1.0000000 | 12 + 700 | 4 | 1.0000000 | 1 + 800 | 4 | 1.0000000 | 1 + 200 | 1 | 1.0000000 | 1 + 100 | 1 | 1.0000000 | 1 + 300 | 1 | 1.0000000 | 1 + 400 | 1 | 1.0000000 | 1 + 100 | 2 | 1.0000000 | 1100 + 200 | 3 | 1.0000000 | 1 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn+ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn+ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn/ow_sale.cn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc rows between current row and current row ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.dt order by ow_sale.cn asc), +win4 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc), +win5 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.vn desc); -- mvd 7,4->6; 4->8; 10,7,1,4->9; 4->11; 13,10,1,4->12; 10,2->14; + qty | vn | vn | pn | qty | to_char | dt | to_char | to_char | cn | to_char | to_char | prc | to_char +------+----+----+-----+------+-------------------+------------+-------------------+-------------------+----+-------------------+-------------------+------+------------------- + 1 | 40 | 40 | 800 | 1 | 1.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 4 | -3.0000000 | .0000000 | 1 | .0000000 + 1 | 40 | 40 | 700 | 1 | 1.0000000 | 1401-06-01 | 2.0000000 | 1.0000000 | 4 | -3.0000000 | .0000000 | 1 | .0000000 + 12 | 30 | 30 | 600 | 12 | 1.0000000 | 1401-06-01 | 3.0000000 | 1.0000000 | 3 | 9.0000000 | .0000000 | 5 | .0000000 + 12 | 30 | 30 | 500 | 12 | 1.0000000 | 1401-06-01 | 4.0000000 | 1.0000000 | 1 | 11.0000000 | .0000000 | 5 | .0000000 + 12 | 30 | 30 | 500 | 12 | 1.0000000 | 1401-06-01 | 4.0000000 | 2.0000000 | 3 | 11.0000000 | .0000000 | 5 | .0000000 + 1 | 50 | 50 | 400 | 1 | 1.0000000 | 1401-06-01 | 6.0000000 | 2.0000000 | 2 | 11.0000000 | .0000000 | 0 | .0000000 + 1 | 50 | 50 | 400 | 1 | 1.0000000 | 1401-06-01 | 6.0000000 | 1.0000000 | 1 | 11.0000000 | .0000000 | 0 | .0000000 + 1 | 30 | 30 | 300 | 1 | 1.0000000 | 1401-05-02 | 8.0000000 | 1.0000000 | 1 | 11.0000000 | .0000000 | 0 | .0000000 + 1 | 10 | 10 | 200 | 1 | 1.0000000 | 1401-03-01 | 9.0000000 | 1.0000000 | 1 | 11.0000000 | .0000000 | 0 | .0000000 + 1 | 40 | 40 | 200 | 1 | 1.0000000 | 1401-04-01 | 9.0000000 | 1.0000000 | 3 | 11.0000000 | .0000000 | 0 | .0000000 + 1100 | 40 | 40 | 100 | 1100 | 1.0000000 | 1401-01-01 | 11.0000000 | 1.0000000 | 2 | 1098.0000000 | .0000000 | 2400 | .0000000 + 1 | 20 | 20 | 100 | 1 | 1.0000000 | 1401-05-01 | 11.0000000 | 1.0000000 | 1 | 1098.0000000 | .0000000 | 0 | .0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows between current row and floor(ow_sale.prc) following ); -- mvd 3,6,7,2->5; + prc | pn | cn | dt | to_char | qty | vn +------+-----+----+------------+-------------------+------+---- + 0 | 200 | 1 | 1401-03-01 | 1.0000000 | 1 | 10 + 0 | 100 | 1 | 1401-05-01 | 1.0000000 | 1 | 20 + 5 | 500 | 1 | 1401-06-01 | 2.0000000 | 12 | 30 + 5 | 500 | 3 | 1401-06-01 | 1.0000000 | 12 | 30 + 0 | 200 | 3 | 1401-04-01 | 1.0000000 | 1 | 40 + 1 | 700 | 4 | 1401-06-01 | 1.0000000 | 1 | 40 + 0 | 300 | 1 | 1401-05-02 | 1.0000000 | 1 | 30 + 5 | 600 | 3 | 1401-06-01 | 1.0000000 | 12 | 30 + 1 | 800 | 4 | 1401-06-01 | 1.0000000 | 1 | 40 + 2400 | 100 | 2 | 1401-01-01 | 1.0000000 | 1100 | 40 + 0 | 400 | 1 | 1401-06-01 | 1.0000000 | 1 | 50 + 0 | 400 | 2 | 1401-06-01 | 1.0000000 | 1 | 50 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.pn asc rows between current row and floor(ow_sale.qty) following ), +win2 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.pn asc); -- mvd 5,2,3,1->4; 7,3,1->6; + pn | dt | vn | to_char | cn | to_char | prc +-----+------------+----+-------------------+----+-------------------+------ + 200 | 1401-03-01 | 10 | 1.0000000 | 1 | 1.0000000 | 0 + 300 | 1401-05-02 | 30 | 1.0000000 | 1 | 1.0000000 | 0 + 500 | 1401-06-01 | 30 | 3.0000000 | 1 | 1.0000000 | 5 + 500 | 1401-06-01 | 30 | 2.0000000 | 3 | 1.0000000 | 5 + 600 | 1401-06-01 | 30 | 1.0000000 | 3 | 1.0000000 | 5 + 700 | 1401-06-01 | 40 | 2.0000000 | 4 | 1.0000000 | 1 + 800 | 1401-06-01 | 40 | 1.0000000 | 4 | 1.0000000 | 1 + 400 | 1401-06-01 | 50 | 2.0000000 | 1 | 1.0000000 | 0 + 400 | 1401-06-01 | 50 | 1.0000000 | 2 | 1.0000000 | 0 + 100 | 1401-05-01 | 20 | 1.0000000 | 1 | 1.0000000 | 0 + 100 | 1401-01-01 | 40 | 1.0000000 | 2 | 1.0000000 | 2400 + 200 | 1401-04-01 | 40 | 1.0000000 | 3 | 1.0000000 | 0 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn+ow_sale.qty),floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between current row and unbounded following ); -- mvd 1,5,3->4; + cn | prc | vn | to_char | dt +----+------+----+-------------------+------------ + 1 | 0 | 10 | 1.0000000 | 1401-03-01 + 1 | 0 | 30 | 1.0000000 | 1401-05-02 + 1 | 5 | 30 | 3.0000000 | 1401-06-01 + 3 | 5 | 30 | 2.0000000 | 1401-06-01 + 3 | 5 | 30 | 1.0000000 | 1401-06-01 + 4 | 1 | 40 | 2.0000000 | 1401-06-01 + 4 | 1 | 40 | 1.0000000 | 1401-06-01 + 1 | 0 | 50 | 2.0000000 | 1401-06-01 + 2 | 0 | 50 | 1.0000000 | 1401-06-01 + 1 | 0 | 20 | 1.0000000 | 1401-05-01 + 2 | 2400 | 40 | 1.0000000 | 1401-01-01 + 3 | 0 | 40 | 1.0000000 | 1401-04-01 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc*ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn*ow_sale.qty) as int),cast (floor(ow_sale.cn+ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows between current row and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc); -- mvd 1,6,7->5; 1,6,7->8; 6,1,7->9; + cn | qty | vn | prc | to_char | dt | pn | to_char | to_char +----+------+----+------+-------------------+------------+-----+-------------------+------------------- + 1 | 1 | 10 | 0 | 1.0000000 | 1401-03-01 | 200 | 1.0000000 | .0000000 + 3 | 12 | 30 | 5 | 1.0000000 | 1401-06-01 | 600 | 1.0000000 | .0000000 + 4 | 1 | 40 | 1 | 1.0000000 | 1401-06-01 | 700 | 1.0000000 | .0000000 + 2 | 1100 | 40 | 2400 | 1.0000000 | 1401-01-01 | 100 | 1.0000000 | .0000000 + 1 | 1 | 20 | 0 | 1.0000000 | 1401-05-01 | 100 | 1.0000000 | .0000000 + 3 | 1 | 40 | 0 | 1.0000000 | 1401-04-01 | 200 | 1.0000000 | .0000000 + 1 | 1 | 30 | 0 | 1.0000000 | 1401-05-02 | 300 | 1.0000000 | .0000000 + 1 | 1 | 50 | 0 | 2.0000000 | 1401-06-01 | 400 | 2.0000000 | .0000000 + 2 | 1 | 50 | 0 | 1.0000000 | 1401-06-01 | 400 | 1.0000000 | .0000000 + 1 | 12 | 30 | 5 | 2.0000000 | 1401-06-01 | 500 | 2.0000000 | .0000000 + 3 | 12 | 30 | 5 | 1.0000000 | 1401-06-01 | 500 | 1.0000000 | .0000000 + 4 | 1 | 40 | 1 | 1.0000000 | 1401-06-01 | 800 | 1.0000000 | .0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.cn*ow_sale.pn) following and 6 following ); -- mvd 4,5,2->3; + qty | pn | to_char | cn | vn +------+-----+-------------------+----+---- + 1 | 100 | .0000000 | 1 | 20 + 1 | 200 | .0000000 | 1 | 10 + 1 | 200 | .0000000 | 3 | 40 + 1 | 400 | .0000000 | 2 | 50 + 12 | 600 | .0000000 | 3 | 30 + 1 | 800 | .0000000 | 4 | 40 + 1100 | 100 | .0000000 | 2 | 40 + 1 | 300 | .0000000 | 1 | 30 + 1 | 400 | .0000000 | 1 | 50 + 12 | 500 | .0000000 | 1 | 30 + 12 | 500 | .0000000 | 3 | 30 + 1 | 700 | .0000000 | 4 | 40 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn*ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.cn) following and floor(ow_sale.vn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.cn) following and floor(ow_sale.vn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.cn) following and floor(ow_sale.vn) following ), +win2 as (order by ow_sale.cn asc); -- mvd 3,4,1,5->2; 3,4,1,5->6; 3,4,1,5->7; 3->8; 3,4,1,5->9; + qty | to_char | cn | dt | pn | to_char | to_char | to_char | to_char +------+-------------------+----+------------+-----+-------------------+-------------------+-------------------+------------------- + 1 | 1.0000000 | 1 | 1401-06-01 | 400 | 2.0000000 | .0000000 | .0000000 | 1.0000000 + 1 | .0000000 | 1 | 1401-05-02 | 300 | .0000000 | .0000000 | .0000000 | .0000000 + 1 | .0000000 | 1 | 1401-05-01 | 100 | .0000000 | .0000000 | .0000000 | .0000000 + 1 | .0000000 | 1 | 1401-03-01 | 200 | .0000000 | .0000000 | .0000000 | .0000000 + 12 | 1.0000000 | 1 | 1401-06-01 | 500 | 3.0000000 | .0000000 | .0000000 | 1.0000000 + 1100 | .0000000 | 2 | 1401-01-01 | 100 | .0000000 | .0000000 | .4545455 | .0000000 + 1 | .0000000 | 2 | 1401-06-01 | 400 | .0000000 | .0000000 | .4545455 | .0000000 + 1 | .0000000 | 3 | 1401-04-01 | 200 | .0000000 | .0000000 | .6363636 | .0000000 + 12 | .0000000 | 3 | 1401-06-01 | 600 | .0000000 | .0000000 | .6363636 | .0000000 + 12 | .0000000 | 3 | 1401-06-01 | 500 | .0000000 | .0000000 | .6363636 | .0000000 + 1 | .0000000 | 4 | 1401-06-01 | 700 | .0000000 | .0000000 | .9090909 | .0000000 + 1 | .0000000 | 4 | 1401-06-01 | 800 | .0000000 | .0000000 | .9090909 | .0000000 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows between 8 following and unbounded following ); -- mvd 4,2,5->3; + pn | qty | to_char | cn | vn +-----+------+-------------------+----+---- + 500 | 12 | .0000000 | 1 | 30 + 500 | 12 | .0000000 | 3 | 30 + 600 | 12 | .0000000 | 3 | 30 + 700 | 1 | .0000000 | 4 | 40 + 800 | 1 | .0000000 | 4 | 40 + 400 | 1 | .0000000 | 2 | 50 + 200 | 1 | .0000000 | 1 | 10 + 100 | 1 | .0000000 | 1 | 20 + 300 | 1 | .0000000 | 1 | 30 + 200 | 1 | .0000000 | 3 | 40 + 100 | 1100 | .0000000 | 2 | 40 + 400 | 1 | .0000000 | 1 | 50 +(12 rows) + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn+ow_sale.cn),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty/ow_sale.cn) as int),cast (floor(ow_sale.pn-ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.prc) following and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.prc) following and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc); -- mvd 4,5,2->3; 7,4,5,2->6; 4,5,2->8; + qty | pn | to_char | cn | vn | to_char | prc | to_char +------+-----+-------------------+----+----+-------------------+------+------------------- + 1 | 200 | 1.0000000 | 1 | 10 | 1.0000000 | 0 | 1.0000000 + 1 | 100 | 1.0000000 | 1 | 20 | 1.0000000 | 0 | 1.0000000 + 1 | 300 | 2.0000000 | 1 | 30 | 1.0000000 | 0 | 2.0000000 + 12 | 500 | .0000000 | 1 | 30 | 12.0000000 | 5 | .0000000 + 1 | 400 | 1.0000000 | 1 | 50 | 1.0000000 | 0 | 1.0000000 + 12 | 500 | .0000000 | 3 | 30 | 4.0000000 | 5 | .0000000 + 12 | 600 | .0000000 | 3 | 30 | 4.0000000 | 5 | .0000000 + 1 | 200 | 1.0000000 | 3 | 40 | .0000000 | 0 | 1.0000000 + 1100 | 100 | .0000000 | 2 | 40 | 550.0000000 | 2400 | .0000000 + 1 | 400 | 1.0000000 | 2 | 50 | .0000000 | 0 | 1.0000000 + 1 | 700 | 1.0000000 | 4 | 40 | .0000000 | 1 | 1.0000000 + 1 | 800 | .0000000 | 4 | 40 | .0000000 | 1 | .0000000 +(12 rows) + +-- REGR_INTERCEPT() function with NULL OVER() clause in combination with other window functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn+ow_sale.cn),floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (), +win2 as (order by ow_sale.cn asc); -- mvd 7->7; 2->8; 2->9; + vn | cn | pn | cn | vn | qty | to_char | to_char | to_char +----+----+-----+----+----+------+-------------------+-------------------+------------------- + 20 | 1 | 100 | 1 | 20 | 1 | 35.6625368 | 1.0000000 | 1.0000000 + 10 | 1 | 200 | 1 | 10 | 1 | 35.6625368 | 2.0000000 | 2.0000000 + 30 | 1 | 300 | 1 | 30 | 1 | 35.6625368 | 3.0000000 | 3.0000000 + 50 | 1 | 400 | 1 | 50 | 1 | 35.6625368 | 4.0000000 | 4.0000000 + 30 | 1 | 500 | 1 | 30 | 12 | 35.6625368 | 5.0000000 | 5.0000000 + 40 | 2 | 100 | 2 | 40 | 1100 | 35.6625368 | 6.0000000 | 6.0000000 + 50 | 2 | 400 | 2 | 50 | 1 | 35.6625368 | 7.0000000 | 7.0000000 + 40 | 3 | 200 | 3 | 40 | 1 | 35.6625368 | 8.0000000 | 8.0000000 + 30 | 3 | 600 | 3 | 30 | 12 | 35.6625368 | 9.0000000 | 9.0000000 + 30 | 3 | 500 | 3 | 30 | 12 | 35.6625368 | 10.0000000 | 10.0000000 + 40 | 4 | 700 | 4 | 40 | 1 | 35.6625368 | 11.0000000 | 11.0000000 + 40 | 4 | 800 | 4 | 40 | 1 | 35.6625368 | 12.0000000 | 12.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with OVER() clause having ONLY PARTITION BY -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn-ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.cn); -- mvd 5,1,8->7; + cn | cn | pn | dt | prc | qty | to_char | vn +----+----+-----+------------+------+------+-------------------+---- + 1 | 1 | 200 | 1401-03-01 | 0 | 1 | .0000000 | 10 + 1 | 1 | 100 | 1401-05-01 | 0 | 1 | .0000000 | 20 + 1 | 1 | 300 | 1401-05-02 | 0 | 1 | .0000000 | 30 + 1 | 1 | 500 | 1401-06-01 | 5 | 12 | .0000000 | 30 + 3 | 3 | 600 | 1401-06-01 | 5 | 12 | .0000000 | 30 + 3 | 3 | 500 | 1401-06-01 | 5 | 12 | .0000000 | 30 + 3 | 3 | 200 | 1401-04-01 | 0 | 1 | .0000000 | 40 + 4 | 4 | 800 | 1401-06-01 | 1 | 1 | .0000000 | 40 + 4 | 4 | 700 | 1401-06-01 | 1 | 1 | .0000000 | 40 + 1 | 1 | 400 | 1401-06-01 | 0 | 1 | .0000000 | 50 + 2 | 2 | 100 | 1401-01-01 | 2400 | 1100 | .0000000 | 40 + 2 | 2 | 400 | 1401-06-01 | 0 | 1 | .0000000 | 50 +(12 rows) + +-- REGR_INTERCEPT() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn+ow_sale.vn),floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.qty order by ow_sale.pn desc); -- mvd 3->4; 6->5; 1,6->7; + qty | cn | dt | to_char | to_char | pn | to_char +------+----+------------+-------------------+-------------------+-----+------------------- + 1100 | 2 | 1401-01-01 | .0000000 | .0000000 | 100 | .0000000 + 1 | 1 | 1401-03-01 | .0000000 | 40.0000000 | 200 | .7142857 + 1 | 3 | 1401-04-01 | .0000000 | .0000000 | 200 | .7142857 + 1 | 1 | 1401-05-01 | .0000000 | 40.0000000 | 100 | 1.0000000 + 1 | 1 | 1401-05-02 | .0000000 | 20.0000000 | 300 | .5714286 + 1 | 1 | 1401-06-01 | 37.0222424 | 30.0000000 | 400 | .2857143 + 1 | 2 | 1401-06-01 | 37.0222424 | 30.0000000 | 400 | .2857143 + 12 | 1 | 1401-06-01 | 37.0222424 | 50.0000000 | 500 | .5000000 + 12 | 3 | 1401-06-01 | 37.0222424 | 50.0000000 | 500 | .5000000 + 12 | 3 | 1401-06-01 | 37.0222424 | 50.0000000 | 600 | .0000000 + 1 | 4 | 1401-06-01 | 37.0222424 | 50.0000000 | 700 | .1428571 + 1 | 4 | 1401-06-01 | 37.0222424 | 30.0000000 | 800 | .0000000 +(12 rows) + +-- REGR_INTERCEPT() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty-ow_sale.qty),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc); -- mvd 4->3; + vn | prc | to_char | cn +----+------+-------------------+---- + 20 | 0 | .0000000 | 1 + 10 | 0 | .0000000 | 1 + 30 | 0 | .0000000 | 1 + 50 | 0 | .0000000 | 1 + 30 | 5 | .0000000 | 1 + 40 | 2400 | .0000000 | 2 + 50 | 0 | .0000000 | 2 + 40 | 0 | .0000000 | 3 + 30 | 5 | .0000000 | 3 + 30 | 5 | .0000000 | 3 + 40 | 1 | .0000000 | 4 + 40 | 1 | .0000000 | 4 +(12 rows) + +-- REGR_INTERCEPT() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc/ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc/ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc), +win2 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 7->6; 7->8; 7->9; 7->10; 7->11; 7->12; + qty | vn | qty | vn | qty | to_char | pn | to_char | to_char | to_char | to_char | to_char +------+----+------+----+------+-------------------+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 1100 | 40 | 1100 | 40 | 1100 | .1806898 | 100 | 12.0000000 | 12.0000000 | 12.0000000 | .0000000 | .0833333 + 1 | 10 | 1 | 10 | 1 | .2494802 | 200 | 9.0000000 | 10.0000000 | 9.0000000 | 1.0000000 | .1666667 + 1 | 40 | 1 | 40 | 1 | .2494802 | 200 | 10.0000000 | 10.0000000 | 10.0000000 | 1.0000000 | .2500000 + 1 | 20 | 1 | 20 | 1 | .1806898 | 100 | 11.0000000 | 12.0000000 | 11.0000000 | 1.0000000 | .3333333 + 1 | 30 | 1 | 30 | 1 | .3669725 | 300 | 8.0000000 | 8.0000000 | 8.0000000 | 1.0000000 | .4166667 + 1 | 50 | 1 | 50 | 1 | .4800000 | 400 | 6.0000000 | 7.0000000 | 6.0000000 | 1.0000000 | .5000000 + 1 | 50 | 1 | 50 | 1 | .4800000 | 400 | 7.0000000 | 7.0000000 | 7.0000000 | 1.0000000 | .5833333 + 12 | 30 | 12 | 30 | 12 | 1.2500000 | 500 | 4.0000000 | 5.0000000 | 4.0000000 | .0000000 | .6666667 + 12 | 30 | 12 | 30 | 12 | 1.2500000 | 500 | 5.0000000 | 5.0000000 | 5.0000000 | 12.0000000 | .7500000 + 12 | 30 | 12 | 30 | 12 | 1.2500000 | 600 | 3.0000000 | 3.0000000 | 3.0000000 | 1.0000000 | .8333333 + 1 | 40 | 1 | 40 | 1 | .0000000 | 700 | 2.0000000 | 2.0000000 | 2.0000000 | 1.0000000 | .9166667 + 1 | 40 | 1 | 40 | 1 | .0000000 | 800 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ); -- mvd 2->3; + vn | cn | to_char +----+----+------------------- + 40 | 4 | 4.0000000 + 40 | 4 | 4.0000000 + 30 | 3 | 2.4667283 + 40 | 3 | 2.4667283 + 30 | 3 | 2.4667283 + 50 | 2 | 1.9805462 + 40 | 2 | 1.9805462 + 30 | 1 | 1.1344492 + 50 | 1 | 1.1344492 + 30 | 1 | 1.1344492 + 10 | 1 | 1.1344492 + 20 | 1 | 1.1344492 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc+ow_sale.prc),floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range floor(ow_sale.vn+ow_sale.vn) preceding ); -- mvd 6->5; + vn | cn | cn | cn | to_char | pn +----+----+----+----+-------------------+----- + 40 | 4 | 4 | 4 | .0000000 | 800 + 40 | 4 | 4 | 4 | .0000000 | 700 + 30 | 3 | 3 | 3 | .0000000 | 600 + 30 | 1 | 1 | 1 | 10.0000000 | 500 + 30 | 3 | 3 | 3 | 10.0000000 | 500 + 50 | 1 | 1 | 1 | -40.0388781 | 400 + 50 | 2 | 2 | 2 | -40.0388781 | 400 + 30 | 1 | 1 | 1 | .0000000 | 300 + 10 | 1 | 1 | 1 | .0000000 | 200 + 40 | 3 | 3 | 3 | .0000000 | 200 + 20 | 1 | 1 | 1 | 475200.0000000 | 100 + 40 | 2 | 2 | 2 | 475200.0000000 | 100 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn+ow_sale.qty),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range floor(ow_sale.pn-ow_sale.cn) preceding ); -- mvd 5->7; 5->8; + pn | vn | prc | pn | cn | cn | to_char | to_char +-----+----+------+-----+----+----+-------------------+------------------- + 200 | 10 | 0 | 200 | 1 | 1 | 4.2000000 | 5.0000000 + 100 | 20 | 0 | 100 | 1 | 1 | 4.2000000 | 5.0000000 + 300 | 30 | 0 | 300 | 1 | 1 | 4.2000000 | 5.0000000 + 400 | 50 | 0 | 400 | 1 | 1 | 4.2000000 | 5.0000000 + 500 | 30 | 5 | 500 | 1 | 1 | 4.2000000 | 5.0000000 + 100 | 40 | 2400 | 100 | 2 | 2 | 4.1501541 | 7.0000000 + 400 | 50 | 0 | 400 | 2 | 2 | 4.1501541 | 7.0000000 + 200 | 40 | 0 | 200 | 3 | 3 | 6.4917884 | 10.0000000 + 600 | 30 | 5 | 600 | 3 | 3 | 6.4917884 | 10.0000000 + 500 | 30 | 5 | 500 | 3 | 3 | 6.4917884 | 10.0000000 + 700 | 40 | 1 | 700 | 4 | 4 | 6.4697322 | 12.0000000 + 800 | 40 | 1 | 800 | 4 | 4 | 6.4697322 | 12.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn-ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range current row ); -- mvd 6->5; + cn | qty | vn | vn | to_char | pn +----+------+----+----+-------------------+----- + 1 | 1 | 20 | 20 | 99.0000000 | 100 + 2 | 1100 | 40 | 40 | 99.0000000 | 100 + 1 | 1 | 10 | 10 | .0000000 | 200 + 3 | 1 | 40 | 40 | .0000000 | 200 + 1 | 1 | 30 | 30 | .0000000 | 300 + 1 | 1 | 50 | 50 | .0000000 | 400 + 2 | 1 | 50 | 50 | .0000000 | 400 + 1 | 12 | 30 | 30 | .0000000 | 500 + 3 | 12 | 30 | 30 | .0000000 | 500 + 3 | 12 | 30 | 30 | .0000000 | 600 + 4 | 1 | 40 | 40 | .0000000 | 700 + 4 | 1 | 40 | 40 | .0000000 | 800 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc),floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(order by ow_sale.pn desc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.vn) as int),cast (floor(ow_sale.prc*ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.vn) as int),cast (floor(ow_sale.pn+ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range current row ), +win2 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.cn order by ow_sale.pn desc), +win4 as (order by ow_sale.ord, ow_sale.pn asc), +win5 as (order by ow_sale.cn desc); -- mvd 5->4; 5->6; 1,8->7; 10,1,2,5->9; 5->11; 1->12; + cn | vn | vn | to_char | pn | to_char | to_char | qty | to_char | prc | to_char | to_char +----+----+----+-------------------+-----+-------------------+-------------------+------+-------------------+------+-------------------+------------------- + 4 | 40 | 40 | .0000000 | 800 | 1.0000000 | -39.0000000 | 1 | 1.0000000 | 1 | .0000000 | 1.0000000 + 4 | 40 | 40 | .0000000 | 700 | 1.0000000 | -50.0000000 | 1 | 2.0000000 | 1 | .0000000 | 2.0000000 + 3 | 30 | 30 | .0000000 | 500 | 2.0000000 | .0000000 | 12 | 2.0000000 | 5 | .0000000 | 3.0000000 + 3 | 40 | 40 | .0000000 | 200 | 2.0000000 | -40.0000000 | 1 | 1.0000000 | 0 | .0000000 | 4.0000000 + 3 | 30 | 30 | .0000000 | 600 | 1.0000000 | .0000000 | 12 | 1.0000000 | 5 | .0000000 | 5.0000000 + 2 | 50 | 50 | .0000000 | 400 | 2.0000000 | -50.0000000 | 1 | 1.0000000 | 0 | .0000000 | 6.0000000 + 2 | 40 | 40 | -2400.0000000 | 100 | 2.0000000 | .0000000 | 1100 | 1.0000000 | 2400 | .0000000 | 7.0000000 + 1 | 30 | 30 | .0000000 | 500 | 2.0000000 | .0000000 | 12 | 1.0000000 | 5 | .0000000 | 8.0000000 + 1 | 50 | 50 | .0000000 | 400 | 2.0000000 | -50.0000000 | 1 | 1.0000000 | 0 | .0000000 | 9.0000000 + 1 | 30 | 30 | .0000000 | 300 | 1.0000000 | -30.0000000 | 1 | 1.0000000 | 0 | .0000000 | 10.0000000 + 1 | 20 | 20 | -2400.0000000 | 100 | 2.0000000 | -20.0000000 | 1 | 1.0000000 | 0 | .0000000 | 11.0000000 + 1 | 10 | 10 | .0000000 | 200 | 2.0000000 | -10.0000000 | 1 | 1.0000000 | 0 | .0000000 | 12.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn-ow_sale.vn),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and floor(ow_sale.prc) preceding ); -- mvd 1->6; + pn | pn | qty | dt | qty | to_char +-----+-----+------+------------+------+------------------- + 800 | 800 | 1 | 1401-06-01 | 1 | .0000000 + 700 | 700 | 1 | 1401-06-01 | 1 | .0000000 + 600 | 600 | 12 | 1401-06-01 | 12 | .0000000 + 500 | 500 | 12 | 1401-06-01 | 12 | -30.6000000 + 500 | 500 | 12 | 1401-06-01 | 12 | -30.6000000 + 400 | 400 | 1 | 1401-06-01 | 1 | -35.6920732 + 400 | 400 | 1 | 1401-06-01 | 1 | -35.6920732 + 300 | 300 | 1 | 1401-05-02 | 1 | -34.6210526 + 200 | 200 | 1 | 1401-03-01 | 1 | -31.7095588 + 200 | 200 | 1 | 1401-04-01 | 1 | -31.7095588 + 100 | 100 | 1 | 1401-05-01 | 1 | -31.4594920 + 100 | 100 | 1100 | 1401-01-01 | 1100 | .0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty*ow_sale.pn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and 1 preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 4->3; 6->5; 4->7; 6->8; + qty | dt | to_char | cn | to_char | vn | to_char | to_char +------+------------+-------------------+----+-------------------+----+-------------------+------------------- + 1100 | 1401-01-01 | 531.0344828 | 2 | 6.0000000 | 40 | .0000000 | 6.0000000 + 1 | 1401-03-01 | 533.6524473 | 1 | 12.0000000 | 10 | 800.0000000 | 12.0000000 + 1 | 1401-04-01 | .0000000 | 3 | 3.0000000 | 40 | .0000000 | 3.0000000 + 1 | 1401-05-01 | 533.6524473 | 1 | 11.0000000 | 20 | .0000000 | 11.0000000 + 1 | 1401-05-02 | 533.6524473 | 1 | 7.0000000 | 30 | .0000000 | 7.0000000 + 1 | 1401-06-01 | 533.6524473 | 1 | 1.0000000 | 50 | .0000000 | 1.0000000 + 1 | 1401-06-01 | 531.0344828 | 2 | 2.0000000 | 50 | .0000000 | 2.0000000 + 12 | 1401-06-01 | 533.6524473 | 1 | 9.0000000 | 30 | .0000000 | 9.0000000 + 12 | 1401-06-01 | .0000000 | 3 | 8.0000000 | 30 | .0000000 | 8.0000000 + 12 | 1401-06-01 | .0000000 | 3 | 10.0000000 | 30 | .0000000 | 10.0000000 + 1 | 1401-06-01 | .0000000 | 4 | 5.0000000 | 40 | .0000000 | 5.0000000 + 1 | 1401-06-01 | .0000000 | 4 | 4.0000000 | 40 | .0000000 | 4.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.pn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 3->2; + vn | to_char | cn +----+-------------------+---- + 40 | .0000000 | 4 + 40 | .0000000 | 4 + 30 | .0000000 | 3 + 40 | .0000000 | 3 + 30 | .0000000 | 3 + 50 | .0000000 | 2 + 40 | .0000000 | 2 + 30 | .0000000 | 1 + 50 | .0000000 | 1 + 30 | .0000000 | 1 + 10 | .0000000 | 1 + 20 | .0000000 | 1 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.pn)) OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.vn asc); -- mvd 3->2; 3->4; 3->5; 3->6; 3->7; + prc | to_char | vn | to_char | to_char | to_char | to_char +------+-------------------+----+-------------------+-------------------+-------------------+------------------- + 0 | .0000000 | 10 | 1.0000000 | 1.0000000 | .0833333 | 40000.0000000 + 0 | .0000000 | 20 | 1.0000000 | 2.0000000 | .1666667 | 10000.0000000 + 5 | 2.7956204 | 30 | 3.0000000 | 6.0000000 | .5000000 | 10000.0000000 + 0 | 2.7956204 | 30 | 3.0000000 | 6.0000000 | .5000000 | 10000.0000000 + 5 | 2.7956204 | 30 | 3.0000000 | 6.0000000 | .5000000 | 10000.0000000 + 5 | 2.7956204 | 30 | 3.0000000 | 6.0000000 | .5000000 | 10000.0000000 + 2400 | 2.5322287 | 40 | 4.0000000 | 10.0000000 | .8333333 | 10000.0000000 + 1 | 2.5322287 | 40 | 4.0000000 | 10.0000000 | .8333333 | 10000.0000000 + 0 | 2.5322287 | 40 | 4.0000000 | 10.0000000 | .8333333 | 10000.0000000 + 1 | 2.5322287 | 40 | 4.0000000 | 10.0000000 | .8333333 | 10000.0000000 + 0 | 2.1054576 | 50 | 4.0000000 | 12.0000000 | 1.0000000 | 10000.0000000 + 0 | 2.1054576 | 50 | 4.0000000 | 12.0000000 | 1.0000000 | 10000.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.qty/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and 1 following ); -- mvd 1->5; + cn | vn | cn | vn | to_char +----+----+----+----+------------------- + 1 | 20 | 1 | 20 | 1.1666667 + 1 | 10 | 1 | 10 | 1.1666667 + 1 | 30 | 1 | 30 | 1.1666667 + 1 | 50 | 1 | 50 | 1.1666667 + 1 | 30 | 1 | 30 | 1.1666667 + 2 | 40 | 2 | 40 | 1.7777778 + 2 | 50 | 2 | 50 | 1.7777778 + 3 | 40 | 3 | 40 | 2.1818182 + 3 | 30 | 3 | 30 | 2.1818182 + 3 | 30 | 3 | 30 | 2.1818182 + 4 | 40 | 4 | 40 | 2.1818182 + 4 | 40 | 4 | 40 | 2.1818182 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn+ow_sale.pn),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn+ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and 4 following ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.vn desc); -- mvd 3->4; 3->5; 7,8,1,2->6; 7,8,1,2->9; + vn | qty | pn | to_char | to_char | to_char | dt | cn | to_char +----+------+-----+-------------------+-------------------+-------------------+------------+----+------------------- + 40 | 1 | 800 | .0000000 | 41.0000000 | 1400.0000000 | 1401-06-01 | 4 | 2.0000000 + 40 | 1 | 700 | .0000000 | 41.0000000 | .0000000 | 1401-06-01 | 4 | 1.0000000 + 30 | 12 | 600 | 664.2857143 | 42.0000000 | .0000000 | 1401-06-01 | 3 | 2.0000000 + 30 | 12 | 500 | 292.8571429 | 42.0000000 | .0000000 | 1401-06-01 | 1 | 1.0000000 + 30 | 12 | 500 | 292.8571429 | 42.0000000 | .0000000 | 1401-06-01 | 3 | 1.0000000 + 50 | 1 | 400 | 1344.1035120 | 51.0000000 | .0000000 | 1401-06-01 | 2 | 1.0000000 + 50 | 1 | 400 | 1344.1035120 | 51.0000000 | .0000000 | 1401-06-01 | 1 | 1.0000000 + 30 | 1 | 300 | 1144.3772297 | 51.0000000 | .0000000 | 1401-05-02 | 1 | 1.0000000 + 10 | 1 | 200 | 718.5351166 | 51.0000000 | .0000000 | 1401-03-01 | 1 | 1.0000000 + 40 | 1 | 200 | 718.5351166 | 51.0000000 | .0000000 | 1401-04-01 | 3 | 1.0000000 + 20 | 1 | 100 | 846.3035009 | 1140.0000000 | .0000000 | 1401-05-01 | 1 | 1.0000000 + 40 | 1100 | 100 | 846.3035009 | 1140.0000000 | .0000000 | 1401-01-01 | 2 | 1.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and unbounded following ); -- mvd 5->4; + qty | dt | dt | to_char | cn +------+------------+------------+-------------------+---- + 1 | 1401-06-01 | 1401-06-01 | 193.8547486 | 4 + 1 | 1401-06-01 | 1401-06-01 | 193.8547486 | 4 + 12 | 1401-06-01 | 1401-06-01 | 193.8547486 | 3 + 1 | 1401-04-01 | 1401-04-01 | 193.8547486 | 3 + 12 | 1401-06-01 | 1401-06-01 | 193.8547486 | 3 + 1 | 1401-06-01 | 1401-06-01 | 193.8547486 | 2 + 1100 | 1401-01-01 | 1401-01-01 | 193.8547486 | 2 + 1 | 1401-05-02 | 1401-05-02 | 193.8547486 | 1 + 1 | 1401-06-01 | 1401-06-01 | 193.8547486 | 1 + 12 | 1401-06-01 | 1401-06-01 | 193.8547486 | 1 + 1 | 1401-05-01 | 1401-05-01 | 193.8547486 | 1 + 1 | 1401-03-01 | 1401-03-01 | 193.8547486 | 1 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn-ow_sale.qty),floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.prc)) OVER(order by ow_sale.cn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.cn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.vn asc); -- mvd 1->6; 1->7; 1->8; 2->9; + cn | vn | prc | vn | pn | to_char | to_char | to_char | to_char +----+----+------+----+-----+-------------------+-------------------+-------------------+------------------- + 1 | 10 | 0 | 10 | 200 | 278.5207342 | .0000000 | 50.0000000 | .0833333 + 1 | 20 | 0 | 20 | 100 | 278.5207342 | .0000000 | 50.0000000 | .1666667 + 3 | 30 | 5 | 30 | 500 | 278.5207342 | .0000000 | 50.0000000 | .5000000 + 3 | 30 | 5 | 30 | 600 | 278.5207342 | .0000000 | 50.0000000 | .5000000 + 1 | 30 | 0 | 30 | 300 | 278.5207342 | .0000000 | 50.0000000 | .5000000 + 1 | 30 | 5 | 30 | 500 | 278.5207342 | .0000000 | 50.0000000 | .5000000 + 4 | 40 | 1 | 40 | 800 | 278.5207342 | .0000000 | 50.0000000 | .8333333 + 2 | 40 | 2400 | 40 | 100 | 278.5207342 | .0000000 | 50.0000000 | .8333333 + 3 | 40 | 0 | 40 | 200 | 278.5207342 | .0000000 | 50.0000000 | .8333333 + 4 | 40 | 1 | 40 | 700 | 278.5207342 | .0000000 | 50.0000000 | .8333333 + 1 | 50 | 0 | 50 | 400 | 278.5207342 | .0000000 | 50.0000000 | 1.0000000 + 2 | 50 | 0 | 50 | 400 | 278.5207342 | .0000000 | 50.0000000 | 1.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc*ow_sale.cn),floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.cn) preceding and 3 preceding ); -- mvd 5->4; + dt | prc | qty | to_char | vn +------------+------+------+-------------------+---- + 1401-03-01 | 0 | 1 | .0000000 | 10 + 1401-05-01 | 0 | 1 | .0000000 | 20 + 1401-06-01 | 5 | 12 | .0000000 | 30 + 1401-05-02 | 0 | 1 | .0000000 | 30 + 1401-06-01 | 5 | 12 | .0000000 | 30 + 1401-06-01 | 5 | 12 | .0000000 | 30 + 1401-01-01 | 2400 | 1100 | .0000000 | 40 + 1401-06-01 | 1 | 1 | .0000000 | 40 + 1401-04-01 | 0 | 1 | .0000000 | 40 + 1401-06-01 | 1 | 1 | .0000000 | 40 + 1401-06-01 | 0 | 1 | .0000000 | 50 + 1401-06-01 | 0 | 1 | .0000000 | 50 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn-ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn+ow_sale.pn)) OVER(order by ow_sale.cn asc range between floor(ow_sale.cn+ow_sale.pn) preceding and floor(ow_sale.cn+ow_sale.prc) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty-ow_sale.cn) as int),cast (floor(ow_sale.qty+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.cn+ow_sale.pn) preceding and floor(ow_sale.cn+ow_sale.prc) preceding ), +win2 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.vn desc); -- mvd 4->3; 4->5; 4->6; 8,9->7; + pn | prc | to_char | cn | to_char | to_char | to_char | vn | qty +-----+------+-------------------+----+-------------------+-------------------+-------------------+----+------ + 200 | 0 | .0000000 | 1 | .0000000 | .0000000 | .0000000 | 10 | 1 + 100 | 0 | .0000000 | 1 | .0000000 | .0000000 | .0000000 | 20 | 1 + 300 | 0 | .0000000 | 1 | .0000000 | .0000000 | -2.0000000 | 30 | 1 + 400 | 0 | .0000000 | 1 | .0000000 | .0000000 | .0000000 | 50 | 1 + 500 | 5 | .0000000 | 1 | .0000000 | .0000000 | .0000000 | 30 | 12 + 100 | 2400 | .0000000 | 2 | .0000000 | .0000000 | .0000000 | 40 | 1100 + 400 | 0 | .0000000 | 2 | .0000000 | .0000000 | .0000000 | 50 | 1 + 200 | 0 | .0000000 | 3 | .0000000 | .0000000 | .0000000 | 40 | 1 + 500 | 5 | .0000000 | 3 | .0000000 | .0000000 | .0000000 | 30 | 12 + 600 | 5 | .0000000 | 3 | .0000000 | .0000000 | .0000000 | 30 | 12 + 800 | 1 | .0000000 | 4 | .0000000 | .0000000 | -1.0000000 | 40 | 1 + 700 | 1 | .0000000 | 4 | .0000000 | .0000000 | .0000000 | 40 | 1 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 2 preceding and current row ); -- mvd 4->3; + pn | pn | to_char | vn +-----+-----+-------------------+---- + 200 | 200 | .0000000 | 10 + 100 | 100 | .0000000 | 20 + 600 | 600 | 1.0000000 | 30 + 300 | 300 | 1.0000000 | 30 + 500 | 500 | 1.0000000 | 30 + 500 | 500 | 1.0000000 | 30 + 100 | 100 | 3.6670370 | 40 + 700 | 700 | 3.6670370 | 40 + 200 | 200 | 3.6670370 | 40 + 800 | 800 | 3.6670370 | 40 + 400 | 400 | .0000000 | 50 + 400 | 400 | .0000000 | 50 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty*ow_sale.pn)) OVER(order by ow_sale.pn asc range between floor(ow_sale.cn) preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.cn) preceding and current row ); -- mvd 4->7; 4->8; + vn | cn | vn | pn | cn | pn | to_char | to_char +----+----+----+-----+----+-----+-------------------+------------------- + 20 | 1 | 20 | 100 | 1 | 100 | 1.0000000 | 2.0000000 + 40 | 2 | 40 | 100 | 2 | 100 | 1.0000000 | 2.0000000 + 10 | 1 | 10 | 200 | 1 | 200 | .0000000 | 2.0000000 + 40 | 3 | 40 | 200 | 3 | 200 | .0000000 | 2.0000000 + 30 | 1 | 30 | 300 | 1 | 300 | .0000000 | 1.0000000 + 50 | 1 | 50 | 400 | 1 | 400 | .0000000 | 2.0000000 + 50 | 2 | 50 | 400 | 2 | 400 | .0000000 | 2.0000000 + 30 | 1 | 30 | 500 | 1 | 500 | .0000000 | 2.0000000 + 30 | 3 | 30 | 500 | 3 | 500 | .0000000 | 2.0000000 + 30 | 3 | 30 | 600 | 3 | 600 | .0000000 | 1.0000000 + 40 | 4 | 40 | 700 | 4 | 700 | .0000000 | 1.0000000 + 40 | 4 | 40 | 800 | 4 | 800 | .0000000 | 1.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc),floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 2 preceding and floor(ow_sale.vn) following ); -- mvd 3->7; + cn | dt | pn | qty | dt | cn | to_char +----+------------+-----+------+------------+----+------------------- + 4 | 1401-06-01 | 800 | 1 | 1401-06-01 | 4 | .0000000 + 4 | 1401-06-01 | 700 | 1 | 1401-06-01 | 4 | .0000000 + 3 | 1401-06-01 | 600 | 12 | 1401-06-01 | 3 | .0000000 + 1 | 1401-06-01 | 500 | 12 | 1401-06-01 | 1 | .0000000 + 3 | 1401-06-01 | 500 | 12 | 1401-06-01 | 3 | .0000000 + 1 | 1401-06-01 | 400 | 1 | 1401-06-01 | 1 | .0000000 + 2 | 1401-06-01 | 400 | 1 | 1401-06-01 | 2 | .0000000 + 1 | 1401-05-02 | 300 | 1 | 1401-05-02 | 1 | .0000000 + 1 | 1401-03-01 | 200 | 1 | 1401-03-01 | 1 | .0000000 + 3 | 1401-04-01 | 200 | 1 | 1401-04-01 | 3 | .0000000 + 1 | 1401-05-01 | 100 | 1 | 1401-05-01 | 1 | -2400.0000000 + 2 | 1401-01-01 | 100 | 1100 | 1401-01-01 | 2 | -2400.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.prc)) OVER(order by ow_sale.vn asc range between floor(ow_sale.prc) preceding and floor(ow_sale.cn+ow_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.vn) as int),cast (floor(ow_sale.vn*ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.qty)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.prc) preceding and floor(ow_sale.cn+ow_sale.cn) following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 2->7; 2->8; 2->9; 2->10; 2->11; + pn | vn | pn | pn | vn | vn | to_char | to_char | to_char | to_char | to_char +-----+----+-----+-----+----+----+-------------------+-------------------+-------------------+-------------------+------------------- + 100 | 40 | 100 | 100 | 40 | 40 | 29.9911982 | 1600.0000000 | 10.0000000 | .0000000 | 1.0000000 + 200 | 10 | 200 | 200 | 10 | 10 | .0000000 | 400.0000000 | 1.0000000 | 44.0000000 | 2.0000000 + 200 | 40 | 200 | 200 | 40 | 40 | 40.0000000 | 1600.0000000 | 4.0000000 | .0000000 | 3.0000000 + 100 | 20 | 100 | 100 | 20 | 20 | .0000000 | 200.0000000 | 1.0000000 | .0000000 | 4.0000000 + 300 | 30 | 300 | 300 | 30 | 30 | 30.0000000 | 1200.0000000 | 4.0000000 | .0000000 | 5.0000000 + 400 | 50 | 400 | 400 | 50 | 50 | .0000000 | 800.0000000 | 2.0000000 | .0000000 | 6.0000000 + 400 | 50 | 400 | 400 | 50 | 50 | .0000000 | 800.0000000 | 2.0000000 | .0000000 | 7.0000000 + 500 | 30 | 500 | 500 | 30 | 30 | 30.0000000 | 1200.0000000 | 4.0000000 | .0000000 | 8.0000000 + 500 | 30 | 500 | 500 | 30 | 30 | 30.0000000 | 1200.0000000 | 4.0000000 | .0000000 | 9.0000000 + 600 | 30 | 600 | 600 | 30 | 30 | 30.0000000 | 1200.0000000 | 4.0000000 | .0000000 | 10.0000000 + 700 | 40 | 700 | 700 | 40 | 40 | 40.0000000 | 1600.0000000 | 4.0000000 | .0000000 | 11.0000000 + 800 | 40 | 800 | 800 | 40 | 40 | 40.0000000 | 1600.0000000 | 4.0000000 | .0000000 | 12.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 4 preceding and unbounded following ); -- mvd 4->3; + dt | cn | to_char | pn +------------+----+-------------------+----- + 1401-06-01 | 4 | .0000000 | 800 + 1401-06-01 | 4 | .0000000 | 700 + 1401-06-01 | 3 | .0000000 | 600 + 1401-06-01 | 1 | .0000000 | 500 + 1401-06-01 | 3 | .0000000 | 500 + 1401-06-01 | 1 | .0000000 | 400 + 1401-06-01 | 2 | .0000000 | 400 + 1401-05-02 | 1 | .0000000 | 300 + 1401-03-01 | 1 | .0000000 | 200 + 1401-04-01 | 3 | .0000000 | 200 + 1401-05-01 | 1 | .0000000 | 100 + 1401-01-01 | 2 | .0000000 | 100 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(order by ow_sale.cn desc range between floor(ow_sale.prc+ow_sale.vn) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.prc+ow_sale.vn) preceding and unbounded following ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.cn desc); -- mvd 7->6; 7->8; 1->9; 7,11,12,3,1->10; + pn | prc | qty | pn | prc | to_char | cn | to_char | to_char | to_char | dt | vn +-----+------+------+-----+------+-------------------+----+-------------------+-------------------+-------------------+------------+---- + 100 | 0 | 1 | 100 | 0 | -27.1902153 | 1 | 800.0000000 | 1.0000000 | 1.0000000 | 1401-05-01 | 20 + 100 | 2400 | 1100 | 100 | 2400 | -27.1902153 | 2 | 800.0000000 | 1.0000000 | 1.0000000 | 1401-01-01 | 40 + 200 | 0 | 1 | 200 | 0 | -27.1902153 | 3 | 800.0000000 | 3.0000000 | 1.0000000 | 1401-04-01 | 40 + 200 | 0 | 1 | 200 | 0 | -27.1902153 | 1 | 800.0000000 | 3.0000000 | 1.0000000 | 1401-03-01 | 10 + 300 | 0 | 1 | 300 | 0 | -27.1902153 | 1 | 800.0000000 | 5.0000000 | 1.0000000 | 1401-05-02 | 30 + 400 | 0 | 1 | 400 | 0 | -27.1902153 | 1 | 800.0000000 | 6.0000000 | 1.0000000 | 1401-06-01 | 50 + 400 | 0 | 1 | 400 | 0 | -27.1902153 | 2 | 800.0000000 | 6.0000000 | .5000000 | 1401-06-01 | 50 + 500 | 5 | 12 | 500 | 5 | -27.1902153 | 1 | 800.0000000 | 8.0000000 | 1.0000000 | 1401-06-01 | 30 + 500 | 5 | 12 | 500 | 5 | -27.1902153 | 3 | 800.0000000 | 8.0000000 | .5000000 | 1401-06-01 | 30 + 600 | 5 | 12 | 600 | 5 | -27.1902153 | 3 | 800.0000000 | 10.0000000 | 1.0000000 | 1401-06-01 | 30 + 700 | 1 | 1 | 700 | 1 | -27.1902153 | 4 | 800.0000000 | 11.0000000 | 1.0000000 | 1401-06-01 | 40 + 800 | 1 | 1 | 800 | 1 | -27.1902153 | 4 | 800.0000000 | 12.0000000 | 1.0000000 | 1401-06-01 | 40 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn*ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and current row ); -- mvd 5->4; + prc | dt | qty | to_char | vn +------+------------+------+-------------------+---- + 0 | 1401-06-01 | 1 | .0000000 | 50 + 0 | 1401-06-01 | 1 | .0000000 | 50 + 2400 | 1401-01-01 | 1100 | 467.0912951 | 40 + 1 | 1401-06-01 | 1 | 467.0912951 | 40 + 1 | 1401-06-01 | 1 | 467.0912951 | 40 + 0 | 1401-04-01 | 1 | 467.0912951 | 40 + 5 | 1401-06-01 | 12 | -254.5454545 | 30 + 0 | 1401-05-02 | 1 | -254.5454545 | 30 + 5 | 1401-06-01 | 12 | -254.5454545 | 30 + 5 | 1401-06-01 | 12 | -254.5454545 | 30 + 0 | 1401-05-01 | 1 | .0000000 | 20 + 0 | 1401-03-01 | 1 | .0000000 | 10 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty-ow_sale.qty),floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(partition by ow_sale.vn order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and current row ), +win2 as (partition by ow_sale.vn order by ow_sale.cn asc); -- mvd 3->5; 2,4->6; 2,4->7; + prc | cn | pn | vn | to_char | to_char | to_char +------+----+-----+----+-------------------+-------------------+------------------- + 2400 | 2 | 100 | 40 | .0000000 | .0000000 | 40.0000000 + 0 | 1 | 100 | 20 | .0000000 | .0000000 | 20.0000000 + 0 | 1 | 200 | 10 | .0000000 | .0000000 | 10.0000000 + 0 | 3 | 200 | 40 | .0000000 | .3333333 | 40.0000000 + 0 | 1 | 300 | 30 | .0000000 | .0000000 | 30.0000000 + 0 | 1 | 400 | 50 | .0000000 | .0000000 | 50.0000000 + 0 | 2 | 400 | 50 | .0000000 | 1.0000000 | 50.0000000 + 5 | 3 | 500 | 30 | .0000000 | .6666667 | 30.0000000 + 5 | 1 | 500 | 30 | .0000000 | .0000000 | 30.0000000 + 5 | 3 | 600 | 30 | .0000000 | .6666667 | 30.0000000 + 1 | 4 | 700 | 40 | .0000000 | .6666667 | 40.0000000 + 1 | 4 | 800 | 40 | .0000000 | .6666667 | 40.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and floor(ow_sale.cn+ow_sale.prc) following ); -- mvd 2->3; + pn | vn | to_char +-----+----+------------------- + 200 | 10 | .0000000 + 100 | 20 | .0000000 + 600 | 30 | 278.7878788 + 300 | 30 | 278.7878788 + 500 | 30 | 278.7878788 + 500 | 30 | 278.7878788 + 100 | 40 | 500.3639672 + 700 | 40 | 567.0912951 + 800 | 40 | 567.0912951 + 200 | 40 | 567.0912951 + 400 | 50 | .0000000 + 400 | 50 | .0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(order by ow_sale.cn desc range between current row and floor(ow_sale.qty*ow_sale.pn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and floor(ow_sale.qty*ow_sale.pn) following ), +win2 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.vn desc), +win3 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.pn desc); -- mvd 3->2; 3->4; 3->5; 3->6; 8,3,9,1->7; 11,9,1->10; + pn | to_char | cn | to_char | to_char | to_char | to_char | prc | vn | to_char | dt +-----+-------------------+----+-------------------+-------------------+-------------------+-------------------+------+----+-------------------+------------ + 700 | 2.2934376 | 4 | 12.0000000 | .0000000 | 12.0000000 | .0000000 | 1 | 40 | 2.0000000 | 1401-06-01 + 800 | 2.2934376 | 4 | 12.0000000 | .0000000 | 12.0000000 | .0000000 | 1 | 40 | 1.0000000 | 1401-06-01 + 500 | 3.0892763 | 3 | 10.0000000 | .0000000 | 10.0000000 | .0000000 | 5 | 30 | 3.0000000 | 1401-06-01 + 200 | 3.0892763 | 3 | 10.0000000 | .0000000 | 10.0000000 | .0000000 | 0 | 40 | 1.0000000 | 1401-04-01 + 600 | 3.0892763 | 3 | 10.0000000 | .0000000 | 10.0000000 | .0000000 | 5 | 30 | 1.0000000 | 1401-06-01 + 400 | 1.9165930 | 2 | 7.0000000 | .0000000 | 7.0000000 | .0000000 | 0 | 50 | 1.0000000 | 1401-06-01 + 100 | 1.9165930 | 2 | 7.0000000 | .0000000 | 7.0000000 | .0000000 | 2400 | 40 | 1.0000000 | 1401-01-01 + 300 | -1.2000000 | 1 | 5.0000000 | .0000000 | 5.0000000 | .0000000 | 0 | 30 | 1.0000000 | 1401-05-02 + 400 | -1.2000000 | 1 | 5.0000000 | .0000000 | 5.0000000 | .0000000 | 0 | 50 | 2.0000000 | 1401-06-01 + 500 | -1.2000000 | 1 | 5.0000000 | .0000000 | 5.0000000 | .0000000 | 5 | 30 | 2.0000000 | 1401-06-01 + 100 | -1.2000000 | 1 | 5.0000000 | .0000000 | 5.0000000 | .0000000 | 0 | 20 | 1.0000000 | 1401-05-01 + 200 | -1.2000000 | 1 | 5.0000000 | .0000000 | 5.0000000 | .0000000 | 0 | 10 | 1.0000000 | 1401-03-01 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn/ow_sale.qty),floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(order by ow_sale.vn desc range between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and unbounded following ), +win2 as (order by ow_sale.pn desc); -- mvd 2->7; 9->8; 9->10; 9->11; 2->12; + qty | vn | cn | vn | vn | qty | to_char | to_char | pn | to_char | to_char | to_char +------+----+----+----+----+------+-------------------+-------------------+-----+-------------------+-------------------+------------------- + 1 | 40 | 4 | 40 | 40 | 1 | 273.2956398 | .0833333 | 800 | 1.0000000 | 1.0000000 | 10.0000000 + 1 | 40 | 4 | 40 | 40 | 1 | 273.2956398 | .1666667 | 700 | 2.0000000 | 1.0000000 | 10.0000000 + 12 | 30 | 3 | 30 | 30 | 12 | 250.4186047 | .2500000 | 600 | 3.0000000 | 1.0000000 | 6.0000000 + 12 | 30 | 3 | 30 | 30 | 12 | 250.4186047 | .4166667 | 500 | 4.0000000 | 1.0000000 | 6.0000000 + 12 | 30 | 1 | 30 | 30 | 12 | 250.4186047 | .4166667 | 500 | 5.0000000 | 1.0000000 | 6.0000000 + 1 | 50 | 2 | 50 | 50 | 1 | 297.5130647 | .5833333 | 400 | 6.0000000 | 1.0000000 | 12.0000000 + 1 | 50 | 1 | 50 | 50 | 1 | 297.5130647 | .5833333 | 400 | 7.0000000 | 1.0000000 | 12.0000000 + 1 | 30 | 1 | 30 | 30 | 1 | 250.4186047 | .6666667 | 300 | 8.0000000 | 1.0000000 | 6.0000000 + 1 | 40 | 3 | 40 | 40 | 1 | 273.2956398 | .8333333 | 200 | 9.0000000 | 1.0000000 | 10.0000000 + 1 | 10 | 1 | 10 | 10 | 1 | .0000000 | .8333333 | 200 | 10.0000000 | 1.0000000 | 1.0000000 + 1100 | 40 | 2 | 40 | 40 | 1100 | 273.2956398 | 1.0000000 | 100 | 11.0000000 | 1.0000000 | 10.0000000 + 1 | 20 | 1 | 20 | 20 | 1 | 300.0000000 | 1.0000000 | 100 | 12.0000000 | 1.0000000 | 2.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.pn+ow_sale.pn) following and floor(ow_sale.pn/ow_sale.vn) following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc), +win3 as (order by ow_sale.pn desc); -- mvd 3->2; 5,3,6,1->4; 5,3,6,1->7; 1->8; 1->9; + pn | to_char | cn | to_char | prc | vn | to_char | to_char | to_char +-----+-------------------+----+-------------------+------+----+-------------------+-------------------+------------------- + 800 | .0000000 | 4 | 1.0000000 | 1 | 40 | 1.0000000 | .0833333 | 4.0000000 + 700 | .0000000 | 4 | 1.0000000 | 1 | 40 | 1.0000000 | .1666667 | 4.0000000 + 600 | .0000000 | 3 | 1.0000000 | 5 | 30 | 12.0000000 | .2500000 | 3.0000000 + 500 | .0000000 | 1 | .5000000 | 5 | 30 | 12.0000000 | .4166667 | 1.0000000 + 500 | .0000000 | 3 | 1.0000000 | 5 | 30 | 12.0000000 | .4166667 | 1.0000000 + 400 | .0000000 | 2 | 1.0000000 | 0 | 50 | 1.0000000 | .5833333 | 1.0000000 + 400 | .0000000 | 1 | .5000000 | 0 | 50 | 1.0000000 | .5833333 | 1.0000000 + 300 | .0000000 | 1 | 1.0000000 | 0 | 30 | 1.0000000 | .6666667 | 1.0000000 + 200 | .0000000 | 1 | 1.0000000 | 0 | 10 | 1.0000000 | .8333333 | 1.0000000 + 200 | .0000000 | 3 | 1.0000000 | 0 | 40 | 1.0000000 | .8333333 | 1.0000000 + 100 | .0000000 | 2 | 1.0000000 | 2400 | 40 | 1100.0000000 | 1.0000000 | 1.0000000 + 100 | .0000000 | 1 | 1.0000000 | 0 | 20 | 1.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between floor(ow_sale.pn) following and unbounded following ); -- mvd 1->3; + pn | qty | to_char +-----+------+------------------- + 800 | 1 | .0000000 + 700 | 1 | .0000000 + 600 | 12 | .0000000 + 500 | 12 | .0000000 + 500 | 12 | .0000000 + 400 | 1 | .0000000 + 400 | 1 | .0000000 + 300 | 1 | .0000000 + 200 | 1 | .0000000 + 200 | 1 | .0000000 + 100 | 1 | .0000000 + 100 | 1100 | .0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn*ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn+ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn*ow_sale.prc) as int),cast (floor(ow_sale.vn/ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between floor(ow_sale.pn*ow_sale.qty) following and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.pn asc), +win4 as (partition by ow_sale.pn order by ow_sale.pn desc); -- mvd 1->5; 7,8,4,1->6; 1->9; 1->10; + pn | qty | qty | vn | to_char | to_char | cn | dt | to_char | to_char +-----+------+------+----+-------------------+-------------------+----+------------+-------------------+------------------- + 100 | 1100 | 1100 | 40 | .0000000 | .0000000 | 2 | 1401-01-01 | 240000.0000000 | 1.0000000 + 200 | 1 | 1 | 10 | .0000000 | .0000000 | 1 | 1401-03-01 | .0000000 | 1.0000000 + 200 | 1 | 1 | 40 | .0000000 | .0000000 | 3 | 1401-04-01 | .0000000 | 1.0000000 + 100 | 1 | 1 | 20 | .0000000 | .0000000 | 1 | 1401-05-01 | .0000000 | 1.0000000 + 300 | 1 | 1 | 30 | .0000000 | .0000000 | 1 | 1401-05-02 | .0000000 | 1.0000000 + 400 | 1 | 1 | 50 | .0000000 | .0000000 | 1 | 1401-06-01 | .0000000 | 1.0000000 + 400 | 1 | 1 | 50 | .0000000 | .0000000 | 2 | 1401-06-01 | .0000000 | 1.0000000 + 500 | 12 | 12 | 30 | .0000000 | .0000000 | 1 | 1401-06-01 | .0000000 | 1.0000000 + 500 | 12 | 12 | 30 | .0000000 | .0000000 | 3 | 1401-06-01 | .0000000 | 1.0000000 + 600 | 12 | 12 | 30 | .0000000 | .0000000 | 3 | 1401-06-01 | 2500.0000000 | 1.0000000 + 700 | 1 | 1 | 40 | .0000000 | .0000000 | 4 | 1401-06-01 | .0000000 | 1.0000000 + 800 | 1 | 1 | 40 | .0000000 | .0000000 | 4 | 1401-06-01 | .0000000 | 1.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn+ow_sale.prc),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn*ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.cn asc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty/ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.cn asc rows unbounded preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.cn asc rows unbounded preceding ); -- mvd 1,3->5; 1,3->6; 1,3->7; + cn | vn | pn | qty | to_char | to_char | to_char +----+----+-----+------+-------------------+-------------------+------------------- + 2 | 40 | 100 | 1100 | .0000000 | 4.0000000 | 1.0000000 + 1 | 10 | 200 | 1 | 3561.5384615 | 1.0000000 | 2.0000000 + 3 | 40 | 200 | 1 | 3567.2661871 | 1.0000000 | 3.0000000 + 1 | 20 | 100 | 1 | 2213.7044968 | 1.0000000 | 4.0000000 + 1 | 30 | 300 | 1 | 1666.7125172 | 1.0000000 | 5.0000000 + 1 | 50 | 400 | 1 | 1322.2132254 | 1.0000000 | 6.0000000 + 2 | 50 | 400 | 1 | 1238.1128274 | 1.0000000 | 7.0000000 + 1 | 30 | 500 | 12 | 1049.5185920 | 1.0000000 | 8.0000000 + 3 | 30 | 500 | 12 | 984.3109253 | 1.0000000 | 9.0000000 + 3 | 30 | 600 | 12 | 884.3080121 | 1.0000000 | 10.0000000 + 4 | 40 | 700 | 1 | 789.3719659 | 1.0000000 | 11.0000000 + 4 | 40 | 800 | 1 | 705.4545616 | 1.0000000 | 12.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn-ow_sale.prc),floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc,ow_sale.vn asc rows floor(ow_sale.cn*ow_sale.vn) preceding ); -- mvd 3->2; + cn | to_char | vn +----+-------------------+---- + 2 | .0000000 | 40 + 1 | 200.0000000 | 10 + 3 | 200.0000000 | 40 + 1 | 166.6666667 | 20 + 1 | 200.0000000 | 30 + 1 | 240.0000000 | 50 + 2 | 266.6666667 | 50 + 1 | 299.2857143 | 30 + 3 | 323.7500000 | 30 + 3 | 353.8888889 | 30 + 4 | 388.4000000 | 40 + 4 | 425.7272727 | 40 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn*ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn desc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows current row ); -- mvd 5->4; 5->6; 5->7; + dt | pn | pn | to_char | cn | to_char | to_char +------------+-----+-----+-------------------+----+-------------------+------------------- + 1401-01-01 | 100 | 100 | .0000000 | 2 | 100.0000000 | 2400.0000000 + 1401-03-01 | 200 | 200 | .0000000 | 1 | 200.0000000 | .0000000 + 1401-04-01 | 200 | 200 | .0000000 | 3 | 200.0000000 | .0000000 + 1401-05-01 | 100 | 100 | .0000000 | 1 | 100.0000000 | .0000000 + 1401-05-02 | 300 | 300 | .0000000 | 1 | 300.0000000 | .0000000 + 1401-06-01 | 400 | 400 | .0000000 | 1 | 400.0000000 | .0000000 + 1401-06-01 | 400 | 400 | .0000000 | 2 | 400.0000000 | .0000000 + 1401-06-01 | 500 | 500 | .0000000 | 1 | 500.0000000 | 5.0000000 + 1401-06-01 | 500 | 500 | .0000000 | 3 | 500.0000000 | 5.0000000 + 1401-06-01 | 600 | 600 | .0000000 | 3 | 600.0000000 | 5.0000000 + 1401-06-01 | 700 | 700 | .0000000 | 4 | 700.0000000 | 1.0000000 + 1401-06-01 | 800 | 800 | .0000000 | 4 | 800.0000000 | 1.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn),floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between unbounded preceding and 4 preceding ); -- mvd 1,4->7; + cn | qty | qty | vn | cn | dt | to_char +----+------+------+----+----+------------+------------------- + 2 | 1100 | 1100 | 40 | 2 | 1401-01-01 | .0000000 + 1 | 1 | 1 | 10 | 1 | 1401-03-01 | .0000000 + 3 | 1 | 1 | 40 | 3 | 1401-04-01 | .0000000 + 1 | 1 | 1 | 20 | 1 | 1401-05-01 | .0000000 + 1 | 1 | 1 | 30 | 1 | 1401-05-02 | .0000000 + 1 | 1 | 1 | 50 | 1 | 1401-06-01 | 10.0125052 + 2 | 1 | 1 | 50 | 2 | 1401-06-01 | 25.0187370 + 1 | 12 | 12 | 30 | 1 | 1401-06-01 | 23.3495290 + 3 | 12 | 12 | 30 | 3 | 1401-06-01 | 25.0124948 + 3 | 12 | 12 | 30 | 3 | 1401-06-01 | 30.0074971 + 4 | 1 | 1 | 40 | 4 | 1401-06-01 | 33.3395762 + 4 | 1 | 1 | 40 | 4 | 1401-06-01 | 32.8619911 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and 2 preceding ), +win2 as (partition by ow_sale.cn order by ow_sale.cn asc), +win3 as (order by ow_sale.pn asc); -- mvd 4->3; 4->5; 2->6; + prc | pn | to_char | cn | to_char | to_char +------+-----+-------------------+----+-------------------+------------------- + 2400 | 100 | .0000000 | 2 | 1.0000000 | 1.0000000 + 0 | 100 | -1098.0000000 | 1 | 1.0000000 | 1.0000000 + 0 | 200 | .0000000 | 1 | 1.0000000 | 3.0000000 + 0 | 200 | .0000000 | 3 | 1.0000000 | 3.0000000 + 0 | 300 | 367.3333333 | 1 | 1.0000000 | 5.0000000 + 0 | 400 | 1.0000000 | 2 | 1.0000000 | 6.0000000 + 0 | 400 | 100.9090909 | 1 | 1.0000000 | 6.0000000 + 5 | 500 | -51.3333333 | 1 | 1.0000000 | 8.0000000 + 5 | 500 | -41.2692308 | 3 | 1.0000000 | 8.0000000 + 5 | 600 | -64.2500000 | 3 | 1.0000000 | 10.0000000 + 1 | 700 | 21.7592593 | 4 | 1.0000000 | 11.0000000 + 1 | 800 | 57.9736842 | 4 | 1.0000000 | 12.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and current row ); -- mvd 6->5; + qty | dt | cn | vn | to_char | pn +------+------------+----+----+-------------------+----- + 1100 | 1401-01-01 | 2 | 40 | .0000000 | 100 + 1 | 1401-03-01 | 1 | 10 | 10.0000000 | 200 + 1 | 1401-04-01 | 3 | 40 | 25.0000000 | 200 + 1 | 1401-05-01 | 1 | 20 | 23.3333333 | 100 + 1 | 1401-05-02 | 1 | 30 | 25.0000000 | 300 + 1 | 1401-06-01 | 1 | 50 | 30.0000000 | 400 + 1 | 1401-06-01 | 2 | 50 | 33.3333333 | 400 + 12 | 1401-06-01 | 1 | 30 | 32.8558728 | 500 + 12 | 1401-06-01 | 3 | 30 | 32.4974067 | 500 + 12 | 1401-06-01 | 3 | 30 | 32.2183798 | 600 + 1 | 1401-06-01 | 4 | 40 | 32.9969324 | 700 + 1 | 1401-06-01 | 4 | 40 | 33.6338656 | 800 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.qty/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.vn) following ); -- mvd 4,5->3; + vn | vn | to_char | cn | pn +----+----+-------------------+----+----- + 40 | 40 | 4.0000000 | 2 | 100 + 10 | 10 | 4.0000000 | 1 | 200 + 40 | 40 | 4.0000000 | 3 | 200 + 20 | 20 | 4.0000000 | 1 | 100 + 30 | 30 | 4.0000000 | 1 | 300 + 50 | 50 | 4.0000000 | 1 | 400 + 50 | 50 | 4.0000000 | 2 | 400 + 30 | 30 | 4.0000000 | 1 | 500 + 30 | 30 | 4.0000000 | 3 | 500 + 30 | 30 | 4.0000000 | 3 | 600 + 40 | 40 | 4.0000000 | 4 | 700 + 40 | 40 | 4.0000000 | 4 | 800 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn+ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between unbounded preceding and unbounded following ); -- mvd 6,4->5; + qty | qty | dt | vn | to_char | cn +------+------+------------+----+-------------------+---- + 1100 | 1100 | 1401-01-01 | 40 | 28.7471264 | 2 + 1 | 1 | 1401-03-01 | 10 | 28.7471264 | 1 + 1 | 1 | 1401-04-01 | 40 | 28.7471264 | 3 + 1 | 1 | 1401-05-01 | 20 | 28.7471264 | 1 + 1 | 1 | 1401-05-02 | 30 | 28.7471264 | 1 + 1 | 1 | 1401-06-01 | 50 | 28.7471264 | 1 + 1 | 1 | 1401-06-01 | 50 | 28.7471264 | 2 + 12 | 12 | 1401-06-01 | 30 | 28.7471264 | 1 + 12 | 12 | 1401-06-01 | 30 | 28.7471264 | 3 + 12 | 12 | 1401-06-01 | 30 | 28.7471264 | 3 + 1 | 1 | 1401-06-01 | 40 | 28.7471264 | 4 + 1 | 1 | 1401-06-01 | 40 | 28.7471264 | 4 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.vn asc); -- mvd 2->6; 3->7; 5->8; 3->9; 2->10; + qty | pn | cn | prc | vn | to_char | to_char | to_char | to_char | to_char +------+-----+----+------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | 200 | 1 | 0 | 10 | .6477649 | 2.0000000 | .0000000 | 1.0000000 | 1.0000000 + 1 | 100 | 1 | 0 | 20 | .6477649 | 4.0000000 | .0909091 | 1.0000000 | 1.0000000 + 12 | 500 | 3 | 5 | 30 | .6477649 | 9.0000000 | .1818182 | 3.0000000 | 1.0000000 + 12 | 600 | 3 | 5 | 30 | .6477649 | 10.0000000 | .1818182 | 3.0000000 | 1.0000000 + 1 | 300 | 1 | 0 | 30 | .6477649 | 5.0000000 | .1818182 | 1.0000000 | 1.0000000 + 12 | 500 | 1 | 5 | 30 | .6477649 | 3.0000000 | .1818182 | 1.0000000 | 1.0000000 + 1100 | 100 | 2 | 2400 | 40 | .6477649 | 6.0000000 | .5454545 | 2.0000000 | 1.0000000 + 1 | 800 | 4 | 1 | 40 | .6477649 | 12.0000000 | .5454545 | 4.0000000 | 1.0000000 + 1 | 700 | 4 | 1 | 40 | .6477649 | 11.0000000 | .5454545 | 4.0000000 | 1.0000000 + 1 | 200 | 3 | 0 | 40 | .6477649 | 8.0000000 | .5454545 | 3.0000000 | 1.0000000 + 1 | 400 | 2 | 0 | 50 | .6477649 | 7.0000000 | .9090909 | 2.0000000 | 1.0000000 + 1 | 400 | 1 | 0 | 50 | .6477649 | 1.0000000 | .9090909 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between floor(ow_sale.cn*ow_sale.pn) preceding and floor(ow_sale.qty+ow_sale.pn) preceding ); -- mvd 3,4->2; + qty | to_char | cn | vn +------+-------------------+----+---- + 1100 | .0000000 | 2 | 40 + 1 | .0000000 | 1 | 10 + 1 | .0000000 | 3 | 40 + 1 | .0000000 | 1 | 20 + 1 | .0000000 | 1 | 30 + 1 | .0000000 | 1 | 50 + 1 | .0000000 | 2 | 50 + 12 | .0000000 | 1 | 30 + 12 | .0000000 | 3 | 30 + 12 | .0000000 | 3 | 30 + 1 | .0000000 | 4 | 40 + 1 | .0000000 | 4 | 40 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn/ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc rows between floor(ow_sale.pn/ow_sale.pn) preceding and current row ); -- mvd 1->7; + cn | qty | cn | prc | prc | dt | to_char +----+------+----+------+------+------------+------------------- + 2 | 1100 | 2 | 2400 | 2400 | 1401-01-01 | .0000000 + 1 | 1 | 1 | 0 | 0 | 1401-03-01 | .0000000 + 3 | 1 | 3 | 0 | 0 | 1401-04-01 | .0000000 + 1 | 1 | 1 | 0 | 0 | 1401-05-01 | .0000000 + 1 | 1 | 1 | 0 | 0 | 1401-05-02 | .0000000 + 1 | 1 | 1 | 0 | 0 | 1401-06-01 | .0000000 + 2 | 1 | 2 | 0 | 0 | 1401-06-01 | .0000000 + 1 | 12 | 1 | 5 | 5 | 1401-06-01 | .0000000 + 3 | 12 | 3 | 5 | 5 | 1401-06-01 | .0000000 + 3 | 12 | 3 | 5 | 5 | 1401-06-01 | .0000000 + 4 | 1 | 4 | 1 | 1 | 1401-06-01 | .0000000 + 4 | 1 | 4 | 1 | 1 | 1401-06-01 | .0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty-ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between 8 preceding and 0 following ); -- mvd 3,4->2; + dt | to_char | cn | pn +------------+-------------------+----+----- + 1401-01-01 | .0000000 | 2 | 100 + 1401-03-01 | -365.3333333 | 1 | 200 + 1401-04-01 | -182.1666667 | 3 | 200 + 1401-05-01 | -283.9259259 | 1 | 100 + 1401-05-02 | -322.2352941 | 1 | 300 + 1401-06-01 | -83.5384615 | 1 | 400 + 1401-06-01 | 1.0000000 | 2 | 400 + 1401-06-01 | -26.3243243 | 1 | 500 + 1401-06-01 | -47.1428571 | 3 | 500 + 1401-06-01 | 6.4098361 | 3 | 600 + 1401-06-01 | 12.5945946 | 4 | 700 + 1401-06-01 | 12.5945946 | 4 | 800 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc rows between 2 preceding and floor(ow_sale.vn) following ); -- mvd 1,6->7; 1,6->8; + vn | vn | vn | vn | vn | pn | to_char | to_char +----+----+----+----+----+-----+-------------------+------------------- + 40 | 40 | 40 | 40 | 40 | 100 | -33.6338656 | .0000000 + 10 | 10 | 10 | 10 | 10 | 200 | -33.6338656 | .0000000 + 40 | 40 | 40 | 40 | 40 | 200 | -33.6338656 | .0000000 + 20 | 20 | 20 | 20 | 20 | 100 | -34.9103943 | .0000000 + 30 | 30 | 30 | 30 | 30 | 300 | -38.8981289 | .0000000 + 50 | 50 | 50 | 50 | 50 | 400 | -38.6881188 | .0000000 + 50 | 50 | 50 | 50 | 50 | 400 | -43.0886850 | .0000000 + 30 | 30 | 30 | 30 | 30 | 500 | -47.1200000 | .0000000 + 30 | 30 | 30 | 30 | 30 | 500 | -45.8381503 | .0000000 + 30 | 30 | 30 | 30 | 30 | 600 | -42.5000000 | 1.0000000 + 40 | 40 | 40 | 40 | 40 | 700 | -42.5000000 | 1.0000000 + 40 | 40 | 40 | 40 | 40 | 800 | -42.5000000 | 1.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn+ow_sale.cn),floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.vn-ow_sale.vn) preceding and unbounded following ); -- mvd 3->2; + dt | to_char | cn +------------+-------------------+---- + 1401-01-01 | 2.0372152 | 2 + 1401-03-01 | 1.6700891 | 1 + 1401-04-01 | 1.6790190 | 3 + 1401-05-01 | .5960824 | 1 + 1401-05-02 | -.4019640 | 1 + 1401-06-01 | -.4474576 | 1 + 1401-06-01 | .3474801 | 2 + 1401-06-01 | .7993579 | 1 + 1401-06-01 | 3.7766367 | 3 + 1401-06-01 | 3.3333333 | 3 + 1401-06-01 | 8.0000000 | 4 + 1401-06-01 | .0000000 | 4 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between current row and current row ); -- mvd 1->3; + vn | cn | to_char +----+----+------------------- + 40 | 2 | .0000000 + 10 | 1 | .0000000 + 40 | 3 | .0000000 + 20 | 1 | .0000000 + 30 | 1 | .0000000 + 50 | 1 | .0000000 + 50 | 2 | .0000000 + 30 | 1 | .0000000 + 30 | 3 | .0000000 + 30 | 3 | .0000000 + 40 | 4 | .0000000 + 40 | 4 | .0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc/ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.cn asc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.pn,ow_sale.qty order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.cn asc rows between current row and current row ), +win2 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.vn desc), +win4 as (order by ow_sale.vn desc); -- mvd 4,6->7; 4,3,1->8; 6->9; 4,6->10; 4,3,1->11; 6->12; + pn | pn | qty | cn | qty | vn | to_char | to_char | to_char | to_char | to_char | to_char +-----+-----+------+----+------+----+-------------------+-------------------+-------------------+-------------------+-------------------+------------------- + 400 | 400 | 1 | 2 | 1 | 50 | .0000000 | 2.0000000 | 50.0000000 | 1.0000000 | 2.0000000 | 1.0000000 + 400 | 400 | 1 | 1 | 1 | 50 | .0000000 | 1.0000000 | 50.0000000 | 1.0000000 | 1.0000000 | 2.0000000 + 800 | 800 | 1 | 4 | 1 | 40 | .0000000 | 1.0000000 | 40.0000000 | 1.0000000 | 1.0000000 | 3.0000000 + 200 | 200 | 1 | 3 | 1 | 40 | .0000000 | 2.0000000 | 40.0000000 | 1.0000000 | 2.0000000 | 4.0000000 + 700 | 700 | 1 | 4 | 1 | 40 | .0000000 | 1.0000000 | 30.0000000 | 1.0000000 | 1.0000000 | 5.0000000 + 100 | 100 | 1100 | 2 | 1100 | 40 | .0000000 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 | 6.0000000 + 500 | 500 | 12 | 1 | 12 | 30 | .0000000 | 1.0000000 | 40.0000000 | 1.0000000 | 1.0000000 | 7.0000000 + 500 | 500 | 12 | 3 | 12 | 30 | .0000000 | 2.0000000 | 20.0000000 | 1.0000000 | 2.0000000 | 8.0000000 + 600 | 600 | 12 | 3 | 12 | 30 | .0000000 | 1.0000000 | 30.0000000 | 1.0000000 | 1.0000000 | 9.0000000 + 300 | 300 | 1 | 1 | 1 | 30 | .0000000 | 1.0000000 | 30.0000000 | 1.0000000 | 1.0000000 | 10.0000000 + 100 | 100 | 1 | 1 | 1 | 20 | .0000000 | 1.0000000 | 20.0000000 | 1.0000000 | 1.0000000 | 11.0000000 + 200 | 200 | 1 | 1 | 1 | 10 | .0000000 | 1.0000000 | 10.0000000 | 1.0000000 | 1.0000000 | 12.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between current row and 1 following ); -- mvd 1->2; + cn | to_char +----+------------------- + 2 | 2199.0000000 + 1 | .0000000 + 3 | 1.0000000 + 1 | 1.0000000 + 1 | 1.0000000 + 1 | .0000000 + 2 | -43.0000000 + 1 | .0000000 + 3 | 12.0000000 + 3 | 78.0000000 + 4 | 1.0000000 + 4 | .0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn),floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.vn desc rows between current row and 3 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between current row and 3 following ), +win2 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 3->6; 3->7; 3->8; + cn | prc | vn | vn | prc | to_char | to_char | to_char +----+------+----+----+------+-------------------+-------------------+------------------- + 2 | 2400 | 40 | 40 | 2400 | .0000000 | .0000000 | -2300.0000000 + 1 | 0 | 10 | 10 | 0 | .0000000 | .0000000 | 100.0000000 + 3 | 0 | 40 | 40 | 0 | .0000000 | .0000000 | 100.0000000 + 1 | 0 | 20 | 20 | 0 | .0000000 | .0000000 | 100.0000000 + 1 | 0 | 30 | 30 | 0 | .0000000 | .0000000 | 300.0000000 + 1 | 0 | 50 | 50 | 0 | .0000000 | .0000000 | 400.0000000 + 2 | 0 | 50 | 50 | 0 | .0000000 | .0000000 | 400.0000000 + 1 | 5 | 30 | 30 | 5 | .0000000 | .0000000 | 495.0000000 + 3 | 5 | 30 | 30 | 5 | .0000000 | .0000000 | 495.0000000 + 3 | 5 | 30 | 30 | 5 | .0000000 | .0000000 | 595.0000000 + 4 | 1 | 40 | 40 | 1 | .0000000 | .0000000 | 699.0000000 + 4 | 1 | 40 | 40 | 1 | .0000000 | .0000000 | 799.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn/ow_sale.vn),floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between current row and unbounded following ); -- mvd 3->2; + qty | to_char | vn +------+-------------------+---- + 1100 | .0000000 | 40 + 1 | .0000000 | 10 + 1 | .0000000 | 40 + 1 | .0000000 | 20 + 1 | .0000000 | 30 + 1 | .0000000 | 50 + 1 | .0000000 | 50 + 12 | .0000000 | 30 + 12 | .0000000 | 30 + 12 | .0000000 | 30 + 1 | .0000000 | 40 + 1 | .0000000 | 40 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn),floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty-ow_sale.cn) as int),cast (floor(ow_sale.qty/ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between current row and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,4->2; 3,6,4->5; + vn | to_char | cn | pn | to_char | dt +----+-------------------+----+-----+-------------------+------------ + 40 | .0000000 | 2 | 100 | .0000000 | 1401-01-01 + 10 | .0000000 | 1 | 200 | .0000000 | 1401-03-01 + 40 | .0000000 | 3 | 200 | -2.0000000 | 1401-04-01 + 20 | .0000000 | 1 | 100 | .0000000 | 1401-05-01 + 30 | .0000000 | 1 | 300 | .0000000 | 1401-05-02 + 50 | .0000000 | 1 | 400 | .0000000 | 1401-06-01 + 50 | .0000000 | 2 | 400 | -1.0000000 | 1401-06-01 + 30 | .0000000 | 1 | 500 | 11.0000000 | 1401-06-01 + 30 | .0000000 | 3 | 500 | 9.0000000 | 1401-06-01 + 30 | .0000000 | 3 | 600 | 9.0000000 | 1401-06-01 + 40 | .0000000 | 4 | 700 | -3.0000000 | 1401-06-01 + 40 | .0000000 | 4 | 800 | -3.0000000 | 1401-06-01 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc+ow_sale.vn),floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.cn) following and floor(ow_sale.pn) following ); -- mvd 1->6; + cn | vn | pn | prc | pn | to_char +----+----+-----+------+-----+------------------- + 2 | 40 | 100 | 2400 | 100 | .0000000 + 1 | 10 | 200 | 0 | 200 | .0000000 + 3 | 40 | 200 | 0 | 200 | .0000000 + 1 | 20 | 100 | 0 | 100 | .0000000 + 1 | 30 | 300 | 0 | 300 | .0000000 + 1 | 50 | 400 | 0 | 400 | .0000000 + 2 | 50 | 400 | 0 | 400 | .0000000 + 1 | 30 | 500 | 5 | 500 | .0000000 + 3 | 30 | 500 | 5 | 500 | .0000000 + 3 | 30 | 600 | 5 | 600 | .0000000 + 4 | 40 | 700 | 1 | 700 | .0000000 + 4 | 40 | 800 | 1 | 800 | .0000000 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.vn desc rows between floor(ow_sale.pn+ow_sale.qty) following and unbounded following ); -- mvd 3,4->2; + qty | to_char | cn | vn +------+-------------------+----+---- + 1100 | .0000000 | 2 | 40 + 1 | .0000000 | 1 | 10 + 1 | .0000000 | 3 | 40 + 1 | .0000000 | 1 | 20 + 1 | .0000000 | 1 | 30 + 1 | .0000000 | 1 | 50 + 1 | .0000000 | 2 | 50 + 12 | .0000000 | 1 | 30 + 12 | .0000000 | 3 | 30 + 12 | .0000000 | 3 | 30 + 1 | .0000000 | 4 | 40 + 1 | .0000000 | 4 | 40 +(12 rows) + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc-ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between floor(ow_sale.vn) following and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.cn asc); -- mvd 4,2->6; 4,2->7; 4,1->8; 4,1->9; 4,2->10; + pn | vn | qty | cn | vn | to_char | to_char | to_char | to_char | to_char +-----+----+------+----+----+-------------------+-------------------+-------------------+-------------------+------------------- + 100 | 40 | 1100 | 2 | 40 | .0000000 | .0000000 | 1.0000000 | 2.0000000 | .0000000 + 200 | 10 | 1 | 1 | 10 | .0000000 | 1.0000000 | .5000000 | 1.0000000 | 760.0000000 + 200 | 40 | 1 | 3 | 40 | .0000000 | .0000000 | 1.0000000 | 2.0000000 | .0000000 + 100 | 20 | 1 | 1 | 20 | .0000000 | .0000000 | .5000000 | 1.0000000 | .0000000 + 300 | 30 | 1 | 1 | 30 | .0000000 | .0000000 | 1.0000000 | 1.0000000 | .0000000 + 400 | 50 | 1 | 1 | 50 | .0000000 | .0000000 | .5000000 | 1.0000000 | .0000000 + 400 | 50 | 1 | 2 | 50 | .0000000 | .0000000 | 1.0000000 | 2.0000000 | .0000000 + 500 | 30 | 12 | 1 | 30 | .0000000 | .0000000 | .5000000 | 1.0000000 | .0000000 + 500 | 30 | 12 | 3 | 30 | .0000000 | .0000000 | 1.0000000 | 2.0000000 | .0000000 + 600 | 30 | 12 | 3 | 30 | .0000000 | .0000000 | 1.0000000 | 1.0000000 | .0000000 + 700 | 40 | 1 | 4 | 40 | .0000000 | .0000000 | 1.0000000 | 1.0000000 | .0000000 + 800 | 40 | 1 | 4 | 40 | .0000000 | .0000000 | 1.0000000 | 1.0000000 | .0000000 +(12 rows) + +-- REGR_INTERCEPT() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty-ow_sale.pn),floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.vn desc,ow_sale.pn asc); -- mvd 1,6,7->5; + cn | dt | qty | dt | to_char | vn | pn +----+------------+------+------------+-------------------+----+----- + 1 | 1401-06-01 | 1 | 1401-06-01 | .0000000 | 50 | 400 + 1 | 1401-05-02 | 1 | 1401-05-02 | -144.0000000 | 30 | 300 + 1 | 1401-06-01 | 12 | 1401-06-01 | -384.9750000 | 30 | 500 + 1 | 1401-05-01 | 1 | 1401-05-01 | -54.8368421 | 20 | 100 + 1 | 1401-03-01 | 1 | 1401-03-01 | -99.7977273 | 10 | 200 + 3 | 1401-04-01 | 1 | 1401-04-01 | .0000000 | 40 | 200 + 3 | 1401-06-01 | 12 | 1401-06-01 | -1441.7000000 | 30 | 500 + 3 | 1401-06-01 | 12 | 1401-06-01 | -1656.7000000 | 30 | 600 + 2 | 1401-06-01 | 1 | 1401-06-01 | .0000000 | 50 | 400 + 2 | 1401-01-01 | 1100 | 1401-01-01 | 6875.8000000 | 40 | 100 + 4 | 1401-06-01 | 1 | 1401-06-01 | .0000000 | 40 | 700 + 4 | 1401-06-01 | 1 | 1401-06-01 | .0000000 | 40 | 800 +(12 rows) + +-- REGR_INTERCEPT() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty +, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.dt order by ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.dt order by ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.dt order by ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn+ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.dt order by ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.dt order by ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn desc); -- mvd 6,3,7,8,2->5; 6,3,7,8,2->9; 6,3,7,8,2->10; 6,3,7,8,2->11; 6,3,7,8,2->12; 6,3,7,8,2->13; + pn | vn | cn | pn | to_char | prc | dt | qty | to_char | to_char | to_char | to_char | to_char +-----+----+----+-----+-------------------+------+------------+------+-------------------+-------------------+-------------------+-------------------+------------------- + 100 | 20 | 1 | 100 | .0000000 | 0 | 1401-05-01 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 500 | 30 | 1 | 500 | .0000000 | 5 | 1401-06-01 | 12 | .0000000 | .3333333 | 1.0000000 | 1.0000000 | 1.0000000 + 600 | 30 | 3 | 600 | .0000000 | 5 | 1401-06-01 | 12 | .0000000 | 1.0000000 | 3.0000000 | 2.0000000 | 3.0000000 + 500 | 30 | 3 | 500 | .0000000 | 5 | 1401-06-01 | 12 | .0000000 | 1.0000000 | 3.0000000 | 3.0000000 | 3.0000000 + 200 | 40 | 3 | 200 | .0000000 | 0 | 1401-04-01 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 800 | 40 | 4 | 800 | .0000000 | 1 | 1401-06-01 | 1 | .0000000 | 1.0000000 | 2.0000000 | 1.0000000 | 2.0000000 + 700 | 40 | 4 | 700 | .0000000 | 1 | 1401-06-01 | 1 | .0000000 | 1.0000000 | 2.0000000 | 2.0000000 | 2.0000000 + 200 | 10 | 1 | 200 | .0000000 | 0 | 1401-03-01 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 300 | 30 | 1 | 300 | .0000000 | 0 | 1401-05-02 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 100 | 40 | 2 | 100 | .0000000 | 2400 | 1401-01-01 | 1100 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 400 | 50 | 1 | 400 | .0000000 | 0 | 1401-06-01 | 1 | .0000000 | .5000000 | 1.0000000 | 1.0000000 | 1.0000000 + 400 | 50 | 2 | 400 | .0000000 | 0 | 1401-06-01 | 1 | .0000000 | 1.0000000 | 2.0000000 | 2.0000000 | 2.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn desc range unbounded preceding ); -- mvd 3,4->2; + pn | to_char | cn | vn +-----+-------------------+----+---- + 200 | .0000000 | 1 | 10 + 100 | .0000000 | 1 | 20 + 500 | .0000000 | 3 | 30 + 600 | .0000000 | 3 | 30 + 300 | 1.0000000 | 1 | 30 + 500 | 1.0000000 | 1 | 30 + 700 | .0000000 | 4 | 40 + 800 | .0000000 | 4 | 40 + 200 | 1.0000000 | 3 | 40 + 100 | .6946799 | 2 | 40 + 400 | .0000000 | 2 | 50 + 400 | .0000000 | 1 | 50 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.pn asc range floor(ow_sale.vn) preceding ); -- mvd 3,4->2; + qty | to_char | cn | pn +------+-------------------+----+----- + 1 | .0000000 | 1 | 100 + 1 | .0000000 | 1 | 200 + 1 | .0000000 | 1 | 300 + 1 | .0000000 | 1 | 400 + 12 | .0000000 | 1 | 500 + 1 | .0000000 | 3 | 200 + 12 | .0000000 | 3 | 500 + 12 | .0000000 | 3 | 600 + 1100 | .0000000 | 2 | 100 + 1 | .0000000 | 2 | 400 + 1 | .0000000 | 4 | 700 + 1 | .0000000 | 4 | 800 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn),floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.pn desc range floor(ow_sale.qty) preceding ), +win2 as (partition by ow_sale.vn order by ow_sale.cn desc); -- mvd 4,1->3; 6,2->5; + pn | vn | to_char | dt | to_char | cn +-----+----+-------------------+------------+-------------------+---- + 200 | 10 | .0000000 | 1401-03-01 | 1.0000000 | 1 + 300 | 30 | .0000000 | 1401-05-02 | 3.0000000 | 1 + 800 | 40 | .0000000 | 1401-06-01 | 2.0000000 | 4 + 700 | 40 | .0000000 | 1401-06-01 | 1.0000000 | 4 + 600 | 30 | .0000000 | 1401-06-01 | 1.0000000 | 3 + 500 | 30 | .0000000 | 1401-06-01 | 4.0000000 | 1 + 500 | 30 | .0000000 | 1401-06-01 | 2.0000000 | 3 + 400 | 50 | .0000000 | 1401-06-01 | 1.0000000 | 2 + 400 | 50 | .0000000 | 1401-06-01 | 2.0000000 | 1 + 100 | 40 | .0000000 | 1401-01-01 | 4.0000000 | 2 + 200 | 40 | .0000000 | 1401-04-01 | 3.0000000 | 3 + 100 | 20 | .0000000 | 1401-05-01 | 1.0000000 | 1 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn-ow_sale.qty),floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.vn order by ow_sale.vn desc range current row ); -- mvd 6,7->5; + cn | cn | cn | pn | to_char | dt | vn +----+----+----+-----+-------------------+------------+---- + 1 | 1 | 1 | 200 | .0000000 | 1401-03-01 | 10 + 1 | 1 | 1 | 300 | .0000000 | 1401-05-02 | 30 + 3 | 3 | 3 | 600 | .0000000 | 1401-06-01 | 30 + 3 | 3 | 3 | 500 | .0000000 | 1401-06-01 | 30 + 1 | 1 | 1 | 500 | .0000000 | 1401-06-01 | 30 + 4 | 4 | 4 | 700 | .0000000 | 1401-06-01 | 40 + 4 | 4 | 4 | 800 | .0000000 | 1401-06-01 | 40 + 2 | 2 | 2 | 400 | .0000000 | 1401-06-01 | 50 + 1 | 1 | 1 | 400 | .0000000 | 1401-06-01 | 50 + 1 | 1 | 1 | 100 | .0000000 | 1401-05-01 | 20 + 2 | 2 | 2 | 100 | .0000000 | 1401-01-01 | 40 + 3 | 3 | 3 | 200 | .0000000 | 1401-04-01 | 40 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty*ow_sale.qty),floor(ow_sale.cn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.vn) as int),cast (floor(ow_sale.prc+ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.vn desc range current row ), +win2 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc), +win3 as (order by ow_sale.pn asc); -- mvd 1,2->4; 6,7,1,3,2->5; 2->8; 2->9; + vn | pn | qty | to_char | to_char | prc | dt | to_char | to_char +----+-----+------+-------------------+-------------------+------+------------+-------------------+------------------- + 40 | 100 | 1100 | .0000000 | .0000000 | 2400 | 1401-01-01 | 1.0000000 | .1666667 + 20 | 100 | 1 | .0000000 | .0000000 | 0 | 1401-05-01 | 2.0000000 | .1666667 + 40 | 200 | 1 | .0000000 | .0000000 | 0 | 1401-04-01 | 3.0000000 | .3333333 + 10 | 200 | 1 | .0000000 | .0000000 | 0 | 1401-03-01 | 4.0000000 | .3333333 + 30 | 300 | 1 | .0000000 | .0000000 | 0 | 1401-05-02 | 5.0000000 | .4166667 + 50 | 400 | 1 | 1.0000000 | .0000000 | 0 | 1401-06-01 | 6.0000000 | .5833333 + 50 | 400 | 1 | 1.0000000 | .0000000 | 0 | 1401-06-01 | 7.0000000 | .5833333 + 30 | 500 | 12 | 144.0000000 | .0000000 | 5 | 1401-06-01 | 8.0000000 | .7500000 + 30 | 500 | 12 | 144.0000000 | .0000000 | 5 | 1401-06-01 | 9.0000000 | .7500000 + 30 | 600 | 12 | .0000000 | .0000000 | 5 | 1401-06-01 | 10.0000000 | .8333333 + 40 | 700 | 1 | .0000000 | .0000000 | 1 | 1401-06-01 | 11.0000000 | .9166667 + 40 | 800 | 1 | .0000000 | .0000000 | 1 | 1401-06-01 | 12.0000000 | 1.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.pn desc range between unbounded preceding and floor(ow_sale.cn+ow_sale.pn) preceding ); -- mvd 7,5,1->6; + pn | qty | qty | dt | vn | to_char | cn +-----+------+------+------------+----+-------------------+---- + 200 | 1 | 1 | 1401-03-01 | 10 | .0000000 | 1 + 100 | 1 | 1 | 1401-05-01 | 20 | .0000000 | 1 + 600 | 12 | 12 | 1401-06-01 | 30 | .0000000 | 3 + 200 | 1 | 1 | 1401-04-01 | 40 | .0000000 | 3 + 800 | 1 | 1 | 1401-06-01 | 40 | .0000000 | 4 + 400 | 1 | 1 | 1401-06-01 | 50 | .0000000 | 2 + 300 | 1 | 1 | 1401-05-02 | 30 | .0000000 | 1 + 500 | 12 | 12 | 1401-06-01 | 30 | .0000000 | 1 + 500 | 12 | 12 | 1401-06-01 | 30 | .0000000 | 3 + 100 | 1100 | 1100 | 1401-01-01 | 40 | .0000000 | 2 + 700 | 1 | 1 | 1401-06-01 | 40 | .0000000 | 4 + 400 | 1 | 1 | 1401-06-01 | 50 | .0000000 | 1 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn*ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.cn asc range between unbounded preceding and current row ); -- mvd 2,3,1->5; + cn | prc | dt | qty | to_char +----+------+------------+------+------------------- + 1 | 0 | 1401-05-01 | 1 | .0000000 + 2 | 0 | 1401-06-01 | 1 | .0000000 + 3 | 0 | 1401-04-01 | 1 | .0000000 + 1 | 0 | 1401-03-01 | 1 | .0000000 + 1 | 0 | 1401-05-02 | 1 | .0000000 + 1 | 0 | 1401-06-01 | 1 | .0000000 + 4 | 1 | 1401-06-01 | 1 | .0000000 + 4 | 1 | 1401-06-01 | 1 | .0000000 + 1 | 5 | 1401-06-01 | 12 | .0000000 + 3 | 5 | 1401-06-01 | 12 | .0000000 + 3 | 5 | 1401-06-01 | 12 | .0000000 + 2 | 2400 | 1401-01-01 | 1100 | .0000000 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn),floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn*ow_sale.pn)) OVER(partition by ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc*ow_sale.prc)) OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and current row ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.vn desc); -- mvd 5->4; 5,1,7,8->6; 5->9; 5,1,7,8->10; + dt | qty | qty | to_char | cn | to_char | vn | pn | to_char | to_char +------------+------+------+-------------------+----+-------------------+----+-----+-------------------+------------------- + 1401-05-02 | 1 | 1 | 300.0000000 | 1 | 1.0000000 | 30 | 300 | 5.0000000 | .0000000 + 1401-06-01 | 12 | 12 | 300.0000000 | 1 | 1.0000000 | 30 | 500 | 5.0000000 | 25.0000000 + 1401-06-01 | 1 | 1 | 300.0000000 | 1 | 1.0000000 | 50 | 400 | 5.0000000 | .0000000 + 1401-03-01 | 1 | 1 | 300.0000000 | 1 | 1.0000000 | 10 | 200 | 5.0000000 | .0000000 + 1401-05-01 | 1 | 1 | 300.0000000 | 1 | 1.0000000 | 20 | 100 | 5.0000000 | .0000000 + 1401-06-01 | 12 | 12 | 410.0000000 | 3 | 1.0000000 | 30 | 600 | 3.0000000 | 25.0000000 + 1401-06-01 | 12 | 12 | 410.0000000 | 3 | 1.0000000 | 30 | 500 | 3.0000000 | 25.0000000 + 1401-04-01 | 1 | 1 | 410.0000000 | 3 | 1.0000000 | 40 | 200 | 3.0000000 | .0000000 + 1401-01-01 | 1100 | 1100 | 399.7500000 | 2 | 1.0000000 | 40 | 100 | 2.0000000 | 5760000.0000000 + 1401-06-01 | 1 | 1 | 399.7500000 | 2 | 1.0000000 | 50 | 400 | 2.0000000 | .0000000 + 1401-06-01 | 1 | 1 | .0000000 | 4 | 1.0000000 | 40 | 700 | 2.0000000 | 1.0000000 + 1401-06-01 | 1 | 1 | .0000000 | 4 | 1.0000000 | 40 | 800 | 2.0000000 | 1.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn),floor(ow_sale.cn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.pn desc range between unbounded preceding and floor(ow_sale.vn) following ); -- mvd 5,2->4; + cn | pn | qty | to_char | dt +----+-----+------+-------------------+------------ + 1 | 200 | 1 | .0000000 | 1401-03-01 + 1 | 300 | 1 | .0000000 | 1401-05-02 + 4 | 800 | 1 | .0000000 | 1401-06-01 + 4 | 700 | 1 | .0000000 | 1401-06-01 + 3 | 600 | 12 | 17.1428571 | 1401-06-01 + 3 | 500 | 12 | 24.5544554 | 1401-06-01 + 1 | 500 | 12 | 24.5544554 | 1401-06-01 + 1 | 400 | 1 | 36.1240310 | 1401-06-01 + 2 | 400 | 1 | 36.1240310 | 1401-06-01 + 2 | 100 | 1100 | .0000000 | 1401-01-01 + 3 | 200 | 1 | .0000000 | 1401-04-01 + 1 | 100 | 1 | .0000000 | 1401-05-01 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn/ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.vn/ow_sale.cn) following ), +win2 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.cn desc); -- mvd 4,1,2,5->3; 1,7,2->6; + cn | vn | to_char | dt | pn | to_char | qty +----+----+-------------------+------------+-----+-------------------+------ + 1 | 20 | .0000000 | 1401-05-01 | 100 | 1.0000000 | 1 + 1 | 30 | .0000000 | 1401-05-02 | 300 | 1.0000000 | 1 + 1 | 50 | .0000000 | 1401-06-01 | 400 | 2.0000000 | 1 + 1 | 30 | .0000000 | 1401-06-01 | 500 | 3.0000000 | 12 + 3 | 40 | .0000000 | 1401-04-01 | 200 | 3.0000000 | 1 + 3 | 30 | .0000000 | 1401-06-01 | 500 | 2.0000000 | 12 + 4 | 40 | .0000000 | 1401-06-01 | 700 | 1.0000000 | 1 + 1 | 10 | .0000000 | 1401-03-01 | 200 | 1.0000000 | 1 + 2 | 40 | .0000000 | 1401-01-01 | 100 | 1.0000000 | 1100 + 2 | 50 | .0000000 | 1401-06-01 | 400 | 1.0000000 | 1 + 3 | 30 | .0000000 | 1401-06-01 | 600 | 1.0000000 | 12 + 4 | 40 | .0000000 | 1401-06-01 | 800 | 2.0000000 | 1 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn-ow_sale.qty),floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.pn asc range between unbounded preceding and unbounded following ); -- mvd 6,1->5; + pn | prc | qty | pn | to_char | cn +-----+------+------+-----+-------------------+---- + 100 | 0 | 1 | 100 | 18.0000000 | 1 + 200 | 0 | 1 | 200 | 18.0000000 | 1 + 300 | 0 | 1 | 300 | 18.0000000 | 1 + 400 | 0 | 1 | 400 | 18.0000000 | 1 + 500 | 5 | 12 | 500 | 18.0000000 | 1 + 200 | 0 | 1 | 200 | 18.0000000 | 3 + 500 | 5 | 12 | 500 | 18.0000000 | 3 + 600 | 5 | 12 | 600 | 18.0000000 | 3 + 100 | 2400 | 1100 | 100 | -1060.0000000 | 2 + 400 | 0 | 1 | 400 | -1060.0000000 | 2 + 700 | 1 | 1 | 700 | .0000000 | 4 + 800 | 1 | 1 | 800 | .0000000 | 4 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.prc order by ow_sale.cn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.pn asc); -- mvd 6,3,7,1->5; 3,4->8; + vn | vn | cn | pn | to_char | prc | dt | to_char +----+----+----+-----+-------------------+------+------------+------------------- + 10 | 10 | 1 | 200 | .0000000 | 0 | 1401-03-01 | 1.0000000 + 30 | 30 | 1 | 300 | .0000000 | 0 | 1401-05-02 | 1.0000000 + 30 | 30 | 3 | 500 | 302.7272727 | 5 | 1401-06-01 | 1.0000000 + 30 | 30 | 3 | 600 | 302.7272727 | 5 | 1401-06-01 | 1.0000000 + 30 | 30 | 1 | 500 | 302.7272727 | 5 | 1401-06-01 | 1.0000000 + 50 | 50 | 2 | 400 | .0000000 | 0 | 1401-06-01 | 1.0000000 + 50 | 50 | 1 | 400 | .0000000 | 0 | 1401-06-01 | 1.0000000 + 20 | 20 | 1 | 100 | .0000000 | 0 | 1401-05-01 | 1.0000000 + 40 | 40 | 2 | 100 | .0000000 | 2400 | 1401-01-01 | 1.0000000 + 40 | 40 | 3 | 200 | .0000000 | 0 | 1401-04-01 | 1.0000000 + 40 | 40 | 4 | 700 | 413.3333333 | 1 | 1401-06-01 | 1.0000000 + 40 | 40 | 4 | 800 | 413.3333333 | 1 | 1401-06-01 | 1.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.cn desc range between floor(ow_sale.pn/ow_sale.pn) preceding and floor(ow_sale.cn) preceding ); -- mvd 2,4,5->3; + pn | dt | to_char | cn | vn +-----+------------+-------------------+----+---- + 100 | 1401-05-01 | .0000000 | 1 | 20 + 400 | 1401-06-01 | .0000000 | 2 | 50 + 200 | 1401-04-01 | .0000000 | 3 | 40 + 800 | 1401-06-01 | .0000000 | 4 | 40 + 700 | 1401-06-01 | .0000000 | 4 | 40 + 200 | 1401-03-01 | .0000000 | 1 | 10 + 300 | 1401-05-02 | .0000000 | 1 | 30 + 500 | 1401-06-01 | .0000000 | 1 | 30 + 400 | 1401-06-01 | .0000000 | 1 | 50 + 100 | 1401-01-01 | .0000000 | 2 | 40 + 600 | 1401-06-01 | .0000000 | 3 | 30 + 500 | 1401-06-01 | .0000000 | 3 | 30 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn order by ow_sale.pn desc range between 2 preceding and 3 preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 5,6,7->4; 7->8; + cn | cn | dt | to_char | prc | vn | pn | to_char +----+----+------------+-------------------+------+----+-----+------------------- + 2 | 2 | 1401-01-01 | .0000000 | 2400 | 40 | 100 | .0000000 + 1 | 1 | 1401-03-01 | .0000000 | 0 | 10 | 200 | .0000000 + 3 | 3 | 1401-04-01 | .0000000 | 0 | 40 | 200 | .0000000 + 1 | 1 | 1401-05-01 | .0000000 | 0 | 20 | 100 | .0000000 + 1 | 1 | 1401-05-02 | .0000000 | 0 | 30 | 300 | .0000000 + 1 | 1 | 1401-06-01 | .0000000 | 0 | 50 | 400 | .0000000 + 2 | 2 | 1401-06-01 | .0000000 | 0 | 50 | 400 | .0000000 + 1 | 1 | 1401-06-01 | .0000000 | 5 | 30 | 500 | .0000000 + 3 | 3 | 1401-06-01 | .0000000 | 5 | 30 | 500 | .0000000 + 3 | 3 | 1401-06-01 | .0000000 | 5 | 30 | 600 | .0000000 + 4 | 4 | 1401-06-01 | .0000000 | 1 | 40 | 700 | .0000000 + 4 | 4 | 1401-06-01 | .0000000 | 1 | 40 | 800 | .0000000 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn*ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.cn desc range between 1 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.cn desc range between 1 preceding and current row ), +win2 as (order by ow_sale.cn asc); -- mvd 1,4,5->3; 1,4,5->6; 1->7; 1->8; 1->9; 1->10; + cn | dt | to_char | vn | pn | to_char | to_char | to_char | to_char | to_char +----+------------+-------------------+----+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | 1401-05-01 | .0000000 | 20 | 100 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 5.0000000 + 1 | 1401-03-01 | .0000000 | 10 | 200 | 1.0000000 | 2.0000000 | 1.0000000 | 2.0000000 | 5.0000000 + 1 | 1401-05-02 | .0000000 | 30 | 300 | 1.0000000 | 3.0000000 | 1.0000000 | 3.0000000 | 5.0000000 + 1 | 1401-06-01 | .0000000 | 50 | 400 | 1.0000000 | 4.0000000 | 1.0000000 | 4.0000000 | 5.0000000 + 1 | 1401-06-01 | .0000000 | 30 | 500 | 1.0000000 | 5.0000000 | 1.0000000 | 5.0000000 | 5.0000000 + 2 | 1401-01-01 | .0000000 | 40 | 100 | 1.0000000 | 6.0000000 | 6.0000000 | 6.0000000 | 7.0000000 + 2 | 1401-06-01 | .0000000 | 50 | 400 | 1.0000000 | 7.0000000 | 6.0000000 | 7.0000000 | 7.0000000 + 3 | 1401-04-01 | .0000000 | 40 | 200 | 1.0000000 | 8.0000000 | 8.0000000 | 8.0000000 | 10.0000000 + 3 | 1401-06-01 | .0000000 | 30 | 600 | 1.0000000 | 9.0000000 | 8.0000000 | 9.0000000 | 10.0000000 + 3 | 1401-06-01 | .0000000 | 30 | 500 | 1.0000000 | 10.0000000 | 8.0000000 | 10.0000000 | 10.0000000 + 4 | 1401-06-01 | .0000000 | 40 | 700 | 1.0000000 | 11.0000000 | 11.0000000 | 11.0000000 | 12.0000000 + 4 | 1401-06-01 | .0000000 | 40 | 800 | 1.0000000 | 12.0000000 | 11.0000000 | 12.0000000 | 12.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn desc range between 0 preceding and 4 following ); -- mvd 2,5->4; + qty | cn | pn | to_char | dt +------+----+-----+-------------------+------------ + 1 | 1 | 200 | .0000000 | 1401-03-01 + 1 | 1 | 300 | .0000000 | 1401-05-02 + 1 | 4 | 800 | 38.2317073 | 1401-06-01 + 1 | 4 | 700 | 38.2317073 | 1401-06-01 + 12 | 3 | 600 | 42.1666667 | 1401-06-01 + 12 | 3 | 500 | 42.1666667 | 1401-06-01 + 1 | 2 | 400 | 44.5161290 | 1401-06-01 + 1 | 1 | 400 | 46.0000000 | 1401-06-01 + 12 | 1 | 500 | 46.0000000 | 1401-06-01 + 1100 | 2 | 100 | .0000000 | 1401-01-01 + 1 | 3 | 200 | .0000000 | 1401-04-01 + 1 | 1 | 100 | .0000000 | 1401-05-01 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn-ow_sale.vn),floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc range between 4 preceding and 1 following ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.prc,ow_sale.dt,ow_sale.pn,ow_sale.dt order by ow_sale.cn desc); -- mvd 4,5,6->3; 4->7; 9,4,10,6->8; 4->11; 4->12; + qty | qty | to_char | cn | vn | pn | to_char | to_char | prc | dt | to_char | to_char +------+------+-------------------+----+----+-----+-------------------+-------------------+------+------------+-------------------+------------------- + 1 | 1 | .0000000 | 4 | 40 | 800 | 1.0000000 | .0000000 | 1 | 1401-06-01 | 1.0000000 | 1.0000000 + 1 | 1 | .0000000 | 4 | 40 | 700 | 1.0000000 | .0000000 | 1 | 1401-06-01 | 1.0000000 | 1.0000000 + 12 | 12 | .0000000 | 3 | 30 | 500 | 2.0000000 | .0000000 | 5 | 1401-06-01 | 3.0000000 | 2.0000000 + 1 | 1 | .0000000 | 3 | 40 | 200 | 2.0000000 | .0000000 | 0 | 1401-04-01 | 3.0000000 | 2.0000000 + 12 | 12 | .0000000 | 3 | 30 | 600 | 2.0000000 | .0000000 | 5 | 1401-06-01 | 3.0000000 | 2.0000000 + 1 | 1 | .0000000 | 2 | 50 | 400 | 3.0000000 | .0000000 | 0 | 1401-06-01 | 6.0000000 | 3.0000000 + 1100 | 1100 | .0000000 | 2 | 40 | 100 | 3.0000000 | .0000000 | 2400 | 1401-01-01 | 6.0000000 | 3.0000000 + 1 | 1 | .0000000 | 1 | 30 | 300 | 4.0000000 | .0000000 | 0 | 1401-05-02 | 8.0000000 | 4.0000000 + 1 | 1 | .0000000 | 1 | 50 | 400 | 4.0000000 | 1.0000000 | 0 | 1401-06-01 | 8.0000000 | 4.0000000 + 12 | 12 | .0000000 | 1 | 30 | 500 | 4.0000000 | 1.0000000 | 5 | 1401-06-01 | 8.0000000 | 4.0000000 + 1 | 1 | .0000000 | 1 | 20 | 100 | 4.0000000 | .0000000 | 0 | 1401-05-01 | 8.0000000 | 4.0000000 + 1 | 1 | .0000000 | 1 | 10 | 200 | 4.0000000 | .0000000 | 0 | 1401-03-01 | 8.0000000 | 4.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.vn order by ow_sale.vn asc range between floor(ow_sale.prc*ow_sale.pn) preceding and unbounded following ); -- mvd 8,4->7; + qty | cn | dt | vn | dt | dt | to_char | prc +------+----+------------+----+------------+------------+-------------------+------ + 1 | 4 | 1401-06-01 | 40 | 1401-06-01 | 1401-06-01 | .0000000 | 1 + 1 | 4 | 1401-06-01 | 40 | 1401-06-01 | 1401-06-01 | .0000000 | 1 + 1 | 1 | 1401-03-01 | 10 | 1401-03-01 | 1401-03-01 | .0000000 | 0 + 1 | 1 | 1401-05-01 | 20 | 1401-05-01 | 1401-05-01 | .0000000 | 0 + 1 | 1 | 1401-05-02 | 30 | 1401-05-02 | 1401-05-02 | .0000000 | 0 + 12 | 3 | 1401-06-01 | 30 | 1401-06-01 | 1401-06-01 | .0000000 | 5 + 12 | 3 | 1401-06-01 | 30 | 1401-06-01 | 1401-06-01 | .0000000 | 5 + 12 | 1 | 1401-06-01 | 30 | 1401-06-01 | 1401-06-01 | .0000000 | 5 + 1 | 3 | 1401-04-01 | 40 | 1401-04-01 | 1401-04-01 | .0000000 | 0 + 1100 | 2 | 1401-01-01 | 40 | 1401-01-01 | 1401-01-01 | .0000000 | 2400 + 1 | 2 | 1401-06-01 | 50 | 1401-06-01 | 1401-06-01 | .0000000 | 0 + 1 | 1 | 1401-06-01 | 50 | 1401-06-01 | 1401-06-01 | .0000000 | 0 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(partition by ow_sale.dt order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn asc range between 0 preceding and unbounded following ), +win2 as (partition by ow_sale.dt order by ow_sale.cn asc); -- mvd 1->6; 3,8->7; 3,8->9; 1->10; 3,8->11; + vn | qty | cn | pn | qty | to_char | to_char | dt | to_char | to_char | to_char +----+------+----+-----+------+-------------------+-------------------+------------+-------------------+-------------------+------------------- + 10 | 1 | 1 | 200 | 1 | .0000000 | 1.0000000 | 1401-03-01 | 10.0000000 | 10.0000000 | 1.0000000 + 20 | 1 | 1 | 100 | 1 | .0000000 | 1.0000000 | 1401-05-01 | 20.0000000 | 20.0000000 | 1.0000000 + 30 | 12 | 1 | 500 | 12 | .0000000 | 1.0000000 | 1401-06-01 | 50.0000000 | 30.0000000 | 1.0000000 + 30 | 12 | 3 | 600 | 12 | .0000000 | 3.0000000 | 1401-06-01 | 100.0000000 | 30.0000000 | 1.0000000 + 30 | 12 | 3 | 500 | 12 | .0000000 | 3.0000000 | 1401-06-01 | 100.0000000 | 30.0000000 | 1.0000000 + 30 | 1 | 1 | 300 | 1 | .0000000 | 1.0000000 | 1401-05-02 | 30.0000000 | 30.0000000 | 1.0000000 + 40 | 1 | 3 | 200 | 1 | .0000000 | 1.0000000 | 1401-04-01 | 120.0000000 | 40.0000000 | 3.0000000 + 40 | 1 | 4 | 800 | 1 | .0000000 | 4.0000000 | 1401-06-01 | 160.0000000 | 40.0000000 | 1.0000000 + 40 | 1 | 4 | 700 | 1 | .0000000 | 4.0000000 | 1401-06-01 | 160.0000000 | 40.0000000 | 1.0000000 + 40 | 1100 | 2 | 100 | 1100 | .0000000 | 1.0000000 | 1401-01-01 | 80.0000000 | 40.0000000 | 2.0000000 + 50 | 1 | 1 | 400 | 1 | .0000000 | 1.0000000 | 1401-06-01 | 50.0000000 | 50.0000000 | 1.0000000 + 50 | 1 | 2 | 400 | 1 | .0000000 | 2.0000000 | 1401-06-01 | 100.0000000 | 50.0000000 | 1.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn+ow_sale.cn),floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.dt order by ow_sale.pn asc range between current row and current row ), +win2 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.qty order by ow_sale.cn desc); -- mvd 4,5,2,6->3; 2,5,1,8->7; 4,5,2,6->9; + vn | cn | to_char | prc | dt | pn | to_char | qty | to_char +----+----+-------------------+------+------------+-----+-------------------+------+------------------- + 20 | 1 | .0000000 | 0 | 1401-05-01 | 100 | 1.0000000 | 1 | .0000000 + 50 | 2 | .0000000 | 0 | 1401-06-01 | 400 | 1.0000000 | 1 | .0000000 + 40 | 3 | .0000000 | 0 | 1401-04-01 | 200 | 1.0000000 | 1 | .0000000 + 10 | 1 | .0000000 | 0 | 1401-03-01 | 200 | 1.0000000 | 1 | .0000000 + 30 | 1 | .0000000 | 0 | 1401-05-02 | 300 | 1.0000000 | 1 | .0000000 + 50 | 1 | .0000000 | 0 | 1401-06-01 | 400 | 2.0000000 | 1 | .0000000 + 30 | 1 | .0000000 | 5 | 1401-06-01 | 500 | 2.0000000 | 12 | 5.0000000 + 40 | 2 | .0000000 | 2400 | 1401-01-01 | 100 | 1.0000000 | 1100 | 4800.0000000 + 30 | 3 | .0000000 | 5 | 1401-06-01 | 500 | 1.0000000 | 12 | 15.0000000 + 30 | 3 | .0000000 | 5 | 1401-06-01 | 600 | 1.0000000 | 12 | 15.0000000 + 40 | 4 | .0000000 | 1 | 1401-06-01 | 700 | 1.0000000 | 1 | 4.0000000 + 40 | 4 | .0000000 | 1 | 1401-06-01 | 800 | 1.0000000 | 1 | 4.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.cn asc range between current row and 0 following ); -- mvd 3,1->2; + qty | to_char | cn +------+-------------------+---- + 1 | .0000000 | 2 + 1 | .0000000 | 4 + 1 | .0000000 | 4 + 12 | .0000000 | 1 + 12 | .0000000 | 3 + 12 | .0000000 | 3 + 1 | .0000000 | 1 + 1 | .0000000 | 1 + 1 | .0000000 | 1 + 1 | .0000000 | 1 + 1 | .0000000 | 3 + 1100 | .0000000 | 2 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc-ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.pn asc range between current row and floor(ow_sale.vn) following ), +win2 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc); -- mvd 2,5,6,1,3->4; 5,6,8,3->7; 5,6,8,3->9; 5,6,8,3->10; + vn | prc | pn | to_char | dt | cn | to_char | qty | to_char | to_char +----+------+-----+-------------------+------------+----+-------------------+------+-------------------+------------------- + 20 | 0 | 100 | .0000000 | 1401-05-01 | 1 | 1.0000000 | 1 | 1.0000000 | .0000000 + 30 | 0 | 300 | .0000000 | 1401-05-02 | 1 | 1.0000000 | 1 | 1.0000000 | .0000000 + 50 | 0 | 400 | .0000000 | 1401-06-01 | 1 | 1.0000000 | 1 | 1.0000000 | .0000000 + 30 | 5 | 500 | .0000000 | 1401-06-01 | 1 | 1.0000000 | 12 | 1.0000000 | .0000000 + 40 | 0 | 200 | .0000000 | 1401-04-01 | 3 | 1.0000000 | 1 | 1.0000000 | .0000000 + 30 | 5 | 500 | .0000000 | 1401-06-01 | 3 | 1.0000000 | 12 | 1.0000000 | .0000000 + 40 | 1 | 800 | .0000000 | 1401-06-01 | 4 | 1.0000000 | 1 | 1.0000000 | .0000000 + 10 | 0 | 200 | .0000000 | 1401-03-01 | 1 | 1.0000000 | 1 | 1.0000000 | .0000000 + 40 | 2400 | 100 | .0000000 | 1401-01-01 | 2 | 1.0000000 | 1100 | 1.0000000 | .0000000 + 50 | 0 | 400 | .0000000 | 1401-06-01 | 2 | 1.0000000 | 1 | 1.0000000 | .0000000 + 30 | 5 | 600 | .0000000 | 1401-06-01 | 3 | 1.0000000 | 12 | 1.0000000 | .0000000 + 40 | 1 | 700 | .0000000 | 1401-06-01 | 4 | 1.0000000 | 1 | 1.0000000 | .0000000 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.cn desc range between current row and unbounded following ); -- mvd 2,1->4; + vn | cn | cn | to_char +----+----+----+------------------- + 10 | 1 | 1 | .0000000 + 20 | 1 | 1 | .0000000 + 30 | 1 | 1 | .0000000 + 30 | 1 | 1 | .0000000 + 30 | 3 | 3 | .0000000 + 30 | 3 | 3 | .0000000 + 40 | 3 | 3 | .0000000 + 50 | 1 | 1 | .0000000 + 40 | 2 | 2 | .0000000 + 40 | 4 | 4 | .0000000 + 40 | 4 | 4 | .0000000 + 50 | 2 | 2 | .0000000 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn/ow_sale.vn),floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc order by ow_sale.vn asc range between 1 following and 2 following ); -- mvd 5,2,6->4; + dt | vn | vn | to_char | prc | pn +------------+----+----+-------------------+------+----- + 1401-05-02 | 30 | 30 | .0000000 | 0 | 300 + 1401-06-01 | 50 | 50 | .0000000 | 0 | 400 + 1401-06-01 | 50 | 50 | .0000000 | 0 | 400 + 1401-06-01 | 30 | 30 | .0000000 | 5 | 500 + 1401-06-01 | 30 | 30 | .0000000 | 5 | 500 + 1401-06-01 | 40 | 40 | .0000000 | 1 | 700 + 1401-05-01 | 20 | 20 | .0000000 | 0 | 100 + 1401-01-01 | 40 | 40 | .0000000 | 2400 | 100 + 1401-03-01 | 10 | 10 | .0000000 | 0 | 200 + 1401-04-01 | 40 | 40 | .0000000 | 0 | 200 + 1401-06-01 | 30 | 30 | .0000000 | 5 | 600 + 1401-06-01 | 40 | 40 | .0000000 | 1 | 800 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.qty order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.pn asc range between floor(ow_sale.prc+ow_sale.cn) following and 0 following ), +win2 as (partition by ow_sale.qty order by ow_sale.vn asc); -- mvd 3,4->2; 1,6->5; 1,6->7; 1,6->8; + vn | to_char | dt | pn | to_char | qty | to_char | to_char +----+-------------------+------------+-----+-------------------+------+-------------------+------------------- + 10 | .0000000 | 1401-03-01 | 200 | 1.0000000 | 1 | 10.0000000 | 1.0000000 + 30 | .0000000 | 1401-06-01 | 600 | 1.0000000 | 12 | 360.0000000 | 1.0000000 + 40 | .0000000 | 1401-06-01 | 700 | 4.0000000 | 1 | 10.0000000 | 4.0000000 + 40 | .0000000 | 1401-01-01 | 100 | 1.0000000 | 1100 | 44000.0000000 | 1.0000000 + 40 | .0000000 | 1401-04-01 | 200 | 5.0000000 | 1 | 10.0000000 | 4.0000000 + 20 | .0000000 | 1401-05-01 | 100 | 2.0000000 | 1 | 10.0000000 | 2.0000000 + 30 | .0000000 | 1401-05-02 | 300 | 3.0000000 | 1 | 10.0000000 | 3.0000000 + 50 | .0000000 | 1401-06-01 | 400 | 7.0000000 | 1 | 10.0000000 | 5.0000000 + 50 | .0000000 | 1401-06-01 | 400 | 8.0000000 | 1 | 10.0000000 | 5.0000000 + 30 | .0000000 | 1401-06-01 | 500 | 2.0000000 | 12 | 360.0000000 | 1.0000000 + 30 | .0000000 | 1401-06-01 | 500 | 3.0000000 | 12 | 360.0000000 | 1.0000000 + 40 | .0000000 | 1401-06-01 | 800 | 6.0000000 | 1 | 10.0000000 | 4.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty/ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.cn asc range between 4 following and unbounded following ); -- mvd 3,1->2; + qty | to_char | cn +------+-------------------+---- + 1 | .0000000 | 1 + 1 | .0000000 | 1 + 1 | .0000000 | 1 + 1 | .0000000 | 1 + 1 | .0000000 | 2 + 1 | .0000000 | 3 + 1 | .0000000 | 4 + 1 | .0000000 | 4 + 12 | .0000000 | 1 + 12 | .0000000 | 3 + 12 | .0000000 | 3 + 1100 | .0000000 | 2 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn+ow_sale.vn),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn*ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn desc range between 1 following and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc); -- mvd 5,6->4; 5->7; 5->8; 3,5,1,10->9; 5->11; 5->12; + qty | qty | prc | to_char | cn | dt | to_char | to_char | to_char | pn | to_char | to_char +------+------+------+-------------------+----+------------+-------------------+-------------------+-------------------+-----+-------------------+------------------- + 1 | 1 | 1 | 51.5000000 | 4 | 1401-06-01 | 1.0000000 | 2.0000000 | .0000000 | 700 | 2.0000000 | 1.0000000 + 1 | 1 | 1 | 51.5000000 | 4 | 1401-06-01 | 2.0000000 | 2.0000000 | .0000000 | 800 | 2.0000000 | 1.0000000 + 12 | 12 | 5 | 51.5000000 | 3 | 1401-06-01 | 3.0000000 | 5.0000000 | .0000000 | 500 | 5.0000000 | 3.0000000 + 12 | 12 | 5 | 51.5000000 | 3 | 1401-06-01 | 4.0000000 | 5.0000000 | .0000000 | 600 | 5.0000000 | 3.0000000 + 1 | 1 | 0 | .0000000 | 3 | 1401-04-01 | 5.0000000 | 5.0000000 | .0000000 | 200 | 5.0000000 | 3.0000000 + 1100 | 1100 | 2400 | .0000000 | 2 | 1401-01-01 | 6.0000000 | 7.0000000 | .0000000 | 100 | 7.0000000 | 6.0000000 + 1 | 1 | 0 | 51.0000000 | 2 | 1401-06-01 | 7.0000000 | 7.0000000 | .0000000 | 400 | 7.0000000 | 6.0000000 + 12 | 12 | 5 | .0000000 | 1 | 1401-06-01 | 8.0000000 | 12.0000000 | .0000000 | 500 | 12.0000000 | 8.0000000 + 1 | 1 | 0 | .0000000 | 1 | 1401-05-02 | 9.0000000 | 12.0000000 | .0000000 | 300 | 12.0000000 | 8.0000000 + 1 | 1 | 0 | .0000000 | 1 | 1401-06-01 | 10.0000000 | 12.0000000 | .0000000 | 400 | 12.0000000 | 8.0000000 + 1 | 1 | 0 | .0000000 | 1 | 1401-03-01 | 11.0000000 | 12.0000000 | .0000000 | 200 | 12.0000000 | 8.0000000 + 1 | 1 | 0 | .0000000 | 1 | 1401-05-01 | 12.0000000 | 12.0000000 | .0000000 | 100 | 12.0000000 | 8.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc rows unbounded preceding ); -- mvd 5,1->4; + pn | qty | pn | to_char | vn +-----+------+-----+-------------------+---- + 100 | 1100 | 100 | .0000000 | 40 + 100 | 1 | 100 | .9812332 | 20 + 200 | 1 | 200 | .0000000 | 10 + 200 | 1 | 200 | .2666667 | 40 + 600 | 12 | 600 | .0000000 | 30 + 700 | 1 | 700 | .0000000 | 40 + 300 | 1 | 300 | .0000000 | 30 + 400 | 1 | 400 | .0000000 | 50 + 400 | 1 | 400 | .0000000 | 50 + 500 | 12 | 500 | .0000000 | 30 + 500 | 12 | 500 | .0000000 | 30 + 800 | 1 | 800 | .0000000 | 40 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc/ow_sale.qty)) OVER(partition by ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn+ow_sale.qty) as int),NULL) OVER(win5),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc rows unbounded preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.pn asc), +win4 as (order by ow_sale.cn asc), +win5 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc); -- mvd 8,1->7; 1->9; 8,1->10; 1->11; 2->12; 14,5,2,1->13; + pn | cn | pn | cn | dt | cn | to_char | qty | to_char | to_char | to_char | to_char | to_char | prc +-----+----+-----+----+------------+----+-------------------+------+-------------------+-------------------+-------------------+-------------------+-------------------+------ + 100 | 1 | 100 | 1 | 1401-05-01 | 1 | .0000000 | 1 | .9090909 | 1.0000000 | 1.0000000 | .4166667 | .0000000 | 0 + 400 | 1 | 400 | 1 | 1401-06-01 | 1 | .0000000 | 1 | .4545455 | 1.0000000 | 6.0000000 | .4166667 | .0000000 | 0 + 200 | 1 | 200 | 1 | 1401-03-01 | 1 | .0000000 | 1 | .7272727 | 1.0000000 | 3.0000000 | .4166667 | .0000000 | 0 + 500 | 1 | 500 | 1 | 1401-06-01 | 1 | .0000000 | 12 | .2727273 | 1.0000000 | 8.0000000 | .4166667 | .0000000 | 5 + 300 | 1 | 300 | 1 | 1401-05-02 | 1 | .0000000 | 1 | .6363636 | 1.0000000 | 5.0000000 | .4166667 | .0000000 | 0 + 100 | 2 | 100 | 2 | 1401-01-01 | 2 | .0000000 | 1100 | .9090909 | 1.0000000 | 2.0000000 | .5833333 | .0000000 | 2400 + 400 | 2 | 400 | 2 | 1401-06-01 | 2 | .0000000 | 1 | .4545455 | 2.0000000 | 7.0000000 | .5833333 | .0000000 | 0 + 500 | 3 | 500 | 3 | 1401-06-01 | 3 | .0000000 | 12 | .2727273 | 2.0000000 | 9.0000000 | .8333333 | .0000000 | 5 + 200 | 3 | 200 | 3 | 1401-04-01 | 3 | .0000000 | 1 | .7272727 | 2.0000000 | 4.0000000 | .8333333 | .0000000 | 0 + 600 | 3 | 600 | 3 | 1401-06-01 | 3 | .0000000 | 12 | .1818182 | 1.0000000 | 10.0000000 | .8333333 | .0000000 | 5 + 700 | 4 | 700 | 4 | 1401-06-01 | 4 | .0000000 | 1 | .0909091 | 1.0000000 | 11.0000000 | 1.0000000 | .0000000 | 1 + 800 | 4 | 800 | 4 | 1401-06-01 | 4 | .0000000 | 1 | .0000000 | 1.0000000 | 12.0000000 | 1.0000000 | .0000000 | 1 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows 5 preceding ); -- mvd 3,4,5,1,6->2; + vn | to_char | prc | cn | dt | pn +----+-------------------+------+----+------------+----- + 10 | .0000000 | 0 | 1 | 1401-03-01 | 200 + 30 | .0000000 | 5 | 3 | 1401-06-01 | 600 + 40 | .0000000 | 1 | 4 | 1401-06-01 | 800 + 40 | .0000000 | 2400 | 2 | 1401-01-01 | 100 + 40 | .0000000 | 0 | 3 | 1401-04-01 | 200 + 20 | .0000000 | 0 | 1 | 1401-05-01 | 100 + 30 | .0000000 | 0 | 1 | 1401-05-02 | 300 + 50 | .0000000 | 0 | 1 | 1401-06-01 | 400 + 50 | .0000000 | 0 | 2 | 1401-06-01 | 400 + 30 | .0000000 | 5 | 1 | 1401-06-01 | 500 + 30 | .0000000 | 5 | 3 | 1401-06-01 | 500 + 40 | .0000000 | 1 | 4 | 1401-06-01 | 700 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn*ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty+ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc rows floor(ow_sale.pn*ow_sale.vn) preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 5,2,6->4; 6->7; + qty | vn | prc | to_char | dt | pn | to_char +------+----+------+-------------------+------------+-----+------------------- + 1100 | 40 | 2400 | .0000000 | 1401-01-01 | 100 | .0000000 + 1 | 10 | 0 | .0000000 | 1401-03-01 | 200 | 2200.0000000 + 1 | 40 | 0 | .0000000 | 1401-04-01 | 200 | 2.0000000 + 1 | 20 | 0 | .0000000 | 1401-05-01 | 100 | 2.0000000 + 1 | 30 | 0 | .0000000 | 1401-05-02 | 300 | 2.0000000 + 1 | 50 | 0 | .0000000 | 1401-06-01 | 400 | 2.0000000 + 1 | 50 | 0 | .0000000 | 1401-06-01 | 400 | 2.0000000 + 12 | 30 | 5 | .0000000 | 1401-06-01 | 500 | .0000000 + 12 | 30 | 5 | 2500.0000000 | 1401-06-01 | 500 | .0000000 + 12 | 30 | 5 | .0000000 | 1401-06-01 | 600 | .0000000 + 1 | 40 | 1 | .0000000 | 1401-06-01 | 700 | 24.0000000 + 1 | 40 | 1 | .0000000 | 1401-06-01 | 800 | 2.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc rows current row ); -- mvd 3,5,6->4; + dt | pn | prc | to_char | cn | vn +------------+-----+------+-------------------+----+---- + 1401-03-01 | 200 | 0 | .0000000 | 1 | 10 + 1401-05-01 | 100 | 0 | .0000000 | 1 | 20 + 1401-05-02 | 300 | 0 | .0000000 | 1 | 30 + 1401-06-01 | 500 | 5 | .0000000 | 1 | 30 + 1401-06-01 | 500 | 5 | .0000000 | 3 | 30 + 1401-06-01 | 600 | 5 | .0000000 | 3 | 30 + 1401-04-01 | 200 | 0 | .0000000 | 3 | 40 + 1401-06-01 | 700 | 1 | .0000000 | 4 | 40 + 1401-06-01 | 800 | 1 | .0000000 | 4 | 40 + 1401-06-01 | 400 | 0 | .0000000 | 1 | 50 + 1401-01-01 | 100 | 2400 | .0000000 | 2 | 40 + 1401-06-01 | 400 | 0 | .0000000 | 2 | 50 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc/ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 2 preceding ); -- mvd 3,4,5->2; + dt | to_char | cn | vn | pn +------------+-------------------+----+----+----- + 1401-05-01 | .0000000 | 1 | 20 | 100 + 1401-03-01 | .0000000 | 1 | 10 | 200 + 1401-04-01 | .0000000 | 3 | 40 | 200 + 1401-06-01 | .0000000 | 2 | 50 | 400 + 1401-06-01 | .0000000 | 3 | 30 | 600 + 1401-06-01 | .0000000 | 4 | 40 | 800 + 1401-01-01 | .0000000 | 2 | 40 | 100 + 1401-05-02 | .0000000 | 1 | 30 | 300 + 1401-06-01 | .0000000 | 1 | 50 | 400 + 1401-06-01 | .0000000 | 1 | 30 | 500 + 1401-06-01 | .0000000 | 3 | 30 | 500 + 1401-06-01 | .0000000 | 4 | 40 | 700 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn-ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and current row ); -- mvd 2,4,5->3; + dt | cn | to_char | vn | pn +------------+----+-------------------+----+----- + 1401-03-01 | 1 | .0000000 | 10 | 200 + 1401-05-01 | 1 | .0000000 | 20 | 100 + 1401-05-02 | 1 | .0000000 | 30 | 300 + 1401-06-01 | 1 | .0000000 | 30 | 500 + 1401-06-01 | 3 | .0000000 | 30 | 500 + 1401-06-01 | 3 | .0000000 | 30 | 600 + 1401-01-01 | 2 | .0000000 | 40 | 100 + 1401-04-01 | 3 | .0000000 | 40 | 200 + 1401-06-01 | 4 | .0000000 | 40 | 700 + 1401-06-01 | 4 | .0000000 | 40 | 800 + 1401-06-01 | 1 | .0000000 | 50 | 400 + 1401-06-01 | 2 | .0000000 | 50 | 400 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn*ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc,ow_sale.vn asc rows between unbounded preceding and 5 following ); -- mvd 6,1,2->5; + vn | pn | pn | cn | to_char | dt +----+-----+-----+----+-------------------+------------ + 10 | 200 | 200 | 1 | .0000000 | 1401-03-01 + 30 | 300 | 300 | 1 | .0000000 | 1401-05-02 + 30 | 500 | 500 | 1 | -15.0000000 | 1401-06-01 + 30 | 500 | 500 | 3 | -15.0000000 | 1401-06-01 + 30 | 600 | 600 | 3 | -15.0000000 | 1401-06-01 + 40 | 700 | 700 | 4 | 16.0000000 | 1401-06-01 + 40 | 800 | 800 | 4 | 16.0000000 | 1401-06-01 + 50 | 400 | 400 | 1 | .0000000 | 1401-06-01 + 50 | 400 | 400 | 2 | .0000000 | 1401-06-01 + 40 | 100 | 100 | 2 | .0000000 | 1401-01-01 + 40 | 200 | 200 | 3 | .0000000 | 1401-04-01 + 20 | 100 | 100 | 1 | .0000000 | 1401-05-01 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn-ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and floor(ow_sale.vn) following ), +win2 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 1,8,9,3->7; 4->10; 4->11; + prc | qty | pn | vn | qty | pn | to_char | dt | cn | to_char | to_char +------+------+-----+----+------+-----+-------------------+------------+----+-------------------+------------------- + 2400 | 1100 | 100 | 40 | 1100 | 100 | .0000000 | 1401-01-01 | 2 | .0000000 | .0833333 + 0 | 1 | 200 | 10 | 1 | 200 | .0000000 | 1401-03-01 | 1 | .0000000 | .1666667 + 0 | 1 | 200 | 40 | 1 | 200 | .0000000 | 1401-04-01 | 3 | .0000000 | .2500000 + 0 | 1 | 100 | 20 | 1 | 100 | .0000000 | 1401-05-01 | 1 | .0000000 | .3333333 + 0 | 1 | 300 | 30 | 1 | 300 | .0000000 | 1401-05-02 | 1 | .0000000 | .4166667 + 0 | 1 | 400 | 50 | 1 | 400 | .0000000 | 1401-06-01 | 1 | .0000000 | .5000000 + 0 | 1 | 400 | 50 | 1 | 400 | .0000000 | 1401-06-01 | 2 | .0000000 | .5833333 + 5 | 12 | 500 | 30 | 12 | 500 | .0000000 | 1401-06-01 | 1 | .0000000 | .6666667 + 5 | 12 | 500 | 30 | 12 | 500 | .0000000 | 1401-06-01 | 3 | .0000000 | .7500000 + 5 | 12 | 600 | 30 | 12 | 600 | .0000000 | 1401-06-01 | 3 | .0000000 | .8333333 + 1 | 1 | 700 | 40 | 1 | 700 | .0000000 | 1401-06-01 | 4 | .0000000 | .9166667 + 1 | 1 | 800 | 40 | 1 | 800 | .0000000 | 1401-06-01 | 4 | .0000000 | 1.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc,ow_sale.vn asc rows between unbounded preceding and unbounded following ); -- mvd 3,4,5,1->2; + pn | to_char | prc | cn | vn +-----+-------------------+------+----+---- + 100 | .0000000 | 0 | 1 | 20 + 200 | .0000000 | 0 | 1 | 10 + 200 | .0000000 | 0 | 3 | 40 + 400 | .0000000 | 0 | 2 | 50 + 600 | .0000000 | 5 | 3 | 30 + 800 | .0000000 | 1 | 4 | 40 + 100 | .0000000 | 2400 | 2 | 40 + 300 | .0000000 | 0 | 1 | 30 + 400 | .0000000 | 0 | 1 | 50 + 500 | .0000000 | 5 | 1 | 30 + 500 | .0000000 | 5 | 3 | 30 + 700 | .0000000 | 1 | 4 | 40 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.pn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.vn desc); -- mvd 5,6,7->4; 3,5,9,1,7->8; 3,5,9,1,7->10; + vn | vn | prc | to_char | cn | qty | pn | to_char | dt | to_char +----+----+------+-------------------+----+------+-----+-------------------+------------+------------------- + 10 | 10 | 0 | -.3689320 | 1 | 1 | 200 | 1.0000000 | 1401-03-01 | 1.0000000 + 40 | 40 | 0 | -.3689320 | 3 | 1 | 200 | 1.0000000 | 1401-04-01 | 3.0000000 + 20 | 20 | 0 | -.3689320 | 1 | 1 | 100 | 1.0000000 | 1401-05-01 | 1.0000000 + 30 | 30 | 0 | -.3689320 | 1 | 1 | 300 | 1.0000000 | 1401-05-02 | 1.0000000 + 50 | 50 | 0 | -.3689320 | 1 | 1 | 400 | 1.0000000 | 1401-06-01 | 1.0000000 + 50 | 50 | 0 | -.3689320 | 2 | 1 | 400 | 1.0000000 | 1401-06-01 | 2.0000000 + 40 | 40 | 1 | -.3689320 | 4 | 1 | 700 | 1.0000000 | 1401-06-01 | 4.0000000 + 40 | 40 | 1 | -.3689320 | 4 | 1 | 800 | 1.0000000 | 1401-06-01 | 4.0000000 + 30 | 30 | 5 | 5.0000000 | 1 | 12 | 500 | 1.0000000 | 1401-06-01 | 1.0000000 + 30 | 30 | 5 | 5.0000000 | 3 | 12 | 500 | 1.0000000 | 1401-06-01 | 3.0000000 + 30 | 30 | 5 | 5.0000000 | 3 | 12 | 600 | 1.0000000 | 1401-06-01 | 3.0000000 + 40 | 40 | 2400 | .0000000 | 2 | 1100 | 100 | 1.0000000 | 1401-01-01 | 2.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.cn desc rows between floor(ow_sale.qty/ow_sale.pn) preceding and floor(ow_sale.prc) preceding ); -- mvd 1,6,3->5; + cn | dt | pn | pn | to_char | vn +----+------------+-----+-----+-------------------+---- + 1 | 1401-03-01 | 200 | 200 | .0000000 | 10 + 1 | 1401-05-01 | 100 | 100 | .0000000 | 20 + 1 | 1401-05-02 | 300 | 300 | .0000000 | 30 + 1 | 1401-06-01 | 500 | 500 | .0000000 | 30 + 3 | 1401-06-01 | 500 | 500 | .0000000 | 30 + 3 | 1401-06-01 | 600 | 600 | .0000000 | 30 + 2 | 1401-01-01 | 100 | 100 | .0000000 | 40 + 3 | 1401-04-01 | 200 | 200 | .0000000 | 40 + 4 | 1401-06-01 | 700 | 700 | .0000000 | 40 + 4 | 1401-06-01 | 800 | 800 | .0000000 | 40 + 1 | 1401-06-01 | 400 | 400 | .0000000 | 50 + 2 | 1401-06-01 | 400 | 400 | .0000000 | 50 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty-ow_sale.cn),floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.vn order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.vn desc rows between 0 preceding and floor(ow_sale.vn) preceding ), +win2 as (partition by ow_sale.vn order by ow_sale.vn asc); -- mvd 2,6,3,1->5; 3->7; 3->8; 2,6,3,1->9; 3->10; + qty | dt | vn | dt | to_char | cn | to_char | to_char | to_char | to_char +------+------------+----+------------+-------------------+----+-------------------+-------------------+-------------------+------------------- + 1 | 1401-03-01 | 10 | 1401-03-01 | .0000000 | 1 | .0000000 | 1.0000000 | .0000000 | .0000000 + 1 | 1401-05-01 | 20 | 1401-05-01 | .0000000 | 1 | .0000000 | 1.0000000 | .0000000 | .0000000 + 1 | 1401-05-02 | 30 | 1401-05-02 | .0000000 | 1 | .0000000 | 1.0000000 | .0000000 | .0000000 + 12 | 1401-06-01 | 30 | 1401-06-01 | .0000000 | 3 | .0000000 | 1.0000000 | .0000000 | .0000000 + 12 | 1401-06-01 | 30 | 1401-06-01 | .0000000 | 1 | .0000000 | 1.0000000 | .0000000 | .0000000 + 12 | 1401-06-01 | 30 | 1401-06-01 | .0000000 | 3 | .0000000 | 1.0000000 | .0000000 | .0000000 + 1 | 1401-06-01 | 40 | 1401-06-01 | .0000000 | 4 | .0000000 | 1.0000000 | .0000000 | .0000000 + 1100 | 1401-01-01 | 40 | 1401-01-01 | .0000000 | 2 | .0000000 | 1.0000000 | .0000000 | .0000000 + 1 | 1401-04-01 | 40 | 1401-04-01 | .0000000 | 3 | .0000000 | 1.0000000 | .0000000 | .0000000 + 1 | 1401-06-01 | 40 | 1401-06-01 | .0000000 | 4 | .0000000 | 1.0000000 | .0000000 | .0000000 + 1 | 1401-06-01 | 50 | 1401-06-01 | .0000000 | 1 | .0000000 | 1.0000000 | .0000000 | .0000000 + 1 | 1401-06-01 | 50 | 1401-06-01 | .0000000 | 2 | .0000000 | 1.0000000 | .0000000 | .0000000 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc),floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc,ow_sale.pn desc rows between floor(ow_sale.prc) preceding and current row ); -- mvd 6,7,2,1->5; + pn | vn | vn | qty | to_char | cn | dt +-----+----+----+------+-------------------+----+------------ + 200 | 40 | 40 | 1 | .0000000 | 3 | 1401-04-01 + 100 | 20 | 20 | 1 | .0000000 | 1 | 1401-05-01 + 700 | 40 | 40 | 1 | .0000000 | 4 | 1401-06-01 + 800 | 40 | 40 | 1 | .0000000 | 4 | 1401-06-01 + 400 | 50 | 50 | 1 | .0000000 | 2 | 1401-06-01 + 100 | 40 | 40 | 1100 | .0000000 | 2 | 1401-01-01 + 200 | 10 | 10 | 1 | .0000000 | 1 | 1401-03-01 + 300 | 30 | 30 | 1 | .0000000 | 1 | 1401-05-02 + 500 | 30 | 30 | 12 | .0000000 | 1 | 1401-06-01 + 500 | 30 | 30 | 12 | .0000000 | 3 | 1401-06-01 + 600 | 30 | 30 | 12 | .0000000 | 3 | 1401-06-01 + 400 | 50 | 50 | 1 | .0000000 | 1 | 1401-06-01 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc/ow_sale.vn),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.vn asc rows between floor(ow_sale.vn) preceding and floor(ow_sale.cn) following ); -- mvd 5,6,7,2->4; + dt | pn | dt | to_char | cn | vn | qty +------------+-----+------------+-------------------+----+----+------ + 1401-05-01 | 100 | 1401-05-01 | .0000000 | 1 | 20 | 1 + 1401-03-01 | 200 | 1401-03-01 | .0000000 | 1 | 10 | 1 + 1401-04-01 | 200 | 1401-04-01 | .0000000 | 3 | 40 | 1 + 1401-06-01 | 500 | 1401-06-01 | .0000000 | 1 | 30 | 12 + 1401-06-01 | 500 | 1401-06-01 | .0000000 | 3 | 30 | 12 + 1401-06-01 | 700 | 1401-06-01 | .0000000 | 4 | 40 | 1 + 1401-01-01 | 100 | 1401-01-01 | .0000000 | 2 | 40 | 1100 + 1401-05-02 | 300 | 1401-05-02 | .0000000 | 1 | 30 | 1 + 1401-06-01 | 400 | 1401-06-01 | .0000000 | 1 | 50 | 1 + 1401-06-01 | 400 | 1401-06-01 | .0000000 | 2 | 50 | 1 + 1401-06-01 | 600 | 1401-06-01 | .0000000 | 3 | 30 | 12 + 1401-06-01 | 800 | 1401-06-01 | .0000000 | 4 | 40 | 1 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.prc,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn-ow_sale.vn) as int),cast (floor(ow_sale.qty+ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc,ow_sale.cn desc rows between 1 preceding and floor(ow_sale.prc) following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.vn desc); -- mvd 4,6,7->5; 4->8; 4->9; 4,6,7->10; 4->11; 4,6,7->12; + prc | prc | prc | cn | to_char | vn | pn | to_char | to_char | to_char | to_char | to_char +------+------+------+----+-------------------+----+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 2400 | 2400 | 2400 | 2 | .0000000 | 40 | 100 | .0000000 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 0 | 0 | 0 | 1 | .0000000 | 10 | 200 | .0000000 | .0909091 | 1.0000000 | 2.0000000 | 1.0000000 + 0 | 0 | 0 | 3 | .0000000 | 40 | 200 | .0000000 | .1818182 | 1.0000000 | 3.0000000 | 1.0000000 + 0 | 0 | 0 | 1 | .0000000 | 20 | 100 | 190.0000000 | .2727273 | 1.0000000 | 4.0000000 | 1.0000000 + 0 | 0 | 0 | 1 | .0000000 | 30 | 300 | 160.0000000 | .3636364 | 1.0000000 | 5.0000000 | 1.0000000 + 0 | 0 | 0 | 1 | .0000000 | 50 | 400 | 80.0000000 | .4545455 | 1.0000000 | 6.0000000 | 1.0000000 + 0 | 0 | 0 | 2 | .0000000 | 50 | 400 | 80.0000000 | .5454545 | 1.0000000 | 7.0000000 | 1.0000000 + 5 | 5 | 5 | 1 | .0000000 | 30 | 500 | .0000000 | .6363636 | 1.0000000 | 8.0000000 | 1.0000000 + 5 | 5 | 5 | 3 | .0000000 | 30 | 500 | .0000000 | .7272727 | 1.0000000 | 9.0000000 | 1.0000000 + 5 | 5 | 5 | 3 | .0000000 | 30 | 600 | .0000000 | .8181818 | 1.0000000 | 10.0000000 | 1.0000000 + 1 | 1 | 1 | 4 | .0000000 | 40 | 700 | 350.0000000 | .9090909 | 1.0000000 | 11.0000000 | 1.0000000 + 1 | 1 | 1 | 4 | .0000000 | 40 | 800 | 350.0000000 | 1.0000000 | 1.0000000 | 12.0000000 | 1.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn),floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.vn asc rows between 0 preceding and unbounded following ); -- mvd 3,6,1->5; + pn | dt | cn | qty | to_char | vn +-----+------------+----+------+-------------------+---- + 200 | 1401-03-01 | 1 | 1 | .0000000 | 10 + 100 | 1401-05-01 | 1 | 1 | .0000000 | 20 + 300 | 1401-05-02 | 1 | 1 | 30.0000000 | 30 + 500 | 1401-06-01 | 1 | 12 | .0000000 | 30 + 400 | 1401-06-01 | 1 | 1 | .0000000 | 50 + 500 | 1401-06-01 | 3 | 12 | .0000000 | 30 + 600 | 1401-06-01 | 3 | 12 | .0000000 | 30 + 200 | 1401-04-01 | 3 | 1 | .0000000 | 40 + 100 | 1401-01-01 | 2 | 1100 | .0000000 | 40 + 400 | 1401-06-01 | 2 | 1 | .0000000 | 50 + 700 | 1401-06-01 | 4 | 1 | .0000000 | 40 + 800 | 1401-06-01 | 4 | 1 | .0000000 | 40 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between floor(ow_sale.vn) preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.cn asc); -- mvd 3,4,1,5->2; 4,3,1,7,5->6; + vn | to_char | cn | dt | pn | to_char | qty +----+-------------------+----+------------+-----+-------------------+------ + 10 | .0000000 | 1 | 1401-03-01 | 200 | 1.0000000 | 1 + 30 | .0000000 | 3 | 1401-06-01 | 600 | 1.0000000 | 12 + 40 | .0000000 | 4 | 1401-06-01 | 700 | 1.0000000 | 1 + 40 | .0000000 | 2 | 1401-01-01 | 100 | 1.0000000 | 1100 + 20 | .0000000 | 1 | 1401-05-01 | 100 | 1.0000000 | 1 + 40 | .0000000 | 3 | 1401-04-01 | 200 | 1.0000000 | 1 + 30 | .0000000 | 1 | 1401-05-02 | 300 | 1.0000000 | 1 + 50 | .0000000 | 1 | 1401-06-01 | 400 | 1.0000000 | 1 + 50 | .0000000 | 2 | 1401-06-01 | 400 | 1.0000000 | 1 + 30 | .0000000 | 1 | 1401-06-01 | 500 | 1.0000000 | 12 + 30 | .0000000 | 3 | 1401-06-01 | 500 | 1.0000000 | 12 + 40 | .0000000 | 4 | 1401-06-01 | 800 | 1.0000000 | 1 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between current row and current row ); -- mvd 8,9->7; + qty | prc | pn | qty | prc | pn | to_char | cn | vn +------+------+-----+------+------+-----+-------------------+----+---- + 1 | 0 | 200 | 1 | 0 | 200 | .0000000 | 1 | 10 + 1 | 0 | 100 | 1 | 0 | 100 | .0000000 | 1 | 20 + 1 | 0 | 300 | 1 | 0 | 300 | .0000000 | 1 | 30 + 12 | 5 | 500 | 12 | 5 | 500 | .0000000 | 1 | 30 + 12 | 5 | 500 | 12 | 5 | 500 | .0000000 | 3 | 30 + 12 | 5 | 600 | 12 | 5 | 600 | .0000000 | 3 | 30 + 1 | 0 | 200 | 1 | 0 | 200 | .0000000 | 3 | 40 + 1 | 0 | 400 | 1 | 0 | 400 | .0000000 | 1 | 50 + 1100 | 2400 | 100 | 1100 | 2400 | 100 | .0000000 | 2 | 40 + 1 | 1 | 700 | 1 | 1 | 700 | .0000000 | 4 | 40 + 1 | 1 | 800 | 1 | 1 | 800 | .0000000 | 4 | 40 + 1 | 0 | 400 | 1 | 0 | 400 | .0000000 | 2 | 50 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc rows between current row and current row ), +win2 as (order by ow_sale.cn asc); -- mvd 1,4,3->6; 1->7; 1,4,3->8; + cn | cn | pn | dt | pn | to_char | to_char | to_char +----+----+-----+------------+-----+-------------------+-------------------+------------------- + 1 | 1 | 200 | 1401-03-01 | 200 | .0000000 | .4166667 | 1.0000000 + 1 | 1 | 400 | 1401-06-01 | 400 | .0000000 | .4166667 | 1.0000000 + 1 | 1 | 500 | 1401-06-01 | 500 | .0000000 | .4166667 | 1.0000000 + 1 | 1 | 100 | 1401-05-01 | 100 | .0000000 | .4166667 | 1.0000000 + 1 | 1 | 300 | 1401-05-02 | 300 | .0000000 | .4166667 | 1.0000000 + 2 | 2 | 100 | 1401-01-01 | 100 | .0000000 | .5833333 | 1.0000000 + 2 | 2 | 400 | 1401-06-01 | 400 | .0000000 | .5833333 | 1.0000000 + 3 | 3 | 200 | 1401-04-01 | 200 | .0000000 | .8333333 | 1.0000000 + 3 | 3 | 500 | 1401-06-01 | 500 | .0000000 | .8333333 | 1.0000000 + 3 | 3 | 600 | 1401-06-01 | 600 | .0000000 | .8333333 | 1.0000000 + 4 | 4 | 700 | 1401-06-01 | 700 | .0000000 | 1.0000000 | 1.0000000 + 4 | 4 | 800 | 1401-06-01 | 800 | .0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn-ow_sale.pn),floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.vn asc rows between current row and floor(ow_sale.prc/ow_sale.qty) following ); -- mvd 3,4,5->2; + qty | to_char | dt | vn | pn +------+-------------------+------------+----+----- + 1 | .0000000 | 1401-03-01 | 10 | 200 + 12 | .0000000 | 1401-06-01 | 30 | 600 + 1 | .0000000 | 1401-06-01 | 40 | 700 + 1 | .0000000 | 1401-05-01 | 20 | 100 + 1 | .0000000 | 1401-05-02 | 30 | 300 + 12 | .0000000 | 1401-06-01 | 30 | 500 + 12 | .0000000 | 1401-06-01 | 30 | 500 + 1100 | .0000000 | 1401-01-01 | 40 | 100 + 1 | .0000000 | 1401-04-01 | 40 | 200 + 1 | .0000000 | 1401-06-01 | 40 | 800 + 1 | .0000000 | 1401-06-01 | 50 | 400 + 1 | .0000000 | 1401-06-01 | 50 | 400 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.pn desc rows between current row and floor(ow_sale.qty) following ); -- mvd 3,4,2,1->7; 3,4,2,1->8; + pn | vn | cn | dt | qty | prc | to_char | to_char +-----+----+----+------------+------+------+-------------------+------------------- + 200 | 40 | 3 | 1401-04-01 | 1 | 0 | .0000000 | -3.0000000 + 100 | 20 | 1 | 1401-05-01 | 1 | 0 | .0000000 | -1.0000000 + 400 | 50 | 2 | 1401-06-01 | 1 | 0 | .0000000 | -2.0000000 + 700 | 40 | 4 | 1401-06-01 | 1 | 1 | 40.0000000 | -3.0000000 + 800 | 40 | 4 | 1401-06-01 | 1 | 1 | .0000000 | -3.0000000 + 100 | 40 | 2 | 1401-01-01 | 1100 | 2400 | .0000000 | 2398.0000000 + 200 | 10 | 1 | 1401-03-01 | 1 | 0 | .0000000 | -1.0000000 + 300 | 30 | 1 | 1401-05-02 | 1 | 0 | .0000000 | -1.0000000 + 500 | 30 | 1 | 1401-06-01 | 12 | 5 | .0000000 | 4.0000000 + 400 | 50 | 1 | 1401-06-01 | 1 | 0 | .0000000 | -1.0000000 + 500 | 30 | 3 | 1401-06-01 | 12 | 5 | 30.0000000 | 2.0000000 + 600 | 30 | 3 | 1401-06-01 | 12 | 5 | .0000000 | 2.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn+ow_sale.qty),floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.pn asc rows between current row and unbounded following ); -- mvd 5,2,1,6->4; + vn | dt | dt | to_char | cn | pn +----+------------+------------+-------------------+----+----- + 10 | 1401-03-01 | 1401-03-01 | .0000000 | 1 | 200 + 30 | 1401-05-02 | 1401-05-02 | .0000000 | 1 | 300 + 30 | 1401-06-01 | 1401-06-01 | 42.0000000 | 1 | 500 + 30 | 1401-06-01 | 1401-06-01 | 42.0000000 | 3 | 500 + 30 | 1401-06-01 | 1401-06-01 | .0000000 | 3 | 600 + 40 | 1401-06-01 | 1401-06-01 | 41.0000000 | 4 | 700 + 40 | 1401-06-01 | 1401-06-01 | .0000000 | 4 | 800 + 50 | 1401-06-01 | 1401-06-01 | .0000000 | 1 | 400 + 50 | 1401-06-01 | 1401-06-01 | .0000000 | 2 | 400 + 40 | 1401-01-01 | 1401-01-01 | .0000000 | 2 | 100 + 40 | 1401-04-01 | 1401-04-01 | .0000000 | 3 | 200 + 20 | 1401-05-01 | 1401-05-01 | .0000000 | 1 | 100 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn),floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows between current row and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.dt order by ow_sale.vn desc); -- mvd 3,4,1->2; 3,4,6,1->5; + pn | to_char | dt | vn | to_char | qty +-----+-------------------+------------+----+-------------------+------ + 200 | .0000000 | 1401-03-01 | 10 | 1.0000000 | 1 + 300 | .0000000 | 1401-05-02 | 30 | 1.0000000 | 1 + 400 | .0000000 | 1401-06-01 | 50 | 2.0000000 | 1 + 400 | .0000000 | 1401-06-01 | 50 | 1.0000000 | 1 + 500 | .0000000 | 1401-06-01 | 30 | 1.0000000 | 12 + 500 | .0000000 | 1401-06-01 | 30 | 2.0000000 | 12 + 600 | .0000000 | 1401-06-01 | 30 | 1.0000000 | 12 + 700 | .0000000 | 1401-06-01 | 40 | 1.0000000 | 1 + 800 | .0000000 | 1401-06-01 | 40 | 1.0000000 | 1 + 100 | .0000000 | 1401-01-01 | 40 | 1.0000000 | 1100 + 200 | .0000000 | 1401-04-01 | 40 | 1.0000000 | 1 + 100 | .0000000 | 1401-05-01 | 20 | 1.0000000 | 1 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn+ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn-ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.cn desc rows between 0 following and floor(ow_sale.prc) following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc); -- mvd 5,1,6,3->4; 1->7; 1->8; 1->9; 5,1,6,3->10; + cn | pn | vn | to_char | prc | dt | to_char | to_char | to_char | to_char +----+-----+----+-------------------+------+------------+-------------------+-------------------+-------------------+------------------- + 2 | 100 | 40 | .0000000 | 2400 | 1401-01-01 | .0000000 | .0000000 | 2.0000000 | 1.0000000 + 1 | 200 | 10 | .0000000 | 0 | 1401-03-01 | 37.0000000 | .0000000 | 1.0000000 | 1.0000000 + 3 | 200 | 40 | .0000000 | 0 | 1401-04-01 | 19.0000000 | .0000000 | 3.0000000 | 1.0000000 + 1 | 100 | 20 | .0000000 | 0 | 1401-05-01 | 29.0000000 | -1.0000000 | 1.0000000 | 1.0000000 + 1 | 300 | 30 | .0000000 | 0 | 1401-05-02 | 49.0000000 | -1.0000000 | 1.0000000 | 1.0000000 + 1 | 400 | 50 | .0000000 | 0 | 1401-06-01 | 48.0000000 | -1.0000000 | 1.0000000 | 1.0000000 + 2 | 400 | 50 | .0000000 | 0 | 1401-06-01 | 29.0000000 | .0000000 | 2.0000000 | 1.0000000 + 1 | 500 | 30 | .0000000 | 5 | 1401-06-01 | .0000000 | -1.0000000 | 1.0000000 | 3.0000000 + 3 | 500 | 30 | .0000000 | 5 | 1401-06-01 | .0000000 | .0000000 | 3.0000000 | 2.0000000 + 3 | 600 | 30 | .0000000 | 5 | 1401-06-01 | .0000000 | .0000000 | 3.0000000 | 1.0000000 + 4 | 700 | 40 | .0000000 | 1 | 1401-06-01 | 36.0000000 | .0000000 | 4.0000000 | 2.0000000 + 4 | 800 | 40 | .0000000 | 1 | 1401-06-01 | .0000000 | .0000000 | 4.0000000 | 1.0000000 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn-ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between 0 following and unbounded following ); -- mvd 5,1,7,8->6; + dt | dt | dt | dt | cn | to_char | qty | vn +------------+------------+------------+------------+----+-------------------+------+---- + 1401-05-01 | 1401-05-01 | 1401-05-01 | 1401-05-01 | 1 | .0000000 | 1 | 20 + 1401-06-01 | 1401-06-01 | 1401-06-01 | 1401-06-01 | 1 | .0000000 | 12 | 30 + 1401-06-01 | 1401-06-01 | 1401-06-01 | 1401-06-01 | 3 | .0000000 | 12 | 30 + 1401-06-01 | 1401-06-01 | 1401-06-01 | 1401-06-01 | 3 | .0000000 | 12 | 30 + 1401-04-01 | 1401-04-01 | 1401-04-01 | 1401-04-01 | 3 | .0000000 | 1 | 40 + 1401-03-01 | 1401-03-01 | 1401-03-01 | 1401-03-01 | 1 | .0000000 | 1 | 10 + 1401-05-02 | 1401-05-02 | 1401-05-02 | 1401-05-02 | 1 | .0000000 | 1 | 30 + 1401-01-01 | 1401-01-01 | 1401-01-01 | 1401-01-01 | 2 | .0000000 | 1100 | 40 + 1401-06-01 | 1401-06-01 | 1401-06-01 | 1401-06-01 | 4 | .0000000 | 1 | 40 + 1401-06-01 | 1401-06-01 | 1401-06-01 | 1401-06-01 | 4 | .0000000 | 1 | 40 + 1401-06-01 | 1401-06-01 | 1401-06-01 | 1401-06-01 | 1 | .0000000 | 1 | 50 + 1401-06-01 | 1401-06-01 | 1401-06-01 | 1401-06-01 | 2 | .0000000 | 1 | 50 +(12 rows) + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn*ow_sale.qty),floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(partition by ow_sale.prc,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows between floor(ow_sale.vn) following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.prc,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows between floor(ow_sale.vn) following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows between floor(ow_sale.vn) following and unbounded following ); -- mvd 6,4,7,1->5; 6,4,7,1->8; 6,4,7,1->9; 6,4,7,1->10; + vn | qty | pn | cn | to_char | prc | dt | to_char | to_char | to_char +----+------+-----+----+-------------------+------+------------+-------------------+-------------------+------------------- + 10 | 1 | 200 | 1 | .0000000 | 0 | 1401-03-01 | .0000000 | .0000000 | .0000000 + 30 | 1 | 300 | 1 | .0000000 | 0 | 1401-05-02 | .0000000 | .0000000 | .0000000 + 50 | 1 | 400 | 1 | .0000000 | 0 | 1401-06-01 | .0000000 | .0000000 | .0000000 + 50 | 1 | 400 | 2 | .0000000 | 0 | 1401-06-01 | .0000000 | .0000000 | .0000000 + 30 | 12 | 500 | 1 | .0000000 | 5 | 1401-06-01 | .0000000 | .0000000 | .0000000 + 30 | 12 | 500 | 3 | .0000000 | 5 | 1401-06-01 | .0000000 | .0000000 | .0000000 + 30 | 12 | 600 | 3 | .0000000 | 5 | 1401-06-01 | .0000000 | .0000000 | .0000000 + 40 | 1 | 200 | 3 | .0000000 | 0 | 1401-04-01 | .0000000 | .0000000 | .0000000 + 20 | 1 | 100 | 1 | .0000000 | 0 | 1401-05-01 | .0000000 | .0000000 | .0000000 + 40 | 1 | 700 | 4 | .0000000 | 1 | 1401-06-01 | .0000000 | .0000000 | .0000000 + 40 | 1 | 800 | 4 | .0000000 | 1 | 1401-06-01 | .0000000 | .0000000 | .0000000 + 40 | 1100 | 100 | 2 | .0000000 | 2400 | 1401-01-01 | .0000000 | .0000000 | .0000000 +(12 rows) + +-- REGR_R2() function with NULL OVER() clause -- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (); -- mvd 3->3; + cn | vn | to_char +----+----+------------------- + 2 | 50 | .1682268 + 4 | 40 | .1682268 + 1 | 20 | .1682268 + 1 | 10 | .1682268 + 3 | 40 | .1682268 + 3 | 30 | .1682268 + 1 | 30 | .1682268 + 1 | 50 | .1682268 + 1 | 30 | .1682268 + 3 | 30 | .1682268 + 2 | 40 | .1682268 + 4 | 40 | .1682268 +(12 rows) + +-- REGR_R2() function with NULL OVER() clause in combination with other window functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (), +win2 as (order by ow_sale.cn asc); -- mvd 2->2; 2->3; 5->4; + qty | to_char | to_char | to_char | cn +------+-------------------+-------------------+-------------------+---- + 1 | .3981560 | 800.0000000 | .0000000 | 1 + 1 | .3981560 | 800.0000000 | .0000000 | 1 + 1 | .3981560 | 800.0000000 | .0000000 | 1 + 1 | .3981560 | 800.0000000 | .0000000 | 1 + 12 | .3981560 | 800.0000000 | .0000000 | 1 + 1100 | .3981560 | 800.0000000 | .4545455 | 2 + 1 | .3981560 | 800.0000000 | .4545455 | 2 + 1 | .3981560 | 800.0000000 | .6363636 | 3 + 12 | .3981560 | 800.0000000 | .6363636 | 3 + 12 | .3981560 | 800.0000000 | .6363636 | 3 + 1 | .3981560 | 800.0000000 | .9090909 | 4 + 1 | .3981560 | 800.0000000 | .9090909 | 4 +(12 rows) + +-- REGR_R2() function with OVER() clause having ONLY PARTITION BY -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty+ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.cn); -- mvd 3,4,1,5->2; + qty | to_char | prc | cn | pn +------+-------------------+------+----+----- + 1 | .0000000 | 0 | 1 | 300 + 1 | .0000000 | 0 | 1 | 400 + 1 | .0000000 | 1 | 4 | 800 + 12 | .0000000 | 5 | 3 | 600 + 1 | .0000000 | 0 | 1 | 100 + 1 | .0000000 | 0 | 1 | 200 + 1 | .0000000 | 0 | 3 | 200 + 1 | .0000000 | 0 | 2 | 400 + 1 | .0000000 | 1 | 4 | 700 + 12 | .0000000 | 5 | 1 | 500 + 12 | .0000000 | 5 | 3 | 500 + 1100 | .0000000 | 2400 | 2 | 100 +(12 rows) + +-- REGR_R2() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn+ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.vn), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,2,1->3; 4,2,1->5; 1->6; 2,8->7; + vn | cn | to_char | prc | to_char | to_char | to_char | dt +----+----+-------------------+------+-------------------+-------------------+-------------------+------------ + 50 | 1 | .0000000 | 0 | 400.0000000 | .0000000 | 450.0000000 | 1401-06-01 + 50 | 2 | .0000000 | 0 | 400.0000000 | .0000000 | 450.0000000 | 1401-06-01 + 40 | 2 | .0000000 | 2400 | 100.0000000 | .1818182 | .0000000 | 1401-01-01 + 40 | 3 | .0000000 | 0 | 200.0000000 | .1818182 | 240.0000000 | 1401-04-01 + 40 | 4 | .0000000 | 1 | 800.0000000 | .1818182 | 840.0000000 | 1401-06-01 + 40 | 4 | .0000000 | 1 | 800.0000000 | .1818182 | .0000000 | 1401-06-01 + 30 | 3 | .0000000 | 5 | 600.0000000 | .5454545 | .0000000 | 1401-06-01 + 30 | 1 | .0000000 | 0 | 300.0000000 | .5454545 | 330.0000000 | 1401-05-02 + 30 | 1 | .0000000 | 5 | 500.0000000 | .5454545 | .0000000 | 1401-06-01 + 30 | 3 | .0000000 | 5 | 600.0000000 | .5454545 | .0000000 | 1401-06-01 + 20 | 1 | .0000000 | 0 | 100.0000000 | .9090909 | 120.0000000 | 1401-05-01 + 10 | 1 | .0000000 | 0 | 200.0000000 | 1.0000000 | 210.0000000 | 1401-03-01 +(12 rows) + +-- REGR_R2() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn*ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc); -- mvd 1->2; + cn | to_char +----+------------------- + 1 | .5000000 + 1 | .5000000 + 1 | .5000000 + 1 | .5000000 + 1 | .5000000 + 2 | .2680463 + 2 | .2680463 + 3 | .1968710 + 3 | .1968710 + 3 | .1968710 + 4 | .1636693 + 4 | .1636693 +(12 rows) + +-- REGR_R2() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.cn desc,ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc,ow_sale.cn asc); -- mvd 4->3; 4->5; 4->6; + vn | vn | to_char | cn | to_char | to_char +----+----+-------------------+----+-------------------+------------------- + 40 | 40 | .0000000 | 4 | 2.0000000 | 1.0000000 + 40 | 40 | .0000000 | 4 | 2.0000000 | 1.0000000 + 30 | 30 | 1.0000000 | 3 | 5.0000000 | 2.0000000 + 40 | 40 | 1.0000000 | 3 | 5.0000000 | 2.0000000 + 30 | 30 | 1.0000000 | 3 | 5.0000000 | 2.0000000 + 50 | 50 | 1.0000000 | 2 | 7.0000000 | 3.0000000 + 40 | 40 | 1.0000000 | 2 | 7.0000000 | 3.0000000 + 30 | 30 | 1.0000000 | 1 | 12.0000000 | 4.0000000 + 50 | 50 | 1.0000000 | 1 | 12.0000000 | 4.0000000 + 30 | 30 | 1.0000000 | 1 | 12.0000000 | 4.0000000 + 20 | 20 | 1.0000000 | 1 | 12.0000000 | 4.0000000 + 10 | 10 | 1.0000000 | 1 | 12.0000000 | 4.0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range unbounded preceding ); -- mvd 3->5; + vn | qty | pn | qty | to_char +----+------+-----+------+------------------- + 40 | 1 | 800 | 1 | .0000000 + 40 | 1 | 700 | 1 | .0000000 + 30 | 12 | 600 | 12 | .7500000 + 30 | 12 | 500 | 12 | .8284314 + 30 | 12 | 500 | 12 | .8284314 + 50 | 1 | 400 | 1 | .0885417 + 50 | 1 | 400 | 1 | .0885417 + 30 | 1 | 300 | 1 | .0023310 + 10 | 1 | 200 | 1 | .0791209 + 40 | 1 | 200 | 1 | .0791209 + 20 | 1 | 100 | 1 | .0936236 + 40 | 1100 | 100 | 1100 | .0936236 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.vn) as int),cast (floor(ow_sale.vn-ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn+ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc), +win4 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc); -- mvd 6->5; 2->7; 6->8; 2->9; 6->10; 6,12,2->11; + vn | pn | prc | vn | to_char | cn | to_char | to_char | to_char | to_char | to_char | dt +----+-----+------+----+-------------------+----+-------------------+-------------------+-------------------+-------------------+-------------------+------------ + 40 | 100 | 2400 | 40 | .6282692 | 2 | .9090909 | 2440.0000000 | 8.0000000 | 1.0000000 | .0000000 | 1401-01-01 + 10 | 200 | 0 | 10 | .4481814 | 1 | .7272727 | 10.0000000 | 7.0000000 | 2.0000000 | .0000000 | 1401-03-01 + 40 | 200 | 0 | 40 | .5903131 | 3 | .7272727 | 40.0000000 | 7.0000000 | 3.0000000 | .0000000 | 1401-04-01 + 20 | 100 | 0 | 20 | .4481814 | 1 | .9090909 | 20.0000000 | 8.0000000 | 4.0000000 | .0000000 | 1401-05-01 + 30 | 300 | 0 | 30 | .4481814 | 1 | .6363636 | 30.0000000 | 6.0000000 | 5.0000000 | .0000000 | 1401-05-02 + 50 | 400 | 0 | 50 | .4481814 | 1 | .4545455 | 50.0000000 | 5.0000000 | 6.0000000 | .0000000 | 1401-06-01 + 50 | 400 | 0 | 50 | .6282692 | 2 | .4545455 | 50.0000000 | 5.0000000 | 7.0000000 | .0000000 | 1401-06-01 + 30 | 500 | 5 | 30 | .4481814 | 1 | .2727273 | 35.0000000 | 4.0000000 | 8.0000000 | .0000000 | 1401-06-01 + 30 | 500 | 5 | 30 | .5903131 | 3 | .2727273 | 35.0000000 | 4.0000000 | 9.0000000 | .0000000 | 1401-06-01 + 30 | 600 | 5 | 30 | .5903131 | 3 | .1818182 | 35.0000000 | 3.0000000 | 10.0000000 | .0000000 | 1401-06-01 + 40 | 700 | 1 | 40 | .0000000 | 4 | .0909091 | 41.0000000 | 2.0000000 | 11.0000000 | .0000000 | 1401-06-01 + 40 | 800 | 1 | 40 | .0000000 | 4 | .0000000 | 41.0000000 | 1.0000000 | 12.0000000 | 1400.0000000 | 1401-06-01 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc+ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range 3 preceding ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.cn asc); -- mvd 4->3; 2->5; 1->6; + cn | vn | to_char | pn | to_char | to_char +----+----+-------------------+-----+-------------------+------------------- + 1 | 50 | .0000000 | 400 | 50.0000000 | .4166667 + 1 | 10 | 1.0000000 | 200 | 40.0000000 | .4166667 + 1 | 30 | .0000000 | 500 | 30.0000000 | .4166667 + 1 | 20 | 1.0000000 | 100 | 30.0000000 | .4166667 + 1 | 30 | .0000000 | 300 | 50.0000000 | .4166667 + 2 | 40 | 1.0000000 | 100 | 40.0000000 | .5833333 + 2 | 50 | .0000000 | 400 | 30.0000000 | .5833333 + 3 | 40 | 1.0000000 | 200 | 50.0000000 | .8333333 + 3 | 30 | .0000000 | 500 | 40.0000000 | .8333333 + 3 | 30 | .0000000 | 600 | .0000000 | .8333333 + 4 | 40 | .0000000 | 700 | .0000000 | 1.0000000 + 4 | 40 | .0000000 | 800 | .0000000 | 1.0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range current row ); -- mvd 5->4; + qty | qty | cn | to_char | vn +------+------+----+-------------------+---- + 1 | 1 | 2 | .0000000 | 50 + 1 | 1 | 1 | .0000000 | 50 + 1100 | 1100 | 2 | .0000000 | 40 + 1 | 1 | 4 | .0000000 | 40 + 1 | 1 | 4 | .0000000 | 40 + 1 | 1 | 3 | .0000000 | 40 + 12 | 12 | 3 | .0000000 | 30 + 1 | 1 | 1 | .0000000 | 30 + 12 | 12 | 1 | .0000000 | 30 + 12 | 12 | 3 | .0000000 | 30 + 1 | 1 | 1 | .0000000 | 20 + 1 | 1 | 1 | .0000000 | 10 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty),floor(ow_sale.prc/ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and 3 preceding ); -- mvd 1->3; + cn | vn | to_char +----+----+------------------- + 1 | 10 | .0000000 + 1 | 20 | .0000000 + 1 | 30 | .0000000 + 1 | 50 | .0000000 + 1 | 30 | .0000000 + 2 | 40 | .0000000 + 2 | 50 | .0000000 + 3 | 40 | .0000000 + 3 | 30 | .0000000 + 3 | 30 | .0000000 + 4 | 40 | .0000000 + 4 | 40 | .0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and floor(ow_sale.prc) preceding ), +win2 as (order by ow_sale.vn desc); -- mvd 4->3; 1->5; + vn | cn | to_char | pn | to_char +----+----+-------------------+-----+------------------- + 50 | 2 | .0000000 | 400 | 1.0000000 + 50 | 1 | .0000000 | 400 | 2.0000000 + 40 | 2 | .0000000 | 100 | 3.0000000 + 40 | 4 | .0000000 | 700 | 4.0000000 + 40 | 3 | .0000000 | 200 | 5.0000000 + 40 | 4 | .0000000 | 800 | 6.0000000 + 30 | 3 | .0000000 | 600 | 7.0000000 + 30 | 1 | .0000000 | 300 | 8.0000000 + 30 | 3 | .0000000 | 500 | 9.0000000 + 30 | 1 | .0000000 | 500 | 10.0000000 + 20 | 1 | .0000000 | 100 | 11.0000000 + 10 | 1 | .0000000 | 200 | 12.0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and current row ); -- mvd 3->2; + qty | to_char | pn +------+-------------------+----- + 1 | 1.0000000 | 100 + 1100 | 1.0000000 | 100 + 1 | .3079562 | 200 + 1 | .3079562 | 200 + 1 | .2641544 | 300 + 1 | .0276563 | 400 + 1 | .0276563 | 400 + 12 | .0354799 | 500 + 12 | .0354799 | 500 + 12 | .0383474 | 600 + 1 | .0303125 | 700 + 1 | .0245503 | 800 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn*ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc-ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->6; 8->7; 10,1,3,8->9; 8->11; 8->12; 1->13; + cn | qty | vn | cn | cn | to_char | to_char | pn | to_char | prc | to_char | to_char | to_char +----+------+----+----+----+-------------------+-------------------+-----+-------------------+------+-------------------+-------------------+------------------- + 2 | 1100 | 40 | 2 | 2 | .0000000 | .1666667 | 100 | 1.0000000 | 2400 | 1.0000000 | 1.0000000 | 1100.0000000 + 1 | 1 | 10 | 1 | 1 | .0000000 | .3333333 | 200 | 1.0000000 | 0 | 1.0000000 | 3.0000000 | 1.0000000 + 3 | 1 | 40 | 3 | 3 | .0000000 | .3333333 | 200 | 1.0000000 | 0 | 1.0000000 | 3.0000000 | 1.0000000 + 1 | 1 | 20 | 1 | 1 | .0000000 | .1666667 | 100 | 1.0000000 | 0 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 30 | 1 | 1 | .0000000 | .4166667 | 300 | 1.0000000 | 0 | 1.0000000 | 5.0000000 | 1.0000000 + 1 | 1 | 50 | 1 | 1 | .0000000 | .5833333 | 400 | 1.0000000 | 0 | 1.0000000 | 6.0000000 | 1.0000000 + 2 | 1 | 50 | 2 | 2 | .0000000 | .5833333 | 400 | 2.0000000 | 0 | 1.0000000 | 6.0000000 | 1.0000000 + 1 | 12 | 30 | 1 | 1 | .0000000 | .7500000 | 500 | 1.0000000 | 5 | 1.0000000 | 8.0000000 | 12.0000000 + 3 | 12 | 30 | 3 | 3 | .0000000 | .7500000 | 500 | 2.0000000 | 5 | 1.0000000 | 8.0000000 | 12.0000000 + 3 | 12 | 30 | 3 | 3 | .0000000 | .8333333 | 600 | 1.0000000 | 5 | 1.0000000 | 10.0000000 | 12.0000000 + 4 | 1 | 40 | 4 | 4 | .0000000 | .9166667 | 700 | 1.0000000 | 1 | 1.0000000 | 11.0000000 | 1.0000000 + 4 | 1 | 40 | 4 | 4 | .0000000 | 1.0000000 | 800 | 1.0000000 | 1 | 1.0000000 | 12.0000000 | 1.0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.vn/ow_sale.cn) following ); -- mvd 1->4; + vn | qty | pn | to_char +----+------+-----+------------------- + 50 | 1 | 400 | .3177444 + 50 | 1 | 400 | .1656546 + 40 | 1100 | 100 | .2043170 + 40 | 1 | 700 | .3177444 + 40 | 1 | 800 | .3177444 + 40 | 1 | 200 | .3177444 + 30 | 12 | 600 | .2043170 + 30 | 1 | 300 | .1656546 + 30 | 12 | 500 | .1656546 + 30 | 12 | 500 | .2043170 + 20 | 1 | 100 | .1656546 + 10 | 1 | 200 | .1656546 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn+ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.cn order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and 1 following ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.qty order by ow_sale.pn desc), +win4 as (partition by ow_sale.cn order by ow_sale.pn asc); -- mvd 5->4; 1->6; 5->7; 9,10,1->8; 5,1->11; 5,1->12; + pn | pn | pn | to_char | cn | to_char | to_char | to_char | dt | qty | to_char | to_char +-----+-----+-----+-------------------+----+-------------------+-------------------+-------------------+------------+------+-------------------+------------------- + 100 | 100 | 100 | .0630832 | 2 | .0000000 | 3.0000000 | 1.0000000 | 1401-01-01 | 1100 | .5000000 | 2400.0000000 + 200 | 200 | 200 | .3074468 | 1 | 44.0000000 | 2.0000000 | 1.0000000 | 1401-03-01 | 1 | .4000000 | .0000000 + 200 | 200 | 200 | .1142280 | 3 | .0000000 | 4.0000000 | 1.0000000 | 1401-04-01 | 1 | .3333333 | .0000000 + 100 | 100 | 100 | .3074468 | 1 | .0000000 | 2.0000000 | 1.0000000 | 1401-05-01 | 1 | .2000000 | .0000000 + 300 | 300 | 300 | .3074468 | 1 | .0000000 | 2.0000000 | 1.0000000 | 1401-05-02 | 1 | .6000000 | .0000000 + 400 | 400 | 400 | .3074468 | 1 | .0000000 | 2.0000000 | 2.0000000 | 1401-06-01 | 1 | .8000000 | .0000000 + 400 | 400 | 400 | .0630832 | 2 | .0000000 | 3.0000000 | 1.0000000 | 1401-06-01 | 1 | 1.0000000 | 2400.0000000 + 500 | 500 | 500 | .3074468 | 1 | .0000000 | 2.0000000 | 1.0000000 | 1401-06-01 | 12 | 1.0000000 | 5.0000000 + 500 | 500 | 500 | .1142280 | 3 | .0000000 | 4.0000000 | 2.0000000 | 1401-06-01 | 12 | .6666667 | 5.0000000 + 600 | 600 | 600 | .1142280 | 3 | .0000000 | 4.0000000 | 1.0000000 | 1401-06-01 | 12 | 1.0000000 | 5.0000000 + 700 | 700 | 700 | .1142280 | 4 | .0000000 | 4.0000000 | 1.0000000 | 1401-06-01 | 1 | .5000000 | 1.0000000 + 800 | 800 | 800 | .1142280 | 4 | .0000000 | 4.0000000 | 1.0000000 | 1401-06-01 | 1 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc),floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and unbounded following ); -- mvd 3->2; + pn | to_char | cn +-----+-------------------+---- + 800 | .9999970 | 4 + 700 | .9999970 | 4 + 500 | .9999970 | 3 + 600 | .9999970 | 3 + 200 | .9999970 | 3 + 400 | .9999970 | 2 + 100 | .9999970 | 2 + 300 | .9999970 | 1 + 500 | .9999970 | 1 + 400 | .9999970 | 1 + 200 | .9999970 | 1 + 100 | .9999970 | 1 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty+ow_sale.prc) as int),cast (floor(ow_sale.qty/ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.prc) as int),cast (floor(ow_sale.prc+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(order by ow_sale.pn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 5->6; 5->7; 5->8; 10,11->9; 5->12; + vn | vn | qty | qty | pn | to_char | to_char | to_char | to_char | cn | dt | to_char +----+----+------+------+-----+-------------------+-------------------+-------------------+-------------------+----+------------+------------------- + 40 | 40 | 1100 | 1100 | 100 | .9430371 | .0000000 | .0000000 | .0000000 | 2 | 1401-01-01 | .0000000 + 10 | 10 | 1 | 1 | 200 | .9430371 | 1.0000000 | .0909091 | .0000000 | 1 | 1401-03-01 | .0000000 + 40 | 40 | 1 | 1 | 200 | .9430371 | 1.0000000 | .1818182 | .0000000 | 3 | 1401-04-01 | .0000000 + 20 | 20 | 1 | 1 | 100 | .9430371 | 1.0000000 | .2727273 | .0000000 | 1 | 1401-05-01 | .0000000 + 30 | 30 | 1 | 1 | 300 | .9430371 | 1.0000000 | .3636364 | .0000000 | 1 | 1401-05-02 | .0000000 + 50 | 50 | 1 | 1 | 400 | .9430371 | 1.0000000 | .4545455 | .0000000 | 1 | 1401-06-01 | .0000000 + 50 | 50 | 1 | 1 | 400 | .9430371 | 1.0000000 | .5454545 | 10.0000000 | 2 | 1401-06-01 | .0000000 + 30 | 30 | 12 | 12 | 500 | .9430371 | 17.0000000 | .6363636 | .0000000 | 1 | 1401-06-01 | .0000000 + 30 | 30 | 12 | 12 | 500 | .9430371 | 17.0000000 | .7272727 | .0000000 | 3 | 1401-06-01 | .0000000 + 30 | 30 | 12 | 12 | 600 | .9430371 | 17.0000000 | .8181818 | .0000000 | 3 | 1401-06-01 | .0000000 + 40 | 40 | 1 | 1 | 700 | .9430371 | 2.0000000 | .9090909 | .0000000 | 4 | 1401-06-01 | .0000000 + 40 | 40 | 1 | 1 | 800 | .9430371 | 2.0000000 | 1.0000000 | .0000000 | 4 | 1401-06-01 | .0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty+ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 2 preceding and floor(ow_sale.prc) preceding ), +win2 as (order by ow_sale.cn asc); -- mvd 1->5; 7->6; + pn | qty | vn | prc | to_char | to_char | cn +-----+------+----+------+-------------------+-------------------+---- + 400 | 1 | 50 | 0 | .0000000 | 1.0000000 | 1 + 100 | 1 | 20 | 0 | 1.0000000 | 1.0000000 | 1 + 200 | 1 | 10 | 0 | .0000000 | 1.0000000 | 1 + 500 | 12 | 30 | 5 | .0000000 | 1.0000000 | 1 + 300 | 1 | 30 | 0 | .0000000 | 1.0000000 | 1 + 100 | 1100 | 40 | 2400 | .0000000 | 2.0000000 | 2 + 400 | 1 | 50 | 0 | .0000000 | 2.0000000 | 2 + 500 | 12 | 30 | 5 | .0000000 | 3.0000000 | 3 + 600 | 12 | 30 | 5 | .0000000 | 3.0000000 | 3 + 200 | 1 | 40 | 0 | .0000000 | 3.0000000 | 3 + 700 | 1 | 40 | 1 | .0000000 | 4.0000000 | 4 + 800 | 1 | 40 | 1 | .0000000 | 4.0000000 | 4 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty),floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.cn) preceding and current row ); -- mvd 1->3; + pn | qty | to_char +-----+------+------------------- + 100 | 1 | 1.0000000 + 100 | 1100 | 1.0000000 + 200 | 1 | 1.0000000 + 200 | 1 | 1.0000000 + 300 | 1 | .0000000 + 400 | 1 | .0000000 + 400 | 1 | .0000000 + 500 | 12 | .0000000 + 500 | 12 | .0000000 + 600 | 12 | .0000000 + 700 | 1 | .0000000 + 800 | 1 | .0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 0 preceding and floor(ow_sale.pn) following ); -- mvd 3->2; + qty | to_char | vn +------+-------------------+---- + 1 | .1682268 | 50 + 1 | .1682268 | 50 + 1100 | .1713913 | 40 + 1 | .1713913 | 40 + 1 | .1713913 | 40 + 1 | .1713913 | 40 + 12 | .8620690 | 30 + 1 | .8620690 | 30 + 12 | .8620690 | 30 + 12 | .8620690 | 30 + 1 | 1.0000000 | 20 + 1 | .0000000 | 10 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 3 preceding and 1 following ), +win2 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.vn order by ow_sale.pn asc); -- mvd 4->6; 5,2,1->7; + pn | vn | vn | cn | qty | to_char | to_char +-----+----+----+----+------+-------------------+------------------- + 800 | 40 | 40 | 4 | 1 | .4444444 | 3.0000000 + 700 | 40 | 40 | 4 | 1 | .4444444 | 2.0000000 + 200 | 40 | 40 | 3 | 1 | .2935766 | 1.0000000 + 500 | 30 | 30 | 3 | 12 | .2935766 | 2.0000000 + 600 | 30 | 30 | 3 | 12 | .2935766 | 3.0000000 + 100 | 40 | 40 | 2 | 1100 | .0018294 | 1.0000000 + 400 | 50 | 50 | 2 | 1 | .0018294 | 2.0000000 + 300 | 30 | 30 | 1 | 1 | .0018294 | 1.0000000 + 100 | 20 | 20 | 1 | 1 | .0018294 | 1.0000000 + 400 | 50 | 50 | 1 | 1 | .0018294 | 1.0000000 + 200 | 10 | 10 | 1 | 1 | .0018294 | 1.0000000 + 500 | 30 | 30 | 1 | 12 | .0018294 | 1.0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 4 preceding and unbounded following ); -- mvd 4->3; + dt | qty | to_char | pn +------------+------+-------------------+----- + 1401-06-01 | 1 | .6199447 | 800 + 1401-06-01 | 1 | .5850739 | 700 + 1401-06-01 | 12 | .5539458 | 600 + 1401-06-01 | 12 | .5363414 | 500 + 1401-06-01 | 12 | .5363414 | 500 + 1401-06-01 | 1 | .5230280 | 400 + 1401-06-01 | 1 | .5230280 | 400 + 1401-05-02 | 1 | .4914061 | 300 + 1401-03-01 | 1 | .5236180 | 200 + 1401-04-01 | 1 | .5236180 | 200 + 1401-05-01 | 1 | 1.0000000 | 100 + 1401-01-01 | 1100 | 1.0000000 | 100 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(order by ow_sale.cn asc range between 0 preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn-ow_sale.pn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 0 preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.pn asc), +win3 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.vn desc); -- mvd 7->6; 3,7,2,1->8; 7->9; 2,1->10; 3,7,2,1->11; 2,1->12; + pn | vn | prc | pn | vn | to_char | cn | to_char | to_char | to_char | to_char | to_char +-----+----+------+-----+----+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 300 | 30 | 0 | 300 | 30 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 500 | 30 | 5 | 500 | 30 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1.0000000 | 12.0000000 | 2.0000000 + 400 | 50 | 0 | 400 | 50 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 2.0000000 + 200 | 10 | 0 | 200 | 10 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 100 | 20 | 0 | 100 | 20 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 100 | 40 | 2400 | 100 | 40 | 1.0000000 | 2 | 1.0000000 | 1.0000000 | 1.0000000 | 1100.0000000 | 1.0000000 + 400 | 50 | 0 | 400 | 50 | 1.0000000 | 2 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 2.0000000 + 500 | 30 | 5 | 500 | 30 | 1.0000000 | 3 | 1.0000000 | 1.0000000 | 1.0000000 | 12.0000000 | 2.0000000 + 600 | 30 | 5 | 600 | 30 | 1.0000000 | 3 | 1.0000000 | 1.0000000 | 1.0000000 | 12.0000000 | 1.0000000 + 200 | 40 | 0 | 200 | 40 | 1.0000000 | 3 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 700 | 40 | 1 | 700 | 40 | .0000000 | 4 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 800 | 40 | 1 | 800 | 40 | .0000000 | 4 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and current row ); -- mvd 4->3; + qty | cn | to_char | pn +------+----+-------------------+----- + 1 | 4 | .0000000 | 800 + 1 | 4 | .0000000 | 700 + 12 | 3 | .0000000 | 600 + 12 | 1 | 1.0000000 | 500 + 12 | 3 | 1.0000000 | 500 + 1 | 1 | 1.0000000 | 400 + 1 | 2 | 1.0000000 | 400 + 1 | 1 | .0000000 | 300 + 1 | 1 | 1.0000000 | 200 + 1 | 3 | 1.0000000 | 200 + 1 | 1 | 1.0000000 | 100 + 1100 | 2 | 1.0000000 | 100 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.qty)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc+ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.pn order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and current row ), +win2 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.pn order by ow_sale.pn desc), +win3 as (order by ow_sale.cn desc), +win4 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.vn desc); -- mvd 2->3; 5,2,6,1->4; 8->7; 10,2,1->9; 8->11; 5,2,6,1->12; + pn | vn | to_char | to_char | dt | qty | to_char | cn | to_char | prc | to_char | to_char +-----+----+-------------------+-------------------+------------+------+-------------------+----+-------------------+------+-------------------+------------------- + 800 | 40 | .0000000 | 1.0000000 | 1401-06-01 | 1 | 1.0000000 | 4 | 1.0000000 | 1 | .0000000 | 5.0000000 + 700 | 40 | .0000000 | 1.0000000 | 1401-06-01 | 1 | 1.0000000 | 4 | 1.0000000 | 1 | .0000000 | 5.0000000 + 500 | 30 | .0000000 | 1.0000000 | 1401-06-01 | 12 | 3.0000000 | 3 | 1.0000000 | 5 | -7.0000000 | 6.0000000 + 200 | 40 | .0000000 | 1.0000000 | 1401-04-01 | 1 | 3.0000000 | 3 | 1.0000000 | 0 | -7.0000000 | 3.0000000 + 600 | 30 | .0000000 | 1.0000000 | 1401-06-01 | 12 | 3.0000000 | 3 | 1.0000000 | 5 | -7.0000000 | 8.0000000 + 400 | 50 | .0000000 | 1.0000000 | 1401-06-01 | 1 | 6.0000000 | 2 | 1.0000000 | 0 | -7.0000000 | 1.0000000 + 100 | 40 | .0000000 | 1.0000000 | 1401-01-01 | 1100 | 6.0000000 | 2 | 1.0000000 | 2400 | -7.0000000 | 2402.0000000 + 500 | 30 | .0000000 | 1.0000000 | 1401-06-01 | 12 | 8.0000000 | 1 | 1.0000000 | 5 | -7.0000000 | 6.0000000 + 300 | 30 | .0000000 | 1.0000000 | 1401-05-02 | 1 | 8.0000000 | 1 | 1.0000000 | 0 | -7.0000000 | 1.0000000 + 100 | 20 | .0000000 | 1.0000000 | 1401-05-01 | 1 | 8.0000000 | 1 | 1.0000000 | 0 | -7.0000000 | 1.0000000 + 400 | 50 | .0000000 | 1.0000000 | 1401-06-01 | 1 | 8.0000000 | 1 | 1.0000000 | 0 | -7.0000000 | 1.0000000 + 200 | 10 | .0000000 | 1.0000000 | 1401-03-01 | 1 | 8.0000000 | 1 | 2.0000000 | 0 | -7.0000000 | 1.0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and floor(ow_sale.prc*ow_sale.cn) following ); -- mvd 4->3; + vn | vn | to_char | pn +----+----+-------------------+----- + 20 | 20 | 1.0000000 | 100 + 40 | 40 | .9999066 | 100 + 10 | 10 | .0000000 | 200 + 40 | 40 | .0000000 | 200 + 30 | 30 | .0000000 | 300 + 50 | 50 | .0000000 | 400 + 50 | 50 | .0000000 | 400 + 30 | 30 | .0000000 | 500 + 30 | 30 | .0000000 | 500 + 30 | 30 | .0000000 | 600 + 40 | 40 | .0000000 | 700 + 40 | 40 | .0000000 | 800 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty+ow_sale.vn),floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.pn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and 3 following ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc); -- mvd 5->4; 5,7,2,1->6; + pn | vn | pn | to_char | cn | to_char | qty +-----+----+-----+-------------------+----+-------------------+------ + 800 | 40 | 800 | .1555897 | 4 | .0000000 | 1 + 700 | 40 | 700 | .1555897 | 4 | .0000000 | 1 + 500 | 30 | 500 | .1910215 | 3 | .0000000 | 12 + 600 | 30 | 600 | .1910215 | 3 | .0000000 | 12 + 200 | 40 | 200 | .1910215 | 3 | .0000000 | 1 + 400 | 50 | 400 | .2469405 | 2 | .0000000 | 1 + 100 | 40 | 100 | .2469405 | 2 | .0000000 | 1100 + 300 | 30 | 300 | .6586991 | 1 | .0000000 | 1 + 500 | 30 | 500 | .6586991 | 1 | .0000000 | 12 + 400 | 50 | 400 | .6586991 | 1 | .0000000 | 1 + 200 | 10 | 200 | .6586991 | 1 | .0000000 | 1 + 100 | 20 | 100 | .6586991 | 1 | .0000000 | 1 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn+ow_sale.qty),floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and unbounded following ); -- mvd 1->5; + pn | cn | cn | cn | to_char +-----+----+----+----+------------------- + 800 | 4 | 4 | 4 | .0000000 + 700 | 4 | 4 | 4 | .0000000 + 600 | 3 | 3 | 3 | .0000000 + 500 | 1 | 1 | 1 | .0000000 + 500 | 3 | 3 | 3 | .0000000 + 400 | 1 | 1 | 1 | .0000000 + 400 | 2 | 2 | 2 | .0000000 + 300 | 1 | 1 | 1 | .0000000 + 200 | 1 | 1 | 1 | .0000000 + 200 | 3 | 3 | 3 | .0000000 + 100 | 1 | 1 | 1 | .0000000 + 100 | 2 | 2 | 2 | .0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn*ow_sale.qty),floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.cn) as int),cast (floor(ow_sale.qty*ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and unbounded following ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 1->3; 2->4; 2->5; 7->6; + vn | pn | to_char | to_char | to_char | to_char | cn +----+-----+-------------------+-------------------+-------------------+-------------------+---- + 40 | 100 | .9999987 | .1666667 | 1.0000000 | .0000000 | 2 + 10 | 200 | .9996441 | .3333333 | 3.0000000 | 8.0000000 | 1 + 40 | 200 | .9999987 | .3333333 | 4.0000000 | .0000000 | 3 + 20 | 100 | .9996577 | .1666667 | 2.0000000 | .0000000 | 1 + 30 | 300 | .9996724 | .4166667 | 5.0000000 | .0000000 | 1 + 50 | 400 | .0000000 | .5833333 | 6.0000000 | .0000000 | 1 + 50 | 400 | .0000000 | .5833333 | 7.0000000 | .0000000 | 2 + 30 | 500 | .9996724 | .7500000 | 8.0000000 | .0000000 | 1 + 30 | 500 | .9996724 | .7500000 | 9.0000000 | .0000000 | 3 + 30 | 600 | .9996724 | .8333333 | 10.0000000 | .0000000 | 3 + 40 | 700 | .9999987 | .9166667 | 11.0000000 | .0000000 | 4 + 40 | 800 | .9999987 | 1.0000000 | 12.0000000 | .0000000 | 4 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.pn) following and 2 following ); -- mvd 3->4; + pn | pn | vn | to_char +-----+-----+----+------------------- + 200 | 200 | 10 | .0000000 + 100 | 100 | 20 | .0000000 + 600 | 600 | 30 | .0000000 + 300 | 300 | 30 | .0000000 + 500 | 500 | 30 | .0000000 + 500 | 500 | 30 | .0000000 + 100 | 100 | 40 | .0000000 + 700 | 700 | 40 | .0000000 + 200 | 200 | 40 | .0000000 + 800 | 800 | 40 | .0000000 + 400 | 400 | 50 | .0000000 + 400 | 400 | 50 | .0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 3 following and floor(ow_sale.vn) following ), +win2 as (order by ow_sale.vn asc); -- mvd 3->4; 3->5; 3->6; 3->7; + pn | cn | vn | to_char | to_char | to_char | to_char +-----+----+----+-------------------+-------------------+-------------------+------------------- + 400 | 2 | 50 | .0000000 | 1.0000000 | 11.0000000 | 11.0000000 + 400 | 1 | 50 | .0000000 | 1.0000000 | 12.0000000 | 11.0000000 + 100 | 2 | 40 | .0000000 | 1.0000000 | 7.0000000 | 7.0000000 + 700 | 4 | 40 | .0000000 | 1.0000000 | 8.0000000 | 7.0000000 + 200 | 3 | 40 | .0000000 | 1.0000000 | 9.0000000 | 7.0000000 + 800 | 4 | 40 | .0000000 | 1.0000000 | 10.0000000 | 7.0000000 + 600 | 3 | 30 | .0000000 | 1.0000000 | 3.0000000 | 3.0000000 + 300 | 1 | 30 | .0000000 | 1.0000000 | 4.0000000 | 3.0000000 + 500 | 1 | 30 | .0000000 | 1.0000000 | 5.0000000 | 3.0000000 + 500 | 3 | 30 | .0000000 | 1.0000000 | 6.0000000 | 3.0000000 + 100 | 1 | 20 | .0000000 | 1.0000000 | 2.0000000 | 2.0000000 + 200 | 1 | 10 | .0000000 | .0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.cn/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 2 following and unbounded following ); -- mvd 1->5; + cn | vn | qty | vn | to_char +----+----+------+----+------------------- + 4 | 40 | 1 | 40 | .0000000 + 4 | 40 | 1 | 40 | .0000000 + 3 | 30 | 12 | 30 | .0000000 + 3 | 40 | 1 | 40 | .0000000 + 3 | 30 | 12 | 30 | .0000000 + 2 | 50 | 1 | 50 | .0000000 + 2 | 40 | 1100 | 40 | .0000000 + 1 | 30 | 1 | 30 | .0000000 + 1 | 50 | 1 | 50 | .0000000 + 1 | 30 | 12 | 30 | .0000000 + 1 | 10 | 1 | 10 | .0000000 + 1 | 20 | 1 | 20 | .0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn+ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 0 following and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.prc order by ow_sale.cn desc); -- mvd 8->7; 10,8,1->9; + pn | pn | vn | pn | vn | pn | to_char | cn | to_char | prc +-----+-----+----+-----+----+-----+-------------------+----+-------------------+------ + 300 | 300 | 30 | 300 | 30 | 300 | .0243583 | 1 | 1.0000000 | 0 + 400 | 400 | 50 | 400 | 50 | 400 | .0243583 | 1 | 2.0000000 | 0 + 500 | 500 | 30 | 500 | 30 | 500 | .0243583 | 1 | 2.0000000 | 5 + 100 | 100 | 20 | 100 | 20 | 100 | .0243583 | 1 | 1.0000000 | 0 + 200 | 200 | 10 | 200 | 10 | 200 | .0243583 | 1 | 2.0000000 | 0 + 100 | 100 | 40 | 100 | 40 | 100 | .0064140 | 2 | 1.0000000 | 2400 + 400 | 400 | 50 | 400 | 50 | 400 | .0064140 | 2 | 1.0000000 | 0 + 500 | 500 | 30 | 500 | 30 | 500 | .9948240 | 3 | 1.0000000 | 5 + 200 | 200 | 40 | 200 | 40 | 200 | .9948240 | 3 | 1.0000000 | 0 + 600 | 600 | 30 | 600 | 30 | 600 | .9948240 | 3 | 1.0000000 | 5 + 800 | 800 | 40 | 800 | 40 | 800 | .0000000 | 4 | 1.0000000 | 1 + 700 | 700 | 40 | 700 | 40 | 700 | .0000000 | 4 | 1.0000000 | 1 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows unbounded preceding ); -- mvd 3->5; + cn | prc | pn | cn | to_char +----+------+-----+----+------------------- + 2 | 2400 | 100 | 2 | .0000000 + 1 | 0 | 200 | 1 | 1.0000000 + 3 | 0 | 200 | 3 | .2767528 + 1 | 0 | 100 | 1 | .0501866 + 1 | 0 | 300 | 1 | .0014959 + 1 | 0 | 400 | 1 | .2239503 + 2 | 0 | 400 | 2 | .3619916 + 1 | 5 | 500 | 1 | .1728363 + 3 | 5 | 500 | 3 | .0891902 + 3 | 5 | 600 | 3 | .0345281 + 4 | 1 | 700 | 4 | .0491127 + 4 | 1 | 800 | 4 | .0601729 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn/ow_sale.cn),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc+ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows unbounded preceding ), +win2 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.qty,ow_sale.pn order by ow_sale.vn asc), +win3 as (order by ow_sale.ord, ow_sale.pn desc), +win4 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc); -- mvd 5,2->4; 5,2->6; 8,3,5,1,2->7; 2->9; 5,2->10; 12,5,1,2->11; + qty | pn | dt | to_char | vn | to_char | to_char | prc | to_char | to_char | to_char | cn +------+-----+------------+-------------------+----+-------------------+-------------------+------+-------------------+-------------------+-------------------+---- + 1100 | 100 | 1401-01-01 | .0000000 | 40 | 1100.0000000 | .0000000 | 2400 | .0000000 | 1.0000000 | .0000000 | 2 + 1 | 200 | 1401-03-01 | 1.0000000 | 10 | 1100.0000000 | .0000000 | 0 | .0000000 | 2.0000000 | .0000000 | 1 + 1 | 200 | 1401-04-01 | .9046277 | 40 | 1100.0000000 | .0000000 | 0 | .0000000 | 3.0000000 | .0000000 | 3 + 1 | 100 | 1401-05-01 | .9345365 | 20 | 1100.0000000 | .0000000 | 0 | .0000000 | 4.0000000 | .0000000 | 1 + 1 | 300 | 1401-05-02 | .1082221 | 30 | 1100.0000000 | .0000000 | 0 | .0000000 | 5.0000000 | .0000000 | 1 + 1 | 400 | 1401-06-01 | .6019125 | 50 | 1100.0000000 | .0000000 | 0 | .0000000 | 6.0000000 | .0000000 | 1 + 1 | 400 | 1401-06-01 | .4455595 | 50 | 1100.0000000 | .0000000 | 0 | .0000000 | 7.0000000 | .0000000 | 2 + 12 | 500 | 1401-06-01 | .3901993 | 30 | 1100.0000000 | .0000000 | 5 | .0000000 | 8.0000000 | .0000000 | 1 + 12 | 500 | 1401-06-01 | .1030362 | 30 | 1100.0000000 | .0000000 | 5 | .0000000 | 9.0000000 | .0000000 | 3 + 12 | 600 | 1401-06-01 | .0062721 | 30 | 1100.0000000 | .0000000 | 5 | .0000000 | 10.0000000 | .0000000 | 3 + 1 | 700 | 1401-06-01 | .0089762 | 40 | 1100.0000000 | .0000000 | 1 | .0000000 | 11.0000000 | .0000000 | 4 + 1 | 800 | 1401-06-01 | .0460172 | 40 | 1100.0000000 | .0000000 | 1 | .0000000 | 12.0000000 | .0000000 | 4 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn*ow_sale.qty),floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows floor(ow_sale.prc) preceding ); -- mvd 2->5; + pn | cn | vn | cn | to_char +-----+----+----+----+------------------- + 100 | 2 | 40 | 2 | .0000000 + 200 | 1 | 10 | 1 | .0000000 + 200 | 3 | 40 | 3 | .0000000 + 100 | 1 | 20 | 1 | .0000000 + 300 | 1 | 30 | 1 | .0000000 + 400 | 1 | 50 | 1 | .0000000 + 400 | 2 | 50 | 2 | .0000000 + 500 | 1 | 30 | 1 | .0274909 + 500 | 3 | 30 | 3 | .0208095 + 600 | 3 | 30 | 3 | .0188307 + 700 | 4 | 40 | 4 | 1.0000000 + 800 | 4 | 40 | 4 | .0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn*ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows current row ); -- mvd 3->5; + pn | vn | cn | pn | to_char +-----+----+----+-----+------------------- + 100 | 40 | 2 | 100 | .0000000 + 200 | 10 | 1 | 200 | .0000000 + 200 | 40 | 3 | 200 | .0000000 + 100 | 20 | 1 | 100 | .0000000 + 300 | 30 | 1 | 300 | .0000000 + 400 | 50 | 1 | 400 | .0000000 + 400 | 50 | 2 | 400 | .0000000 + 500 | 30 | 1 | 500 | .0000000 + 500 | 30 | 3 | 500 | .0000000 + 600 | 30 | 3 | 600 | .0000000 + 700 | 40 | 4 | 700 | .0000000 + 800 | 40 | 4 | 800 | .0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows current row ); -- mvd 8->7; 8->9; + pn | dt | qty | qty | qty | vn | to_char | cn | to_char +-----+------------+------+------+------+----+-------------------+----+------------------- + 100 | 1401-01-01 | 1100 | 1100 | 1100 | 40 | .0000000 | 2 | -2398.0000000 + 200 | 1401-03-01 | 1 | 1 | 1 | 10 | .0000000 | 1 | 1.0000000 + 200 | 1401-04-01 | 1 | 1 | 1 | 40 | .0000000 | 3 | 3.0000000 + 100 | 1401-05-01 | 1 | 1 | 1 | 20 | .0000000 | 1 | 1.0000000 + 300 | 1401-05-02 | 1 | 1 | 1 | 30 | .0000000 | 1 | 1.0000000 + 400 | 1401-06-01 | 1 | 1 | 1 | 50 | .0000000 | 1 | 1.0000000 + 400 | 1401-06-01 | 1 | 1 | 1 | 50 | .0000000 | 2 | 2.0000000 + 500 | 1401-06-01 | 12 | 12 | 12 | 30 | .0000000 | 1 | -4.0000000 + 500 | 1401-06-01 | 12 | 12 | 12 | 30 | .0000000 | 3 | -2.0000000 + 600 | 1401-06-01 | 12 | 12 | 12 | 30 | .0000000 | 3 | -2.0000000 + 700 | 1401-06-01 | 1 | 1 | 1 | 40 | .0000000 | 4 | 3.0000000 + 800 | 1401-06-01 | 1 | 1 | 1 | 40 | .0000000 | 4 | 3.0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.pn+ow_sale.qty) preceding ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.cn desc); -- mvd 1->7; 1,4,2->8; + cn | pn | qty | vn | dt | pn | to_char | to_char +----+-----+------+----+------------+-----+-------------------+------------------- + 2 | 100 | 1100 | 40 | 1401-01-01 | 100 | .0000000 | 1.0000000 + 1 | 200 | 1 | 10 | 1401-03-01 | 200 | .0000000 | 1.0000000 + 3 | 200 | 1 | 40 | 1401-04-01 | 200 | .0000000 | 1.0000000 + 1 | 100 | 1 | 20 | 1401-05-01 | 100 | .0000000 | 1.0000000 + 1 | 300 | 1 | 30 | 1401-05-02 | 300 | .0000000 | 1.0000000 + 1 | 400 | 1 | 50 | 1401-06-01 | 400 | .0000000 | 1.0000000 + 2 | 400 | 1 | 50 | 1401-06-01 | 400 | .0000000 | 1.0000000 + 1 | 500 | 12 | 30 | 1401-06-01 | 500 | .0000000 | 1.0000000 + 3 | 500 | 12 | 30 | 1401-06-01 | 500 | .0000000 | 1.0000000 + 3 | 600 | 12 | 30 | 1401-06-01 | 600 | .0000000 | 1.0000000 + 4 | 700 | 1 | 40 | 1401-06-01 | 700 | .0000000 | 1.0000000 + 4 | 800 | 1 | 40 | 1401-06-01 | 800 | .0000000 | 1.0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and current row ); -- mvd 6->5; + prc | cn | qty | dt | to_char | pn +------+----+------+------------+-------------------+----- + 2400 | 2 | 1100 | 1401-01-01 | .0000000 | 100 + 0 | 1 | 1 | 1401-03-01 | 1.0000000 | 200 + 0 | 3 | 1 | 1401-04-01 | .2500000 | 200 + 0 | 1 | 1 | 1401-05-01 | .3086420 | 100 + 0 | 1 | 1 | 1401-05-02 | .2647059 | 300 + 0 | 1 | 1 | 1401-06-01 | .0769231 | 400 + 0 | 2 | 1 | 1401-06-01 | .0277778 | 400 + 5 | 1 | 12 | 1401-06-01 | .0318777 | 500 + 5 | 3 | 12 | 1401-06-01 | .0351728 | 500 + 5 | 3 | 12 | 1401-06-01 | .0378695 | 600 + 1 | 4 | 1 | 1401-06-01 | .0297546 | 700 + 1 | 4 | 1 | 1401-06-01 | .0239546 | 800 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn*ow_sale.pn),floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.prc) as int),cast (floor(ow_sale.qty+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 1->5; 7->6; + vn | pn | prc | prc | to_char | to_char | cn +----+-----+------+------+-------------------+-------------------+---- + 40 | 100 | 2400 | 2400 | .0000000 | .0000000 | 2 + 10 | 200 | 0 | 0 | 1.0000000 | .0000000 | 1 + 40 | 200 | 0 | 0 | .2500000 | -2360.0000000 | 3 + 20 | 100 | 0 | 0 | .0623447 | 10.0000000 | 1 + 30 | 300 | 0 | 0 | .0651448 | 40.0000000 | 1 + 50 | 400 | 0 | 0 | .0968299 | 20.0000000 | 1 + 50 | 400 | 0 | 0 | .1362035 | 30.0000000 | 2 + 30 | 500 | 5 | 5 | .1571508 | .0000000 | 1 + 30 | 500 | 5 | 5 | .1347830 | .0000000 | 3 + 30 | 600 | 5 | 5 | .1609828 | .0000000 | 3 + 40 | 700 | 1 | 1 | .1774736 | 25.0000000 | 4 + 40 | 800 | 1 | 1 | .2144309 | 25.0000000 | 4 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty+ow_sale.pn),floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.prc) following ); -- mvd 1,3->2; + cn | to_char | pn +----+-------------------+----- + 2 | .5331882 | 100 + 1 | 1.0000000 | 200 + 3 | .9999975 | 200 + 1 | .9918806 | 100 + 1 | .9755591 | 300 + 1 | .9362880 | 400 + 2 | .9103913 | 400 + 1 | .5331882 | 500 + 3 | .5331882 | 500 + 3 | .5331882 | 600 + 4 | .5331882 | 700 + 4 | .5331882 | 800 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.cn order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(partition by ow_sale.cn order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 2 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 2 following ), +win2 as (partition by ow_sale.cn order by ow_sale.vn asc), +win3 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.vn asc); -- mvd 6->7; 9,6->8; 9,6->10; 9,6->11; 6->12; 14,6->13; + prc | pn | pn | pn | qty | vn | to_char | to_char | cn | to_char | to_char | to_char | to_char | dt +------+-----+-----+-----+------+----+-------------------+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------ + 2400 | 100 | 100 | 100 | 1100 | 40 | 1.0000000 | 1.0000000 | 2 | 1.0000000 | 40.0000000 | 40.0000000 | 1.0000000 | 1401-01-01 + 0 | 200 | 200 | 200 | 1 | 10 | 1.0000000 | 1.0000000 | 1 | 1.0000000 | 10.0000000 | 40.0000000 | 1.0000000 | 1401-03-01 + 0 | 200 | 200 | 200 | 1 | 40 | 1.0000000 | 3.0000000 | 3 | 3.0000000 | 30.0000000 | 40.0000000 | 1.0000000 | 1401-04-01 + 0 | 100 | 100 | 100 | 1 | 20 | 1.0000000 | 2.0000000 | 1 | 2.0000000 | 10.0000000 | 50.0000000 | 1.0000000 | 1401-05-01 + 0 | 300 | 300 | 300 | 1 | 30 | 1.0000000 | 3.0000000 | 1 | 3.0000000 | 10.0000000 | 50.0000000 | 1.0000000 | 1401-05-02 + 0 | 400 | 400 | 400 | 1 | 50 | .9999383 | 5.0000000 | 1 | 5.0000000 | 10.0000000 | 50.0000000 | 2.0000000 | 1401-06-01 + 0 | 400 | 400 | 400 | 1 | 50 | .9998934 | 2.0000000 | 2 | 2.0000000 | 40.0000000 | 50.0000000 | 1.0000000 | 1401-06-01 + 5 | 500 | 500 | 500 | 12 | 30 | .9998593 | 3.0000000 | 1 | 3.0000000 | 10.0000000 | 50.0000000 | 3.0000000 | 1401-06-01 + 5 | 500 | 500 | 500 | 12 | 30 | .9998515 | 1.0000000 | 3 | 1.0000000 | 30.0000000 | 50.0000000 | 1.0000000 | 1401-06-01 + 5 | 600 | 600 | 600 | 12 | 30 | .9998453 | 1.0000000 | 3 | 1.0000000 | 30.0000000 | 50.0000000 | 2.0000000 | 1401-06-01 + 1 | 700 | 700 | 700 | 1 | 40 | .9998453 | 1.0000000 | 4 | 1.0000000 | 40.0000000 | 50.0000000 | 2.0000000 | 1401-06-01 + 1 | 800 | 800 | 800 | 1 | 40 | .9998453 | 1.0000000 | 4 | 1.0000000 | 40.0000000 | 50.0000000 | 1.0000000 | 1401-06-01 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty*ow_sale.vn),floor(ow_sale.cn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.vn desc rows between unbounded preceding and unbounded following ); -- mvd 1,3->2; + cn | to_char | vn +----+-------------------+---- + 2 | .0000000 | 40 + 1 | .0000000 | 10 + 3 | .0000000 | 40 + 1 | .0000000 | 20 + 1 | .0000000 | 30 + 1 | .0000000 | 50 + 2 | .0000000 | 50 + 1 | .0000000 | 30 + 3 | .0000000 | 30 + 3 | .0000000 | 30 + 4 | .0000000 | 40 + 4 | .0000000 | 40 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc,ow_sale.pn desc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.cn desc); -- mvd 4,1->3; 1->5; 7->6; + pn | dt | to_char | vn | to_char | to_char | cn +-----+------------+-------------------+----+-------------------+-------------------+---- + 700 | 1401-06-01 | .0253991 | 40 | 2.0000000 | .1666667 | 4 + 800 | 1401-06-01 | .0253991 | 40 | 1.0000000 | .1666667 | 4 + 200 | 1401-04-01 | .0253991 | 40 | 9.0000000 | .4166667 | 3 + 600 | 1401-06-01 | .0253991 | 30 | 3.0000000 | .4166667 | 3 + 500 | 1401-06-01 | .0253991 | 30 | 4.0000000 | .4166667 | 3 + 100 | 1401-01-01 | .0253991 | 40 | 11.0000000 | .5833333 | 2 + 400 | 1401-06-01 | .0253991 | 50 | 6.0000000 | .5833333 | 2 + 100 | 1401-05-01 | .0253991 | 20 | 11.0000000 | 1.0000000 | 1 + 500 | 1401-06-01 | .0253991 | 30 | 4.0000000 | 1.0000000 | 1 + 400 | 1401-06-01 | .0253991 | 50 | 6.0000000 | 1.0000000 | 1 + 300 | 1401-05-02 | .0253991 | 30 | 8.0000000 | 1.0000000 | 1 + 200 | 1401-03-01 | .0253991 | 10 | 9.0000000 | 1.0000000 | 1 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between 7 preceding and floor(ow_sale.prc) preceding ); -- mvd 2->5; + cn | vn | pn | qty | to_char +----+----+-----+------+------------------- + 2 | 40 | 100 | 1100 | .0000000 + 1 | 10 | 200 | 1 | 1.0000000 + 3 | 40 | 200 | 1 | .2500000 + 1 | 20 | 100 | 1 | .0370370 + 1 | 30 | 300 | 1 | .0021008 + 1 | 50 | 400 | 1 | .1984991 + 2 | 50 | 400 | 1 | .3383885 + 1 | 30 | 500 | 12 | .2500000 + 3 | 30 | 500 | 12 | .0357143 + 3 | 30 | 600 | 12 | .2500000 + 4 | 40 | 700 | 1 | .0729167 + 4 | 40 | 800 | 1 | .0280471 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between 4 preceding and 0 preceding ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.cn asc); -- mvd 4->3; 6->5; 6->7; 6->8; 6->9; + pn | qty | to_char | vn | to_char | cn | to_char | to_char | to_char +-----+------+-------------------+----+-------------------+----+-------------------+-------------------+------------------- + 800 | 1 | .8284314 | 40 | .0000000 | 4 | .9090909 | 1.0000000 | .0000000 + 700 | 1 | .0294471 | 40 | .0000000 | 4 | .9090909 | 1.0000000 | .0000000 + 200 | 1 | 1.0000000 | 40 | .1818182 | 3 | .6363636 | 3.0000000 | .1818182 + 600 | 12 | .7619048 | 30 | .1818182 | 3 | .6363636 | 3.0000000 | .1818182 + 500 | 12 | .7619048 | 30 | .1818182 | 3 | .6363636 | 3.0000000 | .1818182 + 400 | 1 | .0000000 | 50 | .4545455 | 2 | .4545455 | 6.0000000 | .4545455 + 100 | 1100 | .0000000 | 40 | .4545455 | 2 | .4545455 | 6.0000000 | .4545455 + 400 | 1 | .0000000 | 50 | .6363636 | 1 | .0000000 | 8.0000000 | .6363636 + 300 | 1 | .2857143 | 30 | .6363636 | 1 | .0000000 | 8.0000000 | .6363636 + 100 | 1 | .3333333 | 20 | .6363636 | 1 | .0000000 | 8.0000000 | .6363636 + 500 | 12 | .3478261 | 30 | .6363636 | 1 | .0000000 | 8.0000000 | .6363636 + 200 | 1 | 1.0000000 | 10 | .6363636 | 1 | .0000000 | 8.0000000 | .6363636 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc*ow_sale.cn),floor(ow_sale.qty*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.qty+ow_sale.qty) preceding and current row ); -- mvd 7->6; + prc | pn | pn | dt | prc | to_char | vn +------+-----+-----+------------+------+-------------------+---- + 2400 | 100 | 100 | 1401-01-01 | 2400 | .0000000 | 40 + 0 | 200 | 200 | 1401-03-01 | 0 | 1.0000000 | 10 + 0 | 200 | 200 | 1401-04-01 | 0 | 1.0000000 | 40 + 0 | 100 | 100 | 1401-05-01 | 0 | .0000000 | 20 + 0 | 300 | 300 | 1401-05-02 | 0 | .0000000 | 30 + 0 | 400 | 400 | 1401-06-01 | 0 | .0000000 | 50 + 0 | 400 | 400 | 1401-06-01 | 0 | .0000000 | 50 + 5 | 500 | 500 | 1401-06-01 | 5 | .9999990 | 30 + 5 | 500 | 500 | 1401-06-01 | 5 | .9999904 | 30 + 5 | 600 | 600 | 1401-06-01 | 5 | .9999839 | 30 + 1 | 700 | 700 | 1401-06-01 | 1 | 1.0000000 | 40 + 1 | 800 | 800 | 1401-06-01 | 1 | 1.0000000 | 40 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 1 preceding and 1 following ); -- mvd 3->2; + vn | to_char | cn +----+-------------------+---- + 40 | 1.0000000 | 2 + 10 | .0000000 | 1 + 40 | .0000000 | 3 + 20 | .0000000 | 1 + 30 | .0000000 | 1 + 50 | .0000000 | 1 + 50 | .2500000 | 2 + 30 | .0000000 | 1 + 30 | .0000000 | 3 + 30 | 1.0000000 | 3 + 40 | 1.0000000 | 4 + 40 | .0000000 | 4 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn-ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win5),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between 3 preceding and floor(ow_sale.vn) following ), +win2 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.pn desc), +win3 as (order by ow_sale.pn desc), +win4 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.prc order by ow_sale.pn desc), +win5 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 1,6->5; 3,4->7; 4->8; 10,1,3,4->9; 4->11; 1,3,6,13,4->12; + cn | cn | dt | pn | to_char | vn | to_char | to_char | to_char | prc | to_char | to_char | qty +----+----+------------+-----+-------------------+----+-------------------+-------------------+-------------------+------+-------------------+-------------------+------ + 4 | 4 | 1401-06-01 | 800 | 1.0000000 | 40 | 1.0000000 | 1.0000000 | .5000000 | 1 | .0000000 | .0000000 | 1 + 4 | 4 | 1401-06-01 | 700 | .9863388 | 40 | 2.0000000 | 2.0000000 | 1.0000000 | 1 | .0909091 | .0000000 | 1 + 3 | 3 | 1401-06-01 | 600 | .9759036 | 30 | 3.0000000 | 3.0000000 | .5000000 | 5 | .1818182 | .0000000 | 12 + 1 | 1 | 1401-06-01 | 500 | .9508627 | 30 | 4.0000000 | 4.0000000 | 1.0000000 | 5 | .2727273 | -497.0000000 | 12 + 3 | 3 | 1401-06-01 | 500 | .9595603 | 30 | 4.0000000 | 4.0000000 | 1.0000000 | 5 | .2727273 | .0000000 | 12 + 2 | 2 | 1401-06-01 | 400 | .9456132 | 50 | 6.0000000 | 6.0000000 | 1.0000000 | 0 | .4545455 | .0000000 | 1 + 1 | 1 | 1401-06-01 | 400 | .9470104 | 50 | 6.0000000 | 6.0000000 | 1.0000000 | 0 | .4545455 | -398.0000000 | 1 + 1 | 1 | 1401-05-02 | 300 | .9423606 | 30 | 1.0000000 | 8.0000000 | 1.0000000 | 0 | .6363636 | .0000000 | 1 + 3 | 3 | 1401-04-01 | 200 | .9999858 | 40 | 1.0000000 | 9.0000000 | 1.0000000 | 0 | .7272727 | .0000000 | 1 + 1 | 1 | 1401-03-01 | 200 | .9999858 | 10 | 1.0000000 | 9.0000000 | 1.0000000 | 0 | .7272727 | .0000000 | 1 + 2 | 2 | 1401-01-01 | 100 | .9999858 | 40 | 1.0000000 | 11.0000000 | 1.0000000 | 2400 | .9090909 | .0000000 | 1100 + 1 | 1 | 1401-05-01 | 100 | .9999858 | 20 | 1.0000000 | 11.0000000 | 1.0000000 | 0 | .9090909 | .0000000 | 1 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows between current row and current row ); -- mvd 4,2->3; + prc | pn | to_char | vn +------+-----+-------------------+---- + 2400 | 100 | .0000000 | 40 + 0 | 200 | .0000000 | 10 + 0 | 200 | .0000000 | 40 + 0 | 100 | .0000000 | 20 + 0 | 300 | .0000000 | 30 + 0 | 400 | .0000000 | 50 + 0 | 400 | .0000000 | 50 + 5 | 500 | .0000000 | 30 + 5 | 500 | .0000000 | 30 + 5 | 600 | .0000000 | 30 + 1 | 700 | .0000000 | 40 + 1 | 800 | .0000000 | 40 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn/ow_sale.vn),floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows between current row and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows between current row and current row ); -- mvd 6,4->5; 6,4->7; + qty | prc | pn | vn | to_char | cn | to_char +------+------+-----+----+-------------------+----+------------------- + 1100 | 2400 | 100 | 40 | .0000000 | 2 | -98.0000000 + 1 | 0 | 200 | 10 | .0000000 | 1 | -199.0000000 + 1 | 0 | 200 | 40 | .0000000 | 3 | -197.0000000 + 1 | 0 | 100 | 20 | .0000000 | 1 | -99.0000000 + 1 | 0 | 300 | 30 | .0000000 | 1 | -299.0000000 + 1 | 0 | 400 | 50 | .0000000 | 1 | -399.0000000 + 1 | 0 | 400 | 50 | .0000000 | 2 | -398.0000000 + 12 | 5 | 500 | 30 | .0000000 | 1 | -499.0000000 + 12 | 5 | 500 | 30 | .0000000 | 3 | -497.0000000 + 12 | 5 | 600 | 30 | .0000000 | 3 | -597.0000000 + 1 | 1 | 700 | 40 | .0000000 | 4 | -696.0000000 + 1 | 1 | 800 | 40 | .0000000 | 4 | -796.0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc rows between current row and floor(ow_sale.cn) following ); -- mvd 6->5; + cn | cn | qty | cn | to_char | vn +----+----+------+----+-------------------+---- + 2 | 2 | 1100 | 2 | .0000000 | 40 + 1 | 1 | 1 | 1 | .0000000 | 10 + 3 | 3 | 1 | 3 | .0000000 | 40 + 1 | 1 | 1 | 1 | .0000000 | 20 + 1 | 1 | 1 | 1 | .0000000 | 30 + 1 | 1 | 1 | 1 | .0000000 | 50 + 2 | 2 | 1 | 2 | .0000000 | 50 + 1 | 1 | 12 | 1 | .0000000 | 30 + 3 | 3 | 12 | 3 | .0000000 | 30 + 3 | 3 | 12 | 3 | .0000000 | 30 + 4 | 4 | 1 | 4 | .0000000 | 40 + 4 | 4 | 1 | 4 | .0000000 | 40 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn-ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.pn)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.prc,ow_sale.dt order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between current row and floor(ow_sale.cn*ow_sale.pn) following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc), +win4 as (partition by ow_sale.prc,ow_sale.dt order by ow_sale.pn asc); -- mvd 1->6; 3->7; 9,1,10->8; 9,1,10->11; 9,2,10->12; 9,2,10->13; + cn | dt | vn | cn | vn | to_char | to_char | to_char | prc | pn | to_char | to_char | to_char +----+------------+----+----+----+-------------------+-------------------+-------------------+------+-----+-------------------+-------------------+------------------- + 1 | 1401-03-01 | 10 | 1 | 10 | .1698113 | 1.0000000 | 9.0000000 | 0 | 200 | 1.0000000 | 1.0000000 | .0000000 + 1 | 1401-05-01 | 20 | 1 | 20 | .1277449 | 2.0000000 | 19.0000000 | 0 | 100 | 1.0000000 | 1.0000000 | .0000000 + 3 | 1401-06-01 | 30 | 3 | 30 | .8000000 | 3.0000000 | .0000000 | 5 | 500 | 1.0000000 | 1.0000000 | .0000000 + 1 | 1401-06-01 | 30 | 1 | 30 | .8284314 | 3.0000000 | .0000000 | 5 | 500 | 1.0000000 | 1.0000000 | .0000000 + 1 | 1401-05-02 | 30 | 1 | 30 | .0023310 | 3.0000000 | 29.0000000 | 0 | 300 | 1.0000000 | 1.0000000 | .0000000 + 3 | 1401-06-01 | 30 | 3 | 30 | .7500000 | 3.0000000 | .0000000 | 5 | 600 | 1.0000000 | 3.0000000 | 1.0000000 + 2 | 1401-01-01 | 40 | 2 | 40 | .0936236 | 4.0000000 | .0000000 | 2400 | 100 | 1.0000000 | 1.0000000 | .0000000 + 3 | 1401-04-01 | 40 | 3 | 40 | .0700280 | 4.0000000 | 39.0000000 | 0 | 200 | 1.0000000 | 1.0000000 | .0000000 + 4 | 1401-06-01 | 40 | 4 | 40 | 1.0000000 | 4.0000000 | .0000000 | 1 | 700 | 1.0000000 | 1.0000000 | .0000000 + 4 | 1401-06-01 | 40 | 4 | 40 | .0000000 | 4.0000000 | .0000000 | 1 | 800 | 1.0000000 | 2.0000000 | 1.0000000 + 2 | 1401-06-01 | 50 | 2 | 50 | .0030769 | 5.0000000 | 49.0000000 | 0 | 400 | 1.0000000 | 1.0000000 | .0000000 + 1 | 1401-06-01 | 50 | 1 | 50 | .0885417 | 5.0000000 | 49.0000000 | 0 | 400 | 1.0000000 | 1.0000000 | .0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty+ow_sale.qty),floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between current row and unbounded following ); -- mvd 1->5; + vn | vn | prc | cn | to_char +----+----+------+----+------------------- + 40 | 40 | 2400 | 2 | .8928143 + 10 | 10 | 0 | 1 | .1017258 + 40 | 40 | 0 | 3 | .0750224 + 20 | 20 | 0 | 1 | .0432196 + 30 | 30 | 0 | 1 | .0030736 + 50 | 50 | 0 | 1 | .0172553 + 50 | 50 | 0 | 2 | .1276696 + 30 | 30 | 5 | 1 | .8230693 + 30 | 30 | 5 | 3 | .7934567 + 30 | 30 | 5 | 3 | .7397279 + 40 | 40 | 1 | 4 | 1.0000000 + 40 | 40 | 1 | 4 | .0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn-ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between current row and unbounded following ); -- mvd 5,8->7; 5,8->9; + qty | qty | pn | prc | cn | qty | to_char | vn | to_char +------+------+-----+------+----+------+-------------------+----+------------------- + 1100 | 1100 | 100 | 2400 | 2 | 1100 | .1692044 | 40 | 800.0000000 + 1 | 1 | 200 | 0 | 1 | 1 | .2051962 | 10 | 800.0000000 + 1 | 1 | 200 | 0 | 3 | 1 | .1680147 | 40 | 800.0000000 + 1 | 1 | 100 | 0 | 1 | 1 | .1192686 | 20 | 800.0000000 + 1 | 1 | 300 | 0 | 1 | 1 | .0416663 | 30 | 800.0000000 + 1 | 1 | 400 | 0 | 1 | 1 | .0001776 | 50 | 800.0000000 + 1 | 1 | 400 | 0 | 2 | 1 | .0548995 | 50 | 800.0000000 + 12 | 12 | 500 | 5 | 1 | 12 | .8278363 | 30 | 800.0000000 + 12 | 12 | 500 | 5 | 3 | 12 | .7983912 | 30 | 800.0000000 + 12 | 12 | 600 | 5 | 3 | 12 | .7474832 | 30 | 800.0000000 + 1 | 1 | 700 | 1 | 4 | 1 | .0000000 | 40 | 800.0000000 + 1 | 1 | 800 | 1 | 4 | 1 | .0000000 | 40 | 800.0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn+ow_sale.qty),floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 3 following and floor(ow_sale.cn) following ); -- mvd 1->2; + cn | to_char +----+------------------- + 2 | .0000000 + 1 | .0000000 + 3 | .0000000 + 1 | .0000000 + 1 | .0000000 + 1 | .0000000 + 2 | .0000000 + 1 | .0000000 + 3 | .0000000 + 3 | .0000000 + 4 | .0000000 + 4 | .0000000 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn+ow_sale.prc),floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows between floor(ow_sale.vn) following and floor(ow_sale.qty/ow_sale.qty) following ), +win2 as (order by ow_sale.pn desc); -- mvd 6,7->5; 7->8; + cn | dt | prc | qty | to_char | vn | pn | to_char +----+------------+------+------+-------------------+----+-----+------------------- + 4 | 1401-06-01 | 1 | 1 | .0000000 | 40 | 800 | .0000000 + 4 | 1401-06-01 | 1 | 1 | .0000000 | 40 | 700 | .0909091 + 3 | 1401-06-01 | 5 | 12 | .0000000 | 30 | 600 | .1818182 + 1 | 1401-06-01 | 5 | 12 | .0000000 | 30 | 500 | .2727273 + 3 | 1401-06-01 | 5 | 12 | .0000000 | 30 | 500 | .2727273 + 2 | 1401-06-01 | 0 | 1 | .0000000 | 50 | 400 | .4545455 + 1 | 1401-06-01 | 0 | 1 | .0000000 | 50 | 400 | .4545455 + 1 | 1401-05-02 | 0 | 1 | .0000000 | 30 | 300 | .6363636 + 3 | 1401-04-01 | 0 | 1 | .0000000 | 40 | 200 | .7272727 + 1 | 1401-03-01 | 0 | 1 | .0000000 | 10 | 200 | .7272727 + 2 | 1401-01-01 | 2400 | 1100 | .0000000 | 40 | 100 | .9090909 + 1 | 1401-05-01 | 0 | 1 | .0000000 | 20 | 100 | .9090909 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn desc rows between 9 following and unbounded following ); -- mvd 5,6->4; + dt | dt | vn | to_char | cn | pn +------------+------------+----+-------------------+----+----- + 1401-01-01 | 1401-01-01 | 40 | .7500000 | 2 | 100 + 1401-03-01 | 1401-03-01 | 10 | .0000000 | 1 | 200 + 1401-04-01 | 1401-04-01 | 40 | .0000000 | 3 | 200 + 1401-05-01 | 1401-05-01 | 20 | .0000000 | 1 | 100 + 1401-05-02 | 1401-05-02 | 30 | .0000000 | 1 | 300 + 1401-06-01 | 1401-06-01 | 50 | .0000000 | 1 | 400 + 1401-06-01 | 1401-06-01 | 50 | .0000000 | 2 | 400 + 1401-06-01 | 1401-06-01 | 30 | .0000000 | 1 | 500 + 1401-06-01 | 1401-06-01 | 30 | .0000000 | 3 | 500 + 1401-06-01 | 1401-06-01 | 30 | .0000000 | 3 | 600 + 1401-06-01 | 1401-06-01 | 40 | .0000000 | 4 | 700 + 1401-06-01 | 1401-06-01 | 40 | .0000000 | 4 | 800 +(12 rows) + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty-ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc,ow_sale.vn asc rows between floor(ow_sale.prc) following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc,ow_sale.vn asc rows between floor(ow_sale.prc) following and unbounded following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc); -- mvd 8,1->7; 8->9; 8,1->10; 12,8,3,1->11; 12,8,3,1->13; + pn | cn | qty | cn | pn | prc | to_char | vn | to_char | to_char | to_char | dt | to_char +-----+----+------+----+-----+------+-------------------+----+-------------------+-------------------+-------------------+------------+------------------- + 200 | 1 | 1 | 1 | 200 | 0 | .1869086 | 10 | .0000000 | 50.0000000 | .0000000 | 1401-03-01 | 1.0000000 + 100 | 1 | 1 | 1 | 100 | 0 | .1028616 | 20 | .0909091 | 50.0000000 | .0000000 | 1401-05-01 | 1.0000000 + 500 | 3 | 12 | 3 | 500 | 5 | .0000000 | 30 | .1818182 | .0000000 | .0000000 | 1401-06-01 | 2.0000000 + 500 | 1 | 12 | 1 | 500 | 5 | .0000000 | 30 | .1818182 | .0000000 | .0000000 | 1401-06-01 | 1.0000000 + 300 | 1 | 1 | 1 | 300 | 0 | .0289692 | 30 | .1818182 | 50.0000000 | .0000000 | 1401-05-02 | 1.0000000 + 600 | 3 | 12 | 3 | 600 | 5 | .0000000 | 30 | .1818182 | .0000000 | .0000000 | 1401-06-01 | 1.0000000 + 100 | 2 | 1100 | 2 | 100 | 2400 | .0000000 | 40 | .5454545 | .0000000 | .0000000 | 1401-01-01 | 1.0000000 + 200 | 3 | 1 | 3 | 200 | 0 | .1501438 | 40 | .5454545 | 50.0000000 | .0000000 | 1401-04-01 | 1.0000000 + 700 | 4 | 1 | 4 | 700 | 1 | .0000000 | 40 | .5454545 | 40.0000000 | .0000000 | 1401-06-01 | 1.0000000 + 800 | 4 | 1 | 4 | 800 | 1 | .0000000 | 40 | .5454545 | .0000000 | .0000000 | 1401-06-01 | 1.0000000 + 400 | 2 | 1 | 2 | 400 | 0 | .0739166 | 50 | .9090909 | 50.0000000 | .0000000 | 1401-06-01 | 2.0000000 + 400 | 1 | 1 | 1 | 400 | 0 | .0006385 | 50 | .9090909 | 50.0000000 | .0000000 | 1401-06-01 | 1.0000000 +(12 rows) + +-- REGR_R2() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn-ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc,ow_sale.cn desc,ow_sale.cn asc); -- mvd 3,4,5->2; + pn | to_char | cn | dt | vn +-----+-------------------+----+------------+---- + 200 | .0000000 | 1 | 1401-03-01 | 10 + 300 | .0000000 | 1 | 1401-05-02 | 30 + 500 | .0000000 | 1 | 1401-06-01 | 30 + 500 | .9996940 | 3 | 1401-06-01 | 30 + 600 | .9996940 | 3 | 1401-06-01 | 30 + 700 | 1.0000000 | 4 | 1401-06-01 | 40 + 800 | 1.0000000 | 4 | 1401-06-01 | 40 + 400 | .0000000 | 1 | 1401-06-01 | 50 + 400 | .0000000 | 2 | 1401-06-01 | 50 + 100 | .0000000 | 1 | 1401-05-01 | 20 + 100 | .0000000 | 2 | 1401-01-01 | 40 + 200 | .0000000 | 3 | 1401-04-01 | 40 +(12 rows) + +-- REGR_R2() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty*ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(partition by ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc); -- mvd 4,5,6,2->3; 4,5,6,2->7; 4,5,6,2->8; + prc | pn | to_char | cn | dt | qty | to_char | to_char +------+-----+-------------------+----+------------+------+-------------------+------------------- + 0 | 200 | .0000000 | 1 | 1401-03-01 | 1 | .0000000 | 1.0000000 + 0 | 400 | .0000000 | 2 | 1401-06-01 | 1 | .0000000 | 1.0000000 + 1 | 800 | .0000000 | 4 | 1401-06-01 | 1 | .0000000 | 1.0000000 + 5 | 500 | .0000000 | 1 | 1401-06-01 | 12 | .0000000 | 1.0000000 + 5 | 500 | .0000000 | 3 | 1401-06-01 | 12 | .0000000 | 1.0000000 + 0 | 100 | .0000000 | 1 | 1401-05-01 | 1 | .0000000 | 1.0000000 + 0 | 200 | .0000000 | 3 | 1401-04-01 | 1 | .0000000 | 1.0000000 + 0 | 300 | .0000000 | 1 | 1401-05-02 | 1 | .0000000 | 1.0000000 + 0 | 400 | .0000000 | 1 | 1401-06-01 | 1 | .0000000 | 1.0000000 + 1 | 700 | .0000000 | 4 | 1401-06-01 | 1 | .0000000 | 1.0000000 + 5 | 600 | .0000000 | 3 | 1401-06-01 | 12 | .0000000 | 1.0000000 + 2400 | 100 | .0000000 | 2 | 1401-01-01 | 1100 | .0000000 | 1.0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn*ow_sale.pn),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn asc range unbounded preceding ); -- mvd 1,5->4; + cn | cn | dt | to_char | pn +----+----+------------+-------------------+----- + 1 | 1 | 1401-05-02 | .0000000 | 300 + 1 | 1 | 1401-06-01 | .0000000 | 400 + 2 | 2 | 1401-06-01 | .0000000 | 400 + 1 | 1 | 1401-06-01 | .0000000 | 500 + 3 | 3 | 1401-06-01 | .0000000 | 500 + 4 | 4 | 1401-06-01 | .0000000 | 800 + 1 | 1 | 1401-05-01 | .0000000 | 100 + 2 | 2 | 1401-01-01 | .0000000 | 100 + 1 | 1 | 1401-03-01 | .0000000 | 200 + 3 | 3 | 1401-04-01 | .0000000 | 200 + 3 | 3 | 1401-06-01 | .0000000 | 600 + 4 | 4 | 1401-06-01 | .0000000 | 700 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(partition by ow_sale.qty order by ow_sale.pn asc range unbounded preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.pn asc range unbounded preceding ); -- mvd 7,5->6; 7,5->8; + cn | dt | dt | cn | pn | to_char | qty | to_char +----+------------+------------+----+-----+-------------------+------+------------------- + 1 | 1401-05-01 | 1401-05-01 | 1 | 100 | .0000000 | 1 | 1.0000000 + 3 | 1401-04-01 | 1401-04-01 | 3 | 200 | .0000000 | 1 | 3.0000000 + 1 | 1401-03-01 | 1401-03-01 | 1 | 200 | .0000000 | 1 | 3.0000000 + 1 | 1401-05-02 | 1401-05-02 | 1 | 300 | .0000000 | 1 | 4.0000000 + 2 | 1401-06-01 | 1401-06-01 | 2 | 400 | .0000000 | 1 | 6.0000000 + 1 | 1401-06-01 | 1401-06-01 | 1 | 400 | .0000000 | 1 | 6.0000000 + 4 | 1401-06-01 | 1401-06-01 | 4 | 700 | .0000000 | 1 | 7.0000000 + 4 | 1401-06-01 | 1401-06-01 | 4 | 800 | .0000000 | 1 | 8.0000000 + 1 | 1401-06-01 | 1401-06-01 | 1 | 500 | .0000000 | 12 | 2.0000000 + 3 | 1401-06-01 | 1401-06-01 | 3 | 500 | .0000000 | 12 | 2.0000000 + 3 | 1401-06-01 | 1401-06-01 | 3 | 600 | .0000000 | 12 | 3.0000000 + 2 | 1401-01-01 | 1401-01-01 | 2 | 100 | .0000000 | 1100 | 1.0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.pn asc range 0 preceding ); -- mvd 6,1->5; + pn | prc | qty | prc | to_char | dt +-----+------+------+------+-------------------+------------ + 200 | 0 | 1 | 0 | .0000000 | 1401-03-01 + 300 | 0 | 1 | 0 | .0000000 | 1401-05-02 + 400 | 0 | 1 | 0 | .0000000 | 1401-06-01 + 400 | 0 | 1 | 0 | .0000000 | 1401-06-01 + 500 | 5 | 12 | 5 | .0000000 | 1401-06-01 + 500 | 5 | 12 | 5 | .0000000 | 1401-06-01 + 600 | 5 | 12 | 5 | .0000000 | 1401-06-01 + 700 | 1 | 1 | 1 | .0000000 | 1401-06-01 + 800 | 1 | 1 | 1 | .0000000 | 1401-06-01 + 100 | 2400 | 1100 | 2400 | .0000000 | 1401-01-01 + 200 | 0 | 1 | 0 | .0000000 | 1401-04-01 + 100 | 0 | 1 | 0 | .0000000 | 1401-05-01 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc),floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc range 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty/ow_sale.qty)) OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc range 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc range 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc range 2 preceding ); -- mvd 7,8,3->6; 7,8,3->9; 7,8,3->10; 7,8,3->11; 7,8,3->12; + pn | qty | vn | pn | qty | to_char | cn | dt | to_char | to_char | to_char | to_char +-----+------+----+-----+------+-------------------+----+------------+-------------------+-------------------+-------------------+------------------- + 200 | 1 | 40 | 200 | 1 | .0000000 | 3 | 1401-04-01 | 200.0000000 | 1.0000000 | 200.0000000 | 3.0000000 + 100 | 1 | 20 | 100 | 1 | .0000000 | 1 | 1401-05-01 | 100.0000000 | 1.0000000 | 100.0000000 | 1.0000000 + 400 | 1 | 50 | 400 | 1 | .0000000 | 2 | 1401-06-01 | 400.0000000 | 1.0000000 | 400.0000000 | 2.0000000 + 700 | 1 | 40 | 700 | 1 | .0000000 | 4 | 1401-06-01 | 700.0000000 | 2.0000000 | 700.0000000 | 5.0000000 + 800 | 1 | 40 | 800 | 1 | .0000000 | 4 | 1401-06-01 | 700.0000000 | 2.0000000 | 700.0000000 | 5.0000000 + 100 | 1100 | 40 | 100 | 1100 | .0000000 | 2 | 1401-01-01 | 100.0000000 | 1.0000000 | 100.0000000 | 2402.0000000 + 200 | 1 | 10 | 200 | 1 | .0000000 | 1 | 1401-03-01 | 200.0000000 | 1.0000000 | 200.0000000 | 1.0000000 + 300 | 1 | 30 | 300 | 1 | .0000000 | 1 | 1401-05-02 | 300.0000000 | 1.0000000 | 300.0000000 | 1.0000000 + 500 | 12 | 30 | 500 | 12 | .0000000 | 1 | 1401-06-01 | 500.0000000 | 1.0000000 | 500.0000000 | 6.0000000 + 400 | 1 | 50 | 400 | 1 | .0000000 | 1 | 1401-06-01 | 400.0000000 | 1.0000000 | 400.0000000 | 1.0000000 + 500 | 12 | 30 | 500 | 12 | .0000000 | 3 | 1401-06-01 | 500.0000000 | 2.0000000 | 500.0000000 | 8.0000000 + 600 | 12 | 30 | 600 | 12 | .0000000 | 3 | 1401-06-01 | 500.0000000 | 2.0000000 | 500.0000000 | 8.0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.cn desc range current row ); -- mvd 4->3; + qty | pn | to_char | cn +------+-----+-------------------+---- + 1 | 400 | 1.0000000 | 1 + 1 | 100 | 1.0000000 | 1 + 1 | 300 | 1.0000000 | 1 + 12 | 500 | 1.0000000 | 1 + 1 | 200 | 1.0000000 | 1 + 12 | 600 | 1.0000000 | 3 + 1 | 200 | 1.0000000 | 3 + 12 | 500 | 1.0000000 | 3 + 1 | 400 | 1.0000000 | 2 + 1100 | 100 | 1.0000000 | 2 + 1 | 800 | .0000000 | 4 + 1 | 700 | .0000000 | 4 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.cn desc range current row ), +win2 as (order by ow_sale.pn asc); -- mvd 5,3,2,6->4; 6->7; 5,3,2,6->8; + qty | vn | cn | to_char | dt | pn | to_char | to_char +------+----+----+-------------------+------------+-----+-------------------+------------------- + 1 | 20 | 1 | .0000000 | 1401-05-01 | 100 | .0000000 | 40.0000000 + 1100 | 40 | 2 | .0000000 | 1401-01-01 | 100 | .0000000 | 80.0000000 + 1 | 10 | 1 | .0000000 | 1401-03-01 | 200 | .1818182 | 20.0000000 + 1 | 40 | 3 | .0000000 | 1401-04-01 | 200 | .1818182 | 80.0000000 + 1 | 30 | 1 | .0000000 | 1401-05-02 | 300 | .3636364 | 60.0000000 + 1 | 50 | 1 | .0000000 | 1401-06-01 | 400 | .4545455 | 100.0000000 + 1 | 50 | 2 | .0000000 | 1401-06-01 | 400 | .4545455 | 100.0000000 + 12 | 30 | 1 | .0000000 | 1401-06-01 | 500 | .6363636 | 60.0000000 + 12 | 30 | 3 | .0000000 | 1401-06-01 | 500 | .6363636 | 60.0000000 + 12 | 30 | 3 | .0000000 | 1401-06-01 | 600 | .8181818 | 60.0000000 + 1 | 40 | 4 | .0000000 | 1401-06-01 | 700 | .9090909 | 80.0000000 + 1 | 40 | 4 | .0000000 | 1401-06-01 | 800 | 1.0000000 | 80.0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn+ow_sale.qty),floor(ow_sale.prc/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn) preceding ); -- mvd 1,5->4; + cn | vn | cn | to_char | qty +----+----+----+-------------------+------ + 2 | 50 | 2 | .0000000 | 1 + 4 | 40 | 4 | .0000000 | 1 + 4 | 40 | 4 | .0000000 | 1 + 1 | 30 | 1 | .0000000 | 12 + 3 | 30 | 3 | .0000000 | 12 + 3 | 30 | 3 | .0000000 | 12 + 1 | 10 | 1 | .0000000 | 1 + 1 | 20 | 1 | .0000000 | 1 + 1 | 30 | 1 | .0000000 | 1 + 1 | 50 | 1 | .0000000 | 1 + 3 | 40 | 3 | .0000000 | 1 + 2 | 40 | 2 | .0000000 | 1100 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 1,7,5,4->6; + cn | cn | cn | pn | vn | to_char | dt +----+----+----+-----+----+-------------------+------------ + 1 | 1 | 1 | 200 | 10 | .0000000 | 1401-03-01 + 3 | 3 | 3 | 600 | 30 | .0000000 | 1401-06-01 + 4 | 4 | 4 | 700 | 40 | .0000000 | 1401-06-01 + 2 | 2 | 2 | 100 | 40 | .0000000 | 1401-01-01 + 3 | 3 | 3 | 200 | 40 | .0000000 | 1401-04-01 + 1 | 1 | 1 | 100 | 20 | .0000000 | 1401-05-01 + 1 | 1 | 1 | 300 | 30 | .0000000 | 1401-05-02 + 2 | 2 | 2 | 400 | 50 | .0000000 | 1401-06-01 + 1 | 1 | 1 | 400 | 50 | .0000000 | 1401-06-01 + 3 | 3 | 3 | 500 | 30 | .0000000 | 1401-06-01 + 1 | 1 | 1 | 500 | 30 | .0000000 | 1401-06-01 + 4 | 4 | 4 | 800 | 40 | .0000000 | 1401-06-01 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn-ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.qty,ow_sale.prc,ow_sale.prc order by ow_sale.vn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn/ow_sale.qty)) OVER(partition by ow_sale.qty,ow_sale.prc,ow_sale.prc order by ow_sale.vn asc range between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.prc order by ow_sale.vn asc range between unbounded preceding and current row ); -- mvd 7,8,4->6; 7,8,4->9; 7,8,4->10; + pn | dt | cn | qty | cn | to_char | prc | vn | to_char | to_char +-----+------------+----+------+----+-------------------+------+----+-------------------+------------------- + 200 | 1401-03-01 | 1 | 1 | 1 | .0000000 | 0 | 10 | 200.0000000 | 10.0000000 + 100 | 1401-05-01 | 1 | 1 | 1 | 1.0000000 | 0 | 20 | 200.0000000 | 10.0000000 + 300 | 1401-05-02 | 1 | 1 | 1 | 1.0000000 | 0 | 30 | 300.0000000 | 10.0000000 + 200 | 1401-04-01 | 3 | 1 | 3 | 1.0000000 | 0 | 40 | 300.0000000 | 10.0000000 + 400 | 1401-06-01 | 2 | 1 | 2 | 1.0000000 | 0 | 50 | 400.0000000 | 10.0000000 + 400 | 1401-06-01 | 1 | 1 | 1 | 1.0000000 | 0 | 50 | 400.0000000 | 10.0000000 + 800 | 1401-06-01 | 4 | 1 | 4 | .0000000 | 1 | 40 | 800.0000000 | 40.0000000 + 700 | 1401-06-01 | 4 | 1 | 4 | .0000000 | 1 | 40 | 800.0000000 | 40.0000000 + 600 | 1401-06-01 | 3 | 12 | 3 | .0000000 | 5 | 30 | 600.0000000 | 2.0000000 + 500 | 1401-06-01 | 1 | 12 | 1 | .0000000 | 5 | 30 | 600.0000000 | 2.0000000 + 500 | 1401-06-01 | 3 | 12 | 3 | .0000000 | 5 | 30 | 600.0000000 | 2.0000000 + 100 | 1401-01-01 | 2 | 1100 | 2 | .0000000 | 2400 | 40 | 100.0000000 | .0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty/ow_sale.pn),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.pn asc range between unbounded preceding and floor(ow_sale.pn-ow_sale.vn) following ); -- mvd 1,6->5; + vn | vn | vn | prc | to_char | pn +----+----+----+------+-------------------+----- + 30 | 30 | 30 | 0 | .0000000 | 300 + 50 | 50 | 50 | 0 | 1.0000000 | 400 + 50 | 50 | 50 | 0 | 1.0000000 | 400 + 30 | 30 | 30 | 5 | 1.0000000 | 500 + 30 | 30 | 30 | 5 | 1.0000000 | 500 + 40 | 40 | 40 | 1 | .0000000 | 800 + 20 | 20 | 20 | 0 | .0000000 | 100 + 40 | 40 | 40 | 2400 | .0000000 | 100 + 10 | 10 | 10 | 0 | .0000000 | 200 + 40 | 40 | 40 | 0 | .0000000 | 200 + 30 | 30 | 30 | 5 | .0000000 | 600 + 40 | 40 | 40 | 1 | .0000000 | 700 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc+ow_sale.qty),floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.cn*ow_sale.cn) following ), +win2 as (order by ow_sale.vn asc), +win3 as (order by ow_sale.vn asc); -- mvd 6,2,7,3->5; 7->8; 7->9; 7->10; + qty | cn | pn | pn | to_char | dt | vn | to_char | to_char | to_char +------+----+-----+-----+-------------------+------------+----+-------------------+-------------------+------------------- + 1 | 1 | 200 | 200 | .0000000 | 1401-03-01 | 10 | 1.0000000 | .0833333 | 1.0000000 + 1 | 1 | 100 | 100 | .0000000 | 1401-05-01 | 20 | 2.0000000 | .1666667 | 2.0000000 + 12 | 3 | 600 | 600 | .0000000 | 1401-06-01 | 30 | 3.0000000 | .5000000 | 3.0000000 + 1 | 1 | 300 | 300 | .0000000 | 1401-05-02 | 30 | 3.0000000 | .5000000 | 4.0000000 + 12 | 1 | 500 | 500 | .0000000 | 1401-06-01 | 30 | 3.0000000 | .5000000 | 5.0000000 + 12 | 3 | 500 | 500 | .0000000 | 1401-06-01 | 30 | 3.0000000 | .5000000 | 6.0000000 + 1100 | 2 | 100 | 100 | .0000000 | 1401-01-01 | 40 | 7.0000000 | .8333333 | 7.0000000 + 1 | 4 | 700 | 700 | .0000000 | 1401-06-01 | 40 | 7.0000000 | .8333333 | 8.0000000 + 1 | 3 | 200 | 200 | .0000000 | 1401-04-01 | 40 | 7.0000000 | .8333333 | 9.0000000 + 1 | 4 | 800 | 800 | .0000000 | 1401-06-01 | 40 | 7.0000000 | .8333333 | 10.0000000 + 1 | 2 | 400 | 400 | .0000000 | 1401-06-01 | 50 | 11.0000000 | 1.0000000 | 11.0000000 + 1 | 1 | 400 | 400 | .0000000 | 1401-06-01 | 50 | 11.0000000 | 1.0000000 | 12.0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc/ow_sale.vn),floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn*ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn/ow_sale.qty)) OVER(partition by ow_sale.dt order by ow_sale.vn desc range between unbounded preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.dt order by ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 4,5->3; 4,7,5,2->6; 4,7,5,2->8; 1,7,4->9; 4,5->10; + prc | pn | to_char | dt | vn | to_char | cn | to_char | to_char | to_char +------+-----+-------------------+------------+----+-------------------+----+-------------------+-------------------+------------------- + 0 | 200 | .0000000 | 1401-03-01 | 10 | .0000000 | 1 | 1.0000000 | .0000000 | 200.0000000 + 0 | 300 | .0000000 | 1401-05-02 | 30 | .0000000 | 1 | 1.0000000 | .0000000 | 300.0000000 + 0 | 400 | 1.0000000 | 1401-06-01 | 50 | .0000000 | 1 | 1.0000000 | .0000000 | 800.0000000 + 0 | 400 | 1.0000000 | 1401-06-01 | 50 | .0000000 | 2 | 1.0000000 | .0000000 | 800.0000000 + 1 | 800 | 1.0000000 | 1401-06-01 | 40 | 1.0000000 | 4 | 2.0000000 | .0000000 | 800.0000000 + 1 | 700 | 1.0000000 | 1401-06-01 | 40 | .0000000 | 4 | 1.0000000 | .0000000 | 800.0000000 + 5 | 500 | 1.0000000 | 1401-06-01 | 30 | .0000000 | 1 | 1.0000000 | .0000000 | 800.0000000 + 5 | 500 | 1.0000000 | 1401-06-01 | 30 | .0000000 | 3 | 1.0000000 | .0000000 | 800.0000000 + 5 | 600 | 1.0000000 | 1401-06-01 | 30 | 1.0000000 | 3 | 2.0000000 | .0000000 | 800.0000000 + 2400 | 100 | .0000000 | 1401-01-01 | 40 | .0000000 | 2 | 1.0000000 | .0000000 | .0000000 + 0 | 200 | .0000000 | 1401-04-01 | 40 | .0000000 | 3 | 1.0000000 | .0000000 | 200.0000000 + 0 | 100 | .0000000 | 1401-05-01 | 20 | .0000000 | 1 | 1.0000000 | .0000000 | 100.0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn*ow_sale.qty),floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.vn desc range between floor(ow_sale.qty-ow_sale.qty) preceding and floor(ow_sale.vn+ow_sale.pn) preceding ); -- mvd 5,6->4; + qty | dt | qty | to_char | vn | pn +------+------------+------+-------------------+----+----- + 1 | 1401-05-02 | 1 | .0000000 | 30 | 300 + 1 | 1401-06-01 | 1 | .0000000 | 50 | 400 + 1 | 1401-06-01 | 1 | .0000000 | 50 | 400 + 12 | 1401-06-01 | 12 | .0000000 | 30 | 500 + 12 | 1401-06-01 | 12 | .0000000 | 30 | 500 + 1 | 1401-06-01 | 1 | .0000000 | 40 | 800 + 1100 | 1401-01-01 | 1100 | .0000000 | 40 | 100 + 1 | 1401-05-01 | 1 | .0000000 | 20 | 100 + 1 | 1401-04-01 | 1 | .0000000 | 40 | 200 + 1 | 1401-03-01 | 1 | .0000000 | 10 | 200 + 12 | 1401-06-01 | 12 | .0000000 | 30 | 600 + 1 | 1401-06-01 | 1 | .0000000 | 40 | 700 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn*ow_sale.prc),floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc range between floor(ow_sale.pn-ow_sale.vn) preceding and current row ); -- mvd 4,5->7; + qty | qty | qty | cn | vn | prc | to_char +------+------+------+----+----+------+------------------- + 1 | 1 | 1 | 1 | 10 | 0 | .0000000 + 1 | 1 | 1 | 1 | 20 | 0 | .0000000 + 1 | 1 | 1 | 1 | 30 | 0 | 1.0000000 + 12 | 12 | 12 | 1 | 30 | 5 | 1.0000000 + 12 | 12 | 12 | 3 | 30 | 5 | .0000000 + 12 | 12 | 12 | 3 | 30 | 5 | .0000000 + 1 | 1 | 1 | 3 | 40 | 0 | .0000000 + 1 | 1 | 1 | 1 | 50 | 0 | .0000000 + 1100 | 1100 | 1100 | 2 | 40 | 2400 | .0000000 + 1 | 1 | 1 | 4 | 40 | 1 | .0000000 + 1 | 1 | 1 | 4 | 40 | 1 | .0000000 + 1 | 1 | 1 | 2 | 50 | 0 | .0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.qty) as int),cast (floor(ow_sale.vn*ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn order by ow_sale.cn desc range between floor(ow_sale.pn) preceding and current row ), +win2 as (partition by ow_sale.prc,ow_sale.dt order by ow_sale.vn desc), +win3 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.prc order by ow_sale.pn desc), +win4 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,4,5->2; 7,4,5->6; 7,4,9,1->8; 7,4,9,1->10; 3,9,5,1->11; + pn | to_char | cn | dt | vn | to_char | prc | to_char | qty | to_char | to_char +-----+-------------------+----+------------+----+-------------------+------+-------------------+------+-------------------+------------------- + 200 | .0000000 | 1 | 1401-03-01 | 10 | 1.0000000 | 0 | 1.0000000 | 1 | 1.0000000 | .0000000 + 300 | .0000000 | 1 | 1401-05-02 | 30 | 1.0000000 | 0 | 1.0000000 | 1 | 1.0000000 | .0000000 + 500 | .0000000 | 3 | 1401-06-01 | 30 | 1.0000000 | 5 | 1.0000000 | 12 | 1.0000000 | .0000000 + 600 | .0000000 | 3 | 1401-06-01 | 30 | 1.0000000 | 5 | 1.0000000 | 12 | 1.0000000 | .0000000 + 500 | .0000000 | 1 | 1401-06-01 | 30 | 1.0000000 | 5 | 1.0000000 | 12 | 1.0000000 | .0000000 + 700 | .0000000 | 4 | 1401-06-01 | 40 | 1.0000000 | 1 | 1.0000000 | 1 | 1.0000000 | .0000000 + 800 | .0000000 | 4 | 1401-06-01 | 40 | 1.0000000 | 1 | 1.0000000 | 1 | 1.0000000 | .0000000 + 400 | .0000000 | 2 | 1401-06-01 | 50 | 1.0000000 | 0 | 1.0000000 | 1 | 1.0000000 | .0000000 + 400 | .0000000 | 1 | 1401-06-01 | 50 | 1.0000000 | 0 | 1.0000000 | 1 | 1.0000000 | .0000000 + 100 | .0000000 | 1 | 1401-05-01 | 20 | 1.0000000 | 0 | 1.0000000 | 1 | 1.0000000 | .0000000 + 100 | .0000000 | 2 | 1401-01-01 | 40 | 1.0000000 | 2400 | 1.0000000 | 1100 | 1.0000000 | .0000000 + 200 | .0000000 | 3 | 1401-04-01 | 40 | 1.0000000 | 0 | 1.0000000 | 1 | 1.0000000 | .0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn+ow_sale.cn),floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.qty,ow_sale.dt order by ow_sale.cn asc range between 1 preceding and floor(ow_sale.prc) following ); -- mvd 5,1,6,7,8->4; + cn | pn | pn | to_char | prc | dt | qty | vn +----+-----+-----+-------------------+------+------------+------+---- + 1 | 200 | 200 | .0000000 | 0 | 1401-03-01 | 1 | 10 + 1 | 300 | 300 | .0000000 | 0 | 1401-05-02 | 1 | 30 + 2 | 100 | 100 | .0000000 | 2400 | 1401-01-01 | 1100 | 40 + 1 | 400 | 400 | .0000000 | 0 | 1401-06-01 | 1 | 50 + 2 | 400 | 400 | 1.0000000 | 0 | 1401-06-01 | 1 | 50 + 1 | 100 | 100 | .0000000 | 0 | 1401-05-01 | 1 | 20 + 1 | 500 | 500 | 1.0000000 | 5 | 1401-06-01 | 12 | 30 + 3 | 600 | 600 | .0000000 | 5 | 1401-06-01 | 12 | 30 + 3 | 500 | 500 | .0000000 | 5 | 1401-06-01 | 12 | 30 + 3 | 200 | 200 | .0000000 | 0 | 1401-04-01 | 1 | 40 + 4 | 700 | 700 | .0000000 | 1 | 1401-06-01 | 1 | 40 + 4 | 800 | 800 | .0000000 | 1 | 1401-06-01 | 1 | 40 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc-ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.dt order by ow_sale.cn desc range between floor(ow_sale.pn-ow_sale.pn) preceding and 2 following ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.cn order by ow_sale.cn asc); -- mvd 3,1,4->2; 6,1,7->5; + cn | to_char | dt | vn | to_char | prc | pn +----+-------------------+------------+----+-------------------+------+----- + 1 | .0000000 | 1401-05-01 | 20 | 1.0000000 | 0 | 100 + 2 | .0000000 | 1401-06-01 | 50 | 1.0000000 | 0 | 400 + 3 | .0000000 | 1401-04-01 | 40 | 1.0000000 | 0 | 200 + 4 | .0000000 | 1401-06-01 | 40 | 1.0000000 | 1 | 700 + 4 | .0000000 | 1401-06-01 | 40 | 1.0000000 | 1 | 800 + 1 | .0000000 | 1401-03-01 | 10 | 1.0000000 | 0 | 200 + 1 | .0000000 | 1401-05-02 | 30 | 1.0000000 | 0 | 300 + 1 | .0000000 | 1401-06-01 | 30 | 1.0000000 | 5 | 500 + 1 | .0000000 | 1401-06-01 | 50 | 1.0000000 | 0 | 400 + 2 | .0000000 | 1401-01-01 | 40 | 1.0000000 | 2400 | 100 + 3 | .0000000 | 1401-06-01 | 30 | 1.0000000 | 5 | 600 + 3 | .0000000 | 1401-06-01 | 30 | 1.0000000 | 5 | 500 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty),floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.vn asc range between 1 preceding and unbounded following ); -- mvd 2,1->4; + vn | dt | qty | to_char +----+------------+------+------------------- + 10 | 1401-03-01 | 1 | .0000000 + 30 | 1401-05-02 | 1 | .0000000 + 30 | 1401-06-01 | 12 | .0000000 + 30 | 1401-06-01 | 12 | .0000000 + 30 | 1401-06-01 | 12 | .0000000 + 40 | 1401-06-01 | 1 | .0000000 + 40 | 1401-06-01 | 1 | .0000000 + 50 | 1401-06-01 | 1 | .0000000 + 50 | 1401-06-01 | 1 | .0000000 + 20 | 1401-05-01 | 1 | .0000000 + 40 | 1401-01-01 | 1100 | .0000000 + 40 | 1401-04-01 | 1 | .0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty*ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.vn desc range between floor(ow_sale.qty) preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.prc,ow_sale.prc,ow_sale.dt order by ow_sale.pn asc); -- mvd 5,1->4; 7,2,8,9->6; 5,1->10; + vn | dt | dt | to_char | qty | to_char | prc | cn | pn | to_char +----+------------+------------+-------------------+------+-------------------+------+----+-----+------------------- + 10 | 1401-03-01 | 1401-03-01 | .0000000 | 1 | 1.0000000 | 0 | 1 | 200 | .0000000 + 20 | 1401-05-01 | 1401-05-01 | .0000000 | 1 | 1.0000000 | 0 | 1 | 100 | .0000000 + 30 | 1401-05-02 | 1401-05-02 | .0000000 | 1 | 1.0000000 | 0 | 1 | 300 | .0000000 + 40 | 1401-04-01 | 1401-04-01 | 1.0000000 | 1 | 1.0000000 | 0 | 3 | 200 | 2.0000000 + 40 | 1401-06-01 | 1401-06-01 | 1.0000000 | 1 | 1.0000000 | 1 | 4 | 700 | 2.0000000 + 40 | 1401-06-01 | 1401-06-01 | 1.0000000 | 1 | 2.0000000 | 1 | 4 | 800 | 2.0000000 + 50 | 1401-06-01 | 1401-06-01 | .0000000 | 1 | 1.0000000 | 0 | 2 | 400 | .0000000 + 50 | 1401-06-01 | 1401-06-01 | .0000000 | 1 | 1.0000000 | 0 | 1 | 400 | .0000000 + 30 | 1401-06-01 | 1401-06-01 | .0000000 | 12 | 1.0000000 | 5 | 1 | 500 | 10.0000000 + 30 | 1401-06-01 | 1401-06-01 | .0000000 | 12 | 1.0000000 | 5 | 3 | 500 | 10.0000000 + 30 | 1401-06-01 | 1401-06-01 | .0000000 | 12 | 2.0000000 | 5 | 3 | 600 | 10.0000000 + 40 | 1401-01-01 | 1401-01-01 | .0000000 | 1100 | 1.0000000 | 2400 | 2 | 100 | 4800.0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn-ow_sale.vn),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.prc order by ow_sale.cn desc range between current row and current row ); -- mvd 4,5,6,1,7->3; + vn | vn | to_char | prc | dt | cn | pn +----+----+-------------------+------+------------+----+----- + 20 | 20 | .0000000 | 0 | 1401-05-01 | 1 | 100 + 10 | 10 | .0000000 | 0 | 1401-03-01 | 1 | 200 + 40 | 40 | .0000000 | 0 | 1401-04-01 | 3 | 200 + 50 | 50 | .0000000 | 0 | 1401-06-01 | 2 | 400 + 30 | 30 | .0000000 | 5 | 1401-06-01 | 3 | 600 + 40 | 40 | .0000000 | 1 | 1401-06-01 | 4 | 800 + 40 | 40 | .0000000 | 2400 | 1401-01-01 | 2 | 100 + 30 | 30 | .0000000 | 0 | 1401-05-02 | 1 | 300 + 50 | 50 | .0000000 | 0 | 1401-06-01 | 1 | 400 + 30 | 30 | .0000000 | 5 | 1401-06-01 | 1 | 500 + 30 | 30 | .0000000 | 5 | 1401-06-01 | 3 | 500 + 40 | 40 | .0000000 | 1 | 1401-06-01 | 4 | 700 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.cn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.vn asc range between current row and current row ), +win2 as (order by ow_sale.cn asc); -- mvd 6,2,4,7->5; 2->8; + dt | cn | cn | vn | to_char | prc | pn | to_char +------------+----+----+----+-------------------+------+-----+------------------- + 1401-05-01 | 1 | 1 | 20 | .0000000 | 0 | 100 | .0000000 + 1401-03-01 | 1 | 1 | 10 | .0000000 | 0 | 200 | .0000000 + 1401-05-02 | 1 | 1 | 30 | .0000000 | 0 | 300 | .0000000 + 1401-06-01 | 1 | 1 | 50 | .0000000 | 0 | 400 | .0000000 + 1401-06-01 | 1 | 1 | 30 | .0000000 | 5 | 500 | .0000000 + 1401-01-01 | 2 | 2 | 40 | .0000000 | 2400 | 100 | .4545455 + 1401-06-01 | 2 | 2 | 50 | .0000000 | 0 | 400 | .4545455 + 1401-04-01 | 3 | 3 | 40 | .0000000 | 0 | 200 | .6363636 + 1401-06-01 | 3 | 3 | 30 | .0000000 | 5 | 600 | .6363636 + 1401-06-01 | 3 | 3 | 30 | .0000000 | 5 | 500 | .6363636 + 1401-06-01 | 4 | 4 | 40 | .0000000 | 1 | 800 | .9090909 + 1401-06-01 | 4 | 4 | 40 | .0000000 | 1 | 700 | .9090909 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.dt order by ow_sale.cn desc range between current row and floor(ow_sale.prc) following ); -- mvd 3,4,5,6->2; + pn | to_char | prc | cn | dt | vn +-----+-------------------+------+----+------------+---- + 200 | .0000000 | 0 | 1 | 1401-03-01 | 10 + 300 | .0000000 | 0 | 1 | 1401-05-02 | 30 + 600 | 1.0000000 | 5 | 3 | 1401-06-01 | 30 + 500 | 1.0000000 | 5 | 3 | 1401-06-01 | 30 + 500 | .0000000 | 5 | 1 | 1401-06-01 | 30 + 400 | .0000000 | 0 | 2 | 1401-06-01 | 50 + 400 | .0000000 | 0 | 1 | 1401-06-01 | 50 + 100 | .0000000 | 0 | 1 | 1401-05-01 | 20 + 200 | .0000000 | 0 | 3 | 1401-04-01 | 40 + 800 | 1.0000000 | 1 | 4 | 1401-06-01 | 40 + 700 | 1.0000000 | 1 | 4 | 1401-06-01 | 40 + 100 | .0000000 | 2400 | 2 | 1401-01-01 | 40 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.vn asc range between current row and unbounded following ); -- mvd 1,8,2->7; + cn | vn | qty | vn | cn | pn | to_char | dt +----+----+------+----+----+-----+-------------------+------------ + 3 | 40 | 1 | 40 | 3 | 200 | .0000000 | 1401-04-01 + 1 | 20 | 1 | 20 | 1 | 100 | .0000000 | 1401-05-01 + 2 | 50 | 1 | 50 | 2 | 400 | .0000000 | 1401-06-01 + 4 | 40 | 1 | 40 | 4 | 800 | .0000000 | 1401-06-01 + 4 | 40 | 1 | 40 | 4 | 700 | .0000000 | 1401-06-01 + 2 | 40 | 1100 | 40 | 2 | 100 | .0000000 | 1401-01-01 + 1 | 10 | 1 | 10 | 1 | 200 | .0000000 | 1401-03-01 + 1 | 30 | 1 | 30 | 1 | 300 | .0000000 | 1401-05-02 + 1 | 30 | 12 | 30 | 1 | 500 | .0000000 | 1401-06-01 + 1 | 50 | 1 | 50 | 1 | 400 | .0000000 | 1401-06-01 + 3 | 30 | 12 | 30 | 3 | 500 | .0000000 | 1401-06-01 + 3 | 30 | 12 | 30 | 3 | 600 | .0000000 | 1401-06-01 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.pn)) OVER(partition by ow_sale.vn order by ow_sale.cn asc range between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn asc range between current row and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.vn desc); -- mvd 4,5->3; 2,7,5,8->6; 4,5->9; 4,5->10; + prc | dt | to_char | cn | vn | to_char | qty | pn | to_char | to_char +------+------------+-------------------+----+----+-------------------+------+-----+-------------------+------------------- + 0 | 1401-03-01 | .0000000 | 1 | 10 | 1.0000000 | 1 | 200 | 1.0000000 | .0000000 + 0 | 1401-05-01 | .0000000 | 1 | 20 | 1.0000000 | 1 | 100 | 1.0000000 | .0000000 + 0 | 1401-05-02 | .8585842 | 1 | 30 | 1.0000000 | 1 | 300 | 4.0000000 | .0000000 + 5 | 1401-06-01 | .8585842 | 1 | 30 | 1.0000000 | 12 | 500 | 4.0000000 | .0000000 + 5 | 1401-06-01 | 1.0000000 | 3 | 30 | 1.0000000 | 12 | 500 | 2.0000000 | .0000000 + 5 | 1401-06-01 | 1.0000000 | 3 | 30 | 1.0000000 | 12 | 600 | 2.0000000 | .0000000 + 2400 | 1401-01-01 | .4419400 | 2 | 40 | 1.0000000 | 1100 | 100 | 4.0000000 | .0000000 + 0 | 1401-04-01 | .9758921 | 3 | 40 | 1.0000000 | 1 | 200 | 3.0000000 | .0000000 + 1 | 1401-06-01 | 1.0000000 | 4 | 40 | 1.0000000 | 1 | 700 | 2.0000000 | .0000000 + 1 | 1401-06-01 | 1.0000000 | 4 | 40 | 1.0000000 | 1 | 800 | 2.0000000 | .0000000 + 0 | 1401-06-01 | 1.0000000 | 1 | 50 | 1.0000000 | 1 | 400 | 2.0000000 | .0000000 + 0 | 1401-06-01 | .0000000 | 2 | 50 | 1.0000000 | 1 | 400 | 1.0000000 | .0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.pn asc range between floor(ow_sale.qty) following and floor(ow_sale.prc*ow_sale.vn) following ); -- mvd 4,2->3; + prc | pn | to_char | dt +------+-----+-------------------+------------ + 0 | 200 | .0000000 | 1401-03-01 + 5 | 600 | .0000000 | 1401-06-01 + 1 | 700 | .0000000 | 1401-06-01 + 2400 | 100 | .0000000 | 1401-01-01 + 0 | 200 | .0000000 | 1401-04-01 + 0 | 100 | .0000000 | 1401-05-01 + 0 | 300 | .0000000 | 1401-05-02 + 0 | 400 | .0000000 | 1401-06-01 + 0 | 400 | .0000000 | 1401-06-01 + 5 | 500 | .0000000 | 1401-06-01 + 5 | 500 | .0000000 | 1401-06-01 + 1 | 800 | .0000000 | 1401-06-01 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty-ow_sale.vn),floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn/ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.pn order by ow_sale.cn desc range between 1 following and floor(ow_sale.vn/ow_sale.vn) following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,5,1->3; 5->6; 5->7; 5->8; 5->9; 5->10; + pn | pn | to_char | prc | cn | to_char | to_char | to_char | to_char | to_char +-----+-----+-------------------+------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 100 | 100 | .0000000 | 2400 | 2 | .0000000 | 100.0000000 | 1.0000000 | 1.0000000 | 40.0000000 + 200 | 200 | .0000000 | 0 | 1 | 20.0000000 | 100.0000000 | 2.0000000 | 2.0000000 | 40.0000000 + 200 | 200 | .0000000 | 0 | 3 | 5.0000000 | 100.0000000 | 3.0000000 | 3.0000000 | 40.0000000 + 100 | 100 | .0000000 | 0 | 1 | 5.0000000 | 100.0000000 | 4.0000000 | 4.0000000 | 40.0000000 + 300 | 300 | .0000000 | 0 | 1 | 10.0000000 | 100.0000000 | 5.0000000 | 5.0000000 | 40.0000000 + 400 | 400 | .0000000 | 0 | 1 | 8.0000000 | 100.0000000 | 6.0000000 | 6.0000000 | 50.0000000 + 400 | 400 | .0000000 | 0 | 2 | 8.0000000 | 100.0000000 | 7.0000000 | 7.0000000 | 50.0000000 + 500 | 500 | .0000000 | 5 | 1 | 5.0000000 | 100.0000000 | 8.0000000 | 8.0000000 | 50.0000000 + 500 | 500 | .0000000 | 5 | 3 | 5.0000000 | 100.0000000 | 9.0000000 | 9.0000000 | 50.0000000 + 600 | 600 | .0000000 | 5 | 3 | 10.0000000 | 100.0000000 | 10.0000000 | 10.0000000 | 50.0000000 + 700 | 700 | .0000000 | 1 | 4 | 20.0000000 | 100.0000000 | 11.0000000 | 11.0000000 | 50.0000000 + 800 | 800 | .0000000 | 1 | 4 | 17.0000000 | 100.0000000 | 12.0000000 | 12.0000000 | 50.0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty order by ow_sale.pn desc range between 4 following and unbounded following ); -- mvd 5,6,2->4; + cn | pn | pn | to_char | dt | qty +----+-----+-----+-------------------+------------+------ + 3 | 200 | 200 | .0000000 | 1401-04-01 | 1 + 1 | 100 | 100 | .0000000 | 1401-05-01 | 1 + 3 | 600 | 600 | 1.0000000 | 1401-06-01 | 12 + 1 | 500 | 500 | .0000000 | 1401-06-01 | 12 + 3 | 500 | 500 | .0000000 | 1401-06-01 | 12 + 2 | 100 | 100 | .0000000 | 1401-01-01 | 1100 + 1 | 200 | 200 | .0000000 | 1401-03-01 | 1 + 1 | 300 | 300 | .0000000 | 1401-05-02 | 1 + 4 | 800 | 800 | .8928571 | 1401-06-01 | 1 + 4 | 700 | 700 | 1.0000000 | 1401-06-01 | 1 + 2 | 400 | 400 | .0000000 | 1401-06-01 | 1 + 1 | 400 | 400 | .0000000 | 1401-06-01 | 1 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc,ow_sale.cn desc rows unbounded preceding ); -- mvd 2,4,5,6->3; + prc | cn | to_char | dt | vn | pn +------+----+-------------------+------------+----+----- + 0 | 1 | .0000000 | 1401-03-01 | 10 | 200 + 5 | 3 | .0000000 | 1401-06-01 | 30 | 600 + 1 | 4 | .0000000 | 1401-06-01 | 40 | 700 + 0 | 1 | .0000000 | 1401-05-01 | 20 | 100 + 0 | 1 | .0000000 | 1401-05-02 | 30 | 300 + 5 | 1 | .0000000 | 1401-06-01 | 30 | 500 + 5 | 3 | .0000000 | 1401-06-01 | 30 | 500 + 2400 | 2 | .0000000 | 1401-01-01 | 40 | 100 + 0 | 3 | .0000000 | 1401-04-01 | 40 | 200 + 1 | 4 | .0000000 | 1401-06-01 | 40 | 800 + 0 | 1 | .0000000 | 1401-06-01 | 50 | 400 + 0 | 2 | .0000000 | 1401-06-01 | 50 | 400 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.pn)) OVER(partition by ow_sale.prc,ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.cn desc rows unbounded preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.cn desc rows unbounded preceding ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.cn asc); -- mvd 7,5,3,8->6; 5,3->9; 7,5,3,8->10; 5,3->11; 7,5,3,8->12; + qty | qty | vn | vn | cn | to_char | prc | pn | to_char | to_char | to_char | to_char +------+------+----+----+----+-------------------+------+-----+-------------------+-------------------+-------------------+------------------- + 1 | 1 | 10 | 10 | 1 | .0000000 | 0 | 200 | 1.0000000 | -199.0000000 | 1.0000000 | 201.0000000 + 1 | 1 | 20 | 20 | 1 | .0000000 | 0 | 100 | 1.0000000 | -99.0000000 | 1.0000000 | 101.0000000 + 1 | 1 | 30 | 30 | 1 | .0000000 | 0 | 300 | 1.0000000 | -299.0000000 | 1.0000000 | 301.0000000 + 12 | 12 | 30 | 30 | 1 | .0000000 | 5 | 500 | 2.0000000 | -488.0000000 | 1.0000000 | 501.0000000 + 12 | 12 | 30 | 30 | 3 | .0000000 | 5 | 500 | 1.0000000 | -488.0000000 | 1.0000000 | 503.0000000 + 12 | 12 | 30 | 30 | 3 | .0000000 | 5 | 600 | 2.0000000 | -588.0000000 | 1.0000000 | 603.0000000 + 1 | 1 | 40 | 40 | 3 | .0000000 | 0 | 200 | 1.0000000 | -199.0000000 | 1.0000000 | 203.0000000 + 1 | 1 | 50 | 50 | 1 | .0000000 | 0 | 400 | 1.0000000 | -399.0000000 | 1.0000000 | 401.0000000 + 1100 | 1100 | 40 | 40 | 2 | .0000000 | 2400 | 100 | 1.0000000 | 1000.0000000 | 1.0000000 | 102.0000000 + 1 | 1 | 40 | 40 | 4 | .0000000 | 1 | 800 | 1.0000000 | -799.0000000 | 1.0000000 | 804.0000000 + 1 | 1 | 40 | 40 | 4 | .0000000 | 1 | 700 | 2.0000000 | -699.0000000 | 1.0000000 | 704.0000000 + 1 | 1 | 50 | 50 | 2 | .0000000 | 0 | 400 | 1.0000000 | -399.0000000 | 1.0000000 | 402.0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows floor(ow_sale.qty) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.pn-ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows floor(ow_sale.qty) preceding ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 1,2,4,5->3; 1,2,4,5->6; 1->7; 1,2,4,5->8; 1,2->9; + cn | dt | to_char | vn | qty | to_char | to_char | to_char | to_char +----+------------+-------------------+----+------+-------------------+-------------------+-------------------+------------------- + 4 | 1401-06-01 | .0000000 | 40 | 1 | 40.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 4 | 1401-06-01 | .0000000 | 40 | 1 | 40.0000000 | 1.0000000 | 2.0000000 | 1.0000000 + 3 | 1401-06-01 | .0000000 | 30 | 12 | 30.0000000 | 3.0000000 | 1.0000000 | 5.0000000 + 3 | 1401-06-01 | .0000000 | 30 | 12 | 30.0000000 | 3.0000000 | 2.0000000 | 5.0000000 + 3 | 1401-04-01 | .0000000 | 40 | 1 | 40.0000000 | 3.0000000 | 1.0000000 | .0000000 + 2 | 1401-01-01 | .0000000 | 40 | 1100 | 40.0000000 | 6.0000000 | 1.0000000 | 2400.0000000 + 2 | 1401-06-01 | .0000000 | 50 | 1 | 50.0000000 | 6.0000000 | 1.0000000 | .0000000 + 1 | 1401-06-01 | .0000000 | 30 | 12 | 30.0000000 | 8.0000000 | 1.0000000 | 5.0000000 + 1 | 1401-05-02 | .0000000 | 30 | 1 | 30.0000000 | 8.0000000 | 1.0000000 | .0000000 + 1 | 1401-06-01 | .0000000 | 50 | 1 | 50.0000000 | 8.0000000 | 1.0000000 | .0000000 + 1 | 1401-03-01 | .0000000 | 10 | 1 | 10.0000000 | 8.0000000 | 1.0000000 | .0000000 + 1 | 1401-05-01 | .0000000 | 20 | 1 | 20.0000000 | 8.0000000 | 1.0000000 | .0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn*ow_sale.pn),floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc rows current row ); -- mvd 3,2,5->7; + dt | vn | cn | vn | pn | pn | to_char +------------+----+----+----+-----+-----+------------------- + 1401-03-01 | 10 | 1 | 10 | 200 | 200 | .0000000 + 1401-05-01 | 20 | 1 | 20 | 100 | 100 | .0000000 + 1401-06-01 | 50 | 2 | 50 | 400 | 400 | .0000000 + 1401-06-01 | 30 | 3 | 30 | 600 | 600 | .0000000 + 1401-04-01 | 40 | 3 | 40 | 200 | 200 | .0000000 + 1401-06-01 | 40 | 4 | 40 | 800 | 800 | .0000000 + 1401-05-02 | 30 | 1 | 30 | 300 | 300 | .0000000 + 1401-06-01 | 30 | 1 | 30 | 500 | 500 | .0000000 + 1401-06-01 | 50 | 1 | 50 | 400 | 400 | .0000000 + 1401-01-01 | 40 | 2 | 40 | 100 | 100 | .0000000 + 1401-06-01 | 30 | 3 | 30 | 500 | 500 | .0000000 + 1401-06-01 | 40 | 4 | 40 | 700 | 700 | .0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc),floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.qty) preceding ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.dt order by ow_sale.vn asc), +win3 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.pn order by ow_sale.vn desc); -- mvd 1,4->3; 6,1,7->5; 1,7,9,4->8; + cn | cn | to_char | pn | to_char | dt | vn | to_char | qty +----+----+-------------------+-----+-------------------+------------+----+-------------------+------ + 1 | 1 | .0000000 | 200 | 1.0000000 | 1401-03-01 | 10 | 1.0000000 | 1 + 1 | 1 | .0000000 | 100 | 1.0000000 | 1401-05-01 | 20 | 1.0000000 | 1 + 1 | 1 | .0000000 | 300 | 1.0000000 | 1401-05-02 | 30 | 1.0000000 | 1 + 1 | 1 | .0000000 | 400 | 2.0000000 | 1401-06-01 | 50 | 1.0000000 | 1 + 1 | 1 | .0000000 | 500 | 1.0000000 | 1401-06-01 | 30 | 1.0000000 | 12 + 3 | 3 | .0000000 | 200 | 1.0000000 | 1401-04-01 | 40 | 1.0000000 | 1 + 3 | 3 | .0000000 | 500 | 2.0000000 | 1401-06-01 | 30 | 1.0000000 | 12 + 3 | 3 | .0000000 | 600 | 1.0000000 | 1401-06-01 | 30 | 1.0000000 | 12 + 2 | 2 | .0000000 | 100 | 1.0000000 | 1401-01-01 | 40 | 1.0000000 | 1100 + 2 | 2 | .0000000 | 400 | 1.0000000 | 1401-06-01 | 50 | 1.0000000 | 1 + 4 | 4 | .0000000 | 700 | 1.0000000 | 1401-06-01 | 40 | 1.0000000 | 1 + 4 | 4 | .0000000 | 800 | 2.0000000 | 1401-06-01 | 40 | 1.0000000 | 1 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn-ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 3,2,5,1,6->4; + qty | cn | prc | to_char | dt | vn +------+----+------+-------------------+------------+---- + 1 | 1 | 0 | .0000000 | 1401-03-01 | 10 + 1 | 1 | 0 | .0000000 | 1401-05-02 | 30 + 1 | 1 | 0 | .0000000 | 1401-06-01 | 50 + 1 | 4 | 1 | .0000000 | 1401-06-01 | 40 + 1 | 4 | 1 | .0000000 | 1401-06-01 | 40 + 1 | 3 | 0 | .0000000 | 1401-04-01 | 40 + 1 | 1 | 0 | .0000000 | 1401-05-01 | 20 + 1 | 2 | 0 | .0000000 | 1401-06-01 | 50 + 12 | 1 | 5 | .0000000 | 1401-06-01 | 30 + 12 | 3 | 5 | .0000000 | 1401-06-01 | 30 + 12 | 3 | 5 | .0000000 | 1401-06-01 | 30 + 1100 | 2 | 2400 | .0000000 | 1401-01-01 | 40 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn-ow_sale.pn),floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and current row ); -- mvd 1,3,4->2; 1,3,4->5; + dt | to_char | vn | pn | to_char +------------+-------------------+----+-----+------------------- + 1401-03-01 | .0000000 | 10 | 200 | 11.0000000 + 1401-06-01 | .0000000 | 30 | 600 | 42.0000000 + 1401-06-01 | .0000000 | 40 | 700 | 41.0000000 + 1401-01-01 | .0000000 | 40 | 100 | 1140.0000000 + 1401-05-01 | .0000000 | 20 | 100 | 21.0000000 + 1401-04-01 | .0000000 | 40 | 200 | 41.0000000 + 1401-05-02 | .0000000 | 30 | 300 | 31.0000000 + 1401-06-01 | .0000000 | 50 | 400 | 51.0000000 + 1401-06-01 | .0000000 | 50 | 400 | 51.0000000 + 1401-06-01 | .0000000 | 30 | 500 | 42.0000000 + 1401-06-01 | .0000000 | 30 | 500 | 42.0000000 + 1401-06-01 | .0000000 | 40 | 800 | 41.0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and 8 following ); -- mvd 3,1,6->7; + vn | prc | cn | dt | cn | pn | to_char +----+------+----+------------+----+-----+------------------- + 30 | 0 | 1 | 1401-05-02 | 1 | 300 | .0000000 + 50 | 0 | 1 | 1401-06-01 | 1 | 400 | .0000000 + 50 | 0 | 2 | 1401-06-01 | 2 | 400 | .0000000 + 30 | 5 | 1 | 1401-06-01 | 1 | 500 | .0000000 + 30 | 5 | 3 | 1401-06-01 | 3 | 500 | .0000000 + 40 | 1 | 4 | 1401-06-01 | 4 | 800 | .0000000 + 20 | 0 | 1 | 1401-05-01 | 1 | 100 | .0000000 + 40 | 2400 | 2 | 1401-01-01 | 2 | 100 | .0000000 + 10 | 0 | 1 | 1401-03-01 | 1 | 200 | .0000000 + 40 | 0 | 3 | 1401-04-01 | 3 | 200 | .0000000 + 30 | 5 | 3 | 1401-06-01 | 3 | 600 | .0000000 + 40 | 1 | 4 | 1401-06-01 | 4 | 700 | .0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc/ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn*ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc rows between unbounded preceding and floor(ow_sale.pn+ow_sale.pn) following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 4,2,1->3; 6->5; + pn | vn | to_char | dt | to_char | cn +-----+----+-------------------+------------+-------------------+---- + 100 | 40 | .0000000 | 1401-01-01 | 3.0000000 | 2 + 200 | 10 | .0000000 | 1401-03-01 | 3.0000000 | 1 + 200 | 40 | .0000000 | 1401-04-01 | 1.0000000 | 3 + 100 | 20 | .0000000 | 1401-05-01 | 1.0000000 | 1 + 300 | 30 | .0000000 | 1401-05-02 | 1.0000000 | 1 + 400 | 50 | 1.0000000 | 1401-06-01 | 2.0000000 | 1 + 400 | 50 | 1.0000000 | 1401-06-01 | 36.0000000 | 2 + 500 | 30 | 1.0000000 | 1401-06-01 | 36.0000000 | 1 + 500 | 30 | 1.0000000 | 1401-06-01 | 4.0000000 | 3 + 600 | 30 | 1.0000000 | 1401-06-01 | .0000000 | 3 + 700 | 40 | .0000000 | 1401-06-01 | .0000000 | 4 + 800 | 40 | .0000000 | 1401-06-01 | .0000000 | 4 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.vn desc rows between unbounded preceding and unbounded following ); -- mvd 4,1,5,6->3; + cn | qty | to_char | prc | vn | pn +----+------+-------------------+------+----+----- + 1 | 1 | .0000000 | 0 | 10 | 200 + 1 | 1 | .0000000 | 0 | 20 | 100 + 3 | 12 | .0000000 | 5 | 30 | 600 + 3 | 1 | .0000000 | 0 | 40 | 200 + 4 | 1 | .0000000 | 1 | 40 | 800 + 2 | 1 | .0000000 | 0 | 50 | 400 + 1 | 1 | .0000000 | 0 | 30 | 300 + 1 | 12 | .0000000 | 5 | 30 | 500 + 3 | 12 | .0000000 | 5 | 30 | 500 + 2 | 1100 | .0000000 | 2400 | 40 | 100 + 4 | 1 | .0000000 | 1 | 40 | 700 + 1 | 1 | .0000000 | 0 | 50 | 400 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn-ow_sale.prc),floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.prc)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 5,6,1->4; 5,6,1->7; 9->8; 9->10; 9->11; 9->12; + vn | vn | qty | to_char | dt | cn | to_char | to_char | pn | to_char | to_char | to_char +----+----+------+-------------------+------------+----+-------------------+-------------------+-----+-------------------+-------------------+------------------- + 40 | 40 | 1100 | .0000000 | 1401-01-01 | 2 | -1300.0000000 | 1.0000000 | 100 | 1100.0000000 | 20.0000000 | .0000000 + 20 | 20 | 1 | .0000000 | 1401-05-01 | 1 | 1.0000000 | 2.0000000 | 100 | 1100.0000000 | 20.0000000 | 1.0000000 + 10 | 10 | 1 | .0000000 | 1401-03-01 | 1 | 1.0000000 | 3.0000000 | 200 | 1100.0000000 | 10.0000000 | 1.0000000 + 40 | 40 | 1 | .0000000 | 1401-04-01 | 3 | 1.0000000 | 4.0000000 | 200 | 1100.0000000 | 10.0000000 | 1.0000000 + 30 | 30 | 1 | .0000000 | 1401-05-02 | 1 | 1.0000000 | 5.0000000 | 300 | 1100.0000000 | 10.0000000 | 1.0000000 + 50 | 50 | 1 | .0000000 | 1401-06-01 | 2 | 1.0000000 | 6.0000000 | 400 | 1100.0000000 | 10.0000000 | 12.0000000 + 50 | 50 | 1 | .0000000 | 1401-06-01 | 1 | 1.0000000 | 7.0000000 | 400 | 1100.0000000 | 10.0000000 | 1.0000000 + 30 | 30 | 12 | .0000000 | 1401-06-01 | 1 | 7.0000000 | 8.0000000 | 500 | 1100.0000000 | 10.0000000 | .0000000 + 30 | 30 | 12 | 1.0000000 | 1401-06-01 | 3 | 7.0000000 | 9.0000000 | 500 | 1100.0000000 | 10.0000000 | .0000000 + 30 | 30 | 12 | 1.0000000 | 1401-06-01 | 3 | 7.0000000 | 10.0000000 | 600 | 1100.0000000 | 10.0000000 | .0000000 + 40 | 40 | 1 | 1.0000000 | 1401-06-01 | 4 | .0000000 | 11.0000000 | 700 | 1100.0000000 | 10.0000000 | 1.0000000 + 40 | 40 | 1 | 1.0000000 | 1401-06-01 | 4 | .0000000 | 12.0000000 | 800 | 1100.0000000 | 10.0000000 | .0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between floor(ow_sale.prc*ow_sale.pn) preceding and floor(ow_sale.prc*ow_sale.pn) preceding ); -- mvd 2,4,5,1->3; + pn | prc | to_char | cn | dt +-----+------+-------------------+----+------------ + 200 | 0 | .0000000 | 1 | 1401-03-01 + 800 | 1 | .0000000 | 4 | 1401-06-01 + 600 | 5 | .0000000 | 3 | 1401-06-01 + 200 | 0 | .0000000 | 3 | 1401-04-01 + 100 | 0 | .0000000 | 1 | 1401-05-01 + 300 | 0 | .0000000 | 1 | 1401-05-02 + 400 | 0 | .0000000 | 1 | 1401-06-01 + 400 | 0 | .0000000 | 2 | 1401-06-01 + 700 | 1 | .0000000 | 4 | 1401-06-01 + 500 | 5 | .0000000 | 1 | 1401-06-01 + 500 | 5 | .0000000 | 3 | 1401-06-01 + 100 | 2400 | .0000000 | 2 | 1401-01-01 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.vn desc rows between floor(ow_sale.pn+ow_sale.pn) preceding and current row ); -- mvd 3,4,5,6->2; + cn | to_char | prc | dt | vn | pn +----+-------------------+------+------------+----+----- + 1 | .0000000 | 0 | 1401-03-01 | 10 | 200 + 1 | .0000000 | 0 | 1401-05-02 | 30 | 300 + 1 | .0000000 | 0 | 1401-06-01 | 50 | 400 + 2 | .0000000 | 0 | 1401-06-01 | 50 | 400 + 1 | .0000000 | 5 | 1401-06-01 | 30 | 500 + 3 | .0000000 | 5 | 1401-06-01 | 30 | 500 + 3 | .0000000 | 5 | 1401-06-01 | 30 | 600 + 2 | .0000000 | 2400 | 1401-01-01 | 40 | 100 + 3 | .0000000 | 0 | 1401-04-01 | 40 | 200 + 1 | .0000000 | 0 | 1401-05-01 | 20 | 100 + 4 | .0000000 | 1 | 1401-06-01 | 40 | 700 + 4 | .0000000 | 1 | 1401-06-01 | 40 | 800 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.vn) preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.vn asc); -- mvd 3,4,1,7->6; 2,4,7->8; + qty | cn | prc | vn | cn | to_char | pn | to_char +------+----+------+----+----+-------------------+-----+------------------- + 1 | 1 | 0 | 30 | 1 | .0000000 | 300 | .0000000 + 1 | 1 | 0 | 50 | 1 | .0000000 | 400 | .0000000 + 1 | 2 | 0 | 50 | 2 | .0000000 | 400 | .0000000 + 1 | 4 | 1 | 40 | 4 | .0000000 | 700 | .0000000 + 12 | 3 | 5 | 30 | 3 | .0000000 | 600 | .0000000 + 1100 | 2 | 2400 | 40 | 2 | .0000000 | 100 | .0000000 + 1 | 1 | 0 | 10 | 1 | .0000000 | 200 | .0000000 + 1 | 1 | 0 | 20 | 1 | .0000000 | 100 | .0000000 + 1 | 3 | 0 | 40 | 3 | .0000000 | 200 | .0000000 + 1 | 4 | 1 | 40 | 4 | .0000000 | 800 | .0000000 + 12 | 1 | 5 | 30 | 1 | .0000000 | 500 | .0000000 + 12 | 3 | 5 | 30 | 3 | .0000000 | 500 | .0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.vn) preceding and floor(ow_sale.vn) following ); -- mvd 5,3->4; + qty | cn | pn | to_char | dt +------+----+-----+-------------------+------------ + 1 | 1 | 200 | .0000000 | 1401-03-01 + 1 | 1 | 300 | .0000000 | 1401-05-02 + 1 | 1 | 400 | .6377481 | 1401-06-01 + 1 | 2 | 400 | .6377481 | 1401-06-01 + 12 | 1 | 500 | .6377481 | 1401-06-01 + 12 | 3 | 500 | .6377481 | 1401-06-01 + 12 | 3 | 600 | .6377481 | 1401-06-01 + 1 | 4 | 700 | .6377481 | 1401-06-01 + 1 | 4 | 800 | .6377481 | 1401-06-01 + 1100 | 2 | 100 | .0000000 | 1401-01-01 + 1 | 3 | 200 | .0000000 | 1401-04-01 + 1 | 1 | 100 | .0000000 | 1401-05-01 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc+ow_sale.qty),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc rows between 6 preceding and unbounded following ); -- mvd 1->4; + pn | cn | dt | to_char +-----+----+------------+------------------- + 100 | 2 | 1401-01-01 | 1.0000000 + 100 | 1 | 1401-05-01 | 1.0000000 + 200 | 1 | 1401-03-01 | 1.0000000 + 200 | 3 | 1401-04-01 | 1.0000000 + 600 | 3 | 1401-06-01 | .0000000 + 700 | 4 | 1401-06-01 | .0000000 + 300 | 1 | 1401-05-02 | .0000000 + 400 | 1 | 1401-06-01 | 1.0000000 + 400 | 2 | 1401-06-01 | 1.0000000 + 500 | 1 | 1401-06-01 | 1.0000000 + 500 | 3 | 1401-06-01 | 1.0000000 + 800 | 4 | 1401-06-01 | .0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between current row and current row ); -- mvd 8,1,9->7; + cn | pn | qty | cn | pn | pn | to_char | dt | vn +----+-----+------+----+-----+-----+-------------------+------------+---- + 1 | 100 | 1 | 1 | 100 | 100 | .0000000 | 1401-05-01 | 20 + 2 | 400 | 1 | 2 | 400 | 400 | .0000000 | 1401-06-01 | 50 + 3 | 200 | 1 | 3 | 200 | 200 | .0000000 | 1401-04-01 | 40 + 4 | 700 | 1 | 4 | 700 | 700 | .0000000 | 1401-06-01 | 40 + 4 | 800 | 1 | 4 | 800 | 800 | .0000000 | 1401-06-01 | 40 + 1 | 200 | 1 | 1 | 200 | 200 | .0000000 | 1401-03-01 | 10 + 1 | 300 | 1 | 1 | 300 | 300 | .0000000 | 1401-05-02 | 30 + 1 | 500 | 12 | 1 | 500 | 500 | .0000000 | 1401-06-01 | 30 + 1 | 400 | 1 | 1 | 400 | 400 | .0000000 | 1401-06-01 | 50 + 2 | 100 | 1100 | 2 | 100 | 100 | .0000000 | 1401-01-01 | 40 + 3 | 500 | 12 | 3 | 500 | 500 | .0000000 | 1401-06-01 | 30 + 3 | 600 | 12 | 3 | 600 | 600 | .0000000 | 1401-06-01 | 30 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between current row and current row ), +win2 as (partition by ow_sale.pn order by ow_sale.cn asc), +win3 as (order by ow_sale.cn asc), +win4 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc); -- mvd 1,4,2->3; 4,6->5; 4->7; 4,6->8; 4->9; + dt | vn | to_char | cn | to_char | pn | to_char | to_char | to_char +------------+----+-------------------+----+-------------------+-----+-------------------+-------------------+------------------- + 1401-05-01 | 20 | .0000000 | 1 | 1.0000000 | 100 | .0000000 | .0000000 | 50.0000000 + 1401-03-01 | 10 | .0000000 | 1 | 1.0000000 | 200 | .0000000 | .0000000 | 50.0000000 + 1401-05-02 | 30 | .0000000 | 1 | 1.0000000 | 300 | .0000000 | .0000000 | 50.0000000 + 1401-06-01 | 50 | .0000000 | 1 | 1.0000000 | 400 | .0000000 | .0000000 | 50.0000000 + 1401-06-01 | 30 | .0000000 | 1 | 1.0000000 | 500 | .0000000 | .0000000 | 50.0000000 + 1401-01-01 | 40 | .0000000 | 2 | 2.0000000 | 100 | .4545455 | .0000000 | 50.0000000 + 1401-06-01 | 50 | .0000000 | 2 | 2.0000000 | 400 | .4545455 | .0000000 | 50.0000000 + 1401-04-01 | 40 | .0000000 | 3 | 2.0000000 | 200 | .6363636 | .0000000 | 50.0000000 + 1401-06-01 | 30 | .0000000 | 3 | 2.0000000 | 500 | .6363636 | .0000000 | 50.0000000 + 1401-06-01 | 30 | .0000000 | 3 | 1.0000000 | 600 | .6363636 | .0000000 | 50.0000000 + 1401-06-01 | 40 | .0000000 | 4 | 1.0000000 | 700 | .9090909 | .0000000 | 50.0000000 + 1401-06-01 | 40 | .0000000 | 4 | 1.0000000 | 800 | .9090909 | .0000000 | 50.0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty),floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc rows between current row and 1 following ); -- mvd 3->7; + dt | qty | pn | pn | qty | qty | to_char +------------+------+-----+-----+------+------+------------------- + 1401-05-02 | 1 | 300 | 300 | 1 | 1 | .0000000 + 1401-06-01 | 1 | 400 | 400 | 1 | 1 | .0000000 + 1401-06-01 | 1 | 400 | 400 | 1 | 1 | .0000000 + 1401-06-01 | 12 | 500 | 500 | 12 | 12 | .0000000 + 1401-06-01 | 12 | 500 | 500 | 12 | 12 | .0000000 + 1401-06-01 | 1 | 800 | 800 | 1 | 1 | .0000000 + 1401-01-01 | 1100 | 100 | 100 | 1100 | 1100 | 1.0000000 + 1401-05-01 | 1 | 100 | 100 | 1 | 1 | .0000000 + 1401-03-01 | 1 | 200 | 200 | 1 | 1 | 1.0000000 + 1401-04-01 | 1 | 200 | 200 | 1 | 1 | .0000000 + 1401-06-01 | 12 | 600 | 600 | 12 | 12 | .0000000 + 1401-06-01 | 1 | 700 | 700 | 1 | 1 | .0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn+ow_sale.pn),floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty*ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows between current row and 2 following ), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty order by ow_sale.pn desc), +win4 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.vn desc); -- mvd 3,4,5->2; 1,3,4->6; 1,3,4->7; 1,9,4,5->8; 1,3,4->10; 1,3,4->11; + cn | to_char | dt | vn | pn | to_char | to_char | to_char | qty | to_char | to_char +----+-------------------+------------+----+-----+-------------------+-------------------+-------------------+------+-------------------+------------------- + 1 | .0000000 | 1401-03-01 | 10 | 200 | .0000000 | 1.0000000 | 1.0000000 | 1 | .0000000 | 1.0000000 + 1 | .0000000 | 1401-05-02 | 30 | 300 | .0000000 | 1.0000000 | 1.0000000 | 1 | .0000000 | 1.0000000 + 1 | .0000000 | 1401-06-01 | 30 | 500 | .0000000 | .3333333 | 1.0000000 | 12 | 1.0000000 | 1.0000000 + 3 | .0000000 | 1401-06-01 | 30 | 500 | .0000000 | .6666667 | 1.0000000 | 12 | .0000000 | 2.0000000 + 3 | .0000000 | 1401-06-01 | 30 | 600 | .0000000 | 1.0000000 | 1.0000000 | 12 | .0000000 | 3.0000000 + 4 | .0000000 | 1401-06-01 | 40 | 700 | .0000000 | .5000000 | 1.0000000 | 1 | .0000000 | 1.0000000 + 4 | .0000000 | 1401-06-01 | 40 | 800 | .0000000 | 1.0000000 | 1.0000000 | 1 | .0000000 | 2.0000000 + 1 | .0000000 | 1401-06-01 | 50 | 400 | .0000000 | .5000000 | 1.0000000 | 1 | .0000000 | 1.0000000 + 2 | .0000000 | 1401-06-01 | 50 | 400 | .0000000 | 1.0000000 | 1.0000000 | 1 | .0000000 | 2.0000000 + 1 | .0000000 | 1401-05-01 | 20 | 100 | .0000000 | 1.0000000 | 1.0000000 | 1 | .0000000 | 1.0000000 + 2 | .0000000 | 1401-01-01 | 40 | 100 | .0000000 | 1.0000000 | 1.0000000 | 1100 | .0000000 | 1.0000000 + 3 | .0000000 | 1401-04-01 | 40 | 200 | .0000000 | 1.0000000 | 1.0000000 | 1 | .0000000 | 1.0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn asc rows between current row and unbounded following ); -- mvd 3->2; + pn | to_char | vn +-----+-------------------+---- + 200 | .0000000 | 10 + 100 | .0000000 | 20 + 300 | 1.0000000 | 30 + 500 | 1.0000000 | 30 + 500 | 1.0000000 | 30 + 600 | .0000000 | 30 + 100 | 1.0000000 | 40 + 200 | 1.0000000 | 40 + 700 | 1.0000000 | 40 + 800 | .0000000 | 40 + 400 | .0000000 | 50 + 400 | .0000000 | 50 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn-ow_sale.prc),floor(ow_sale.qty/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn/ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.qty)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.vn desc rows between current row and unbounded following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc); -- mvd 4,2->3; 1->5; 1,2,7->6; 4,2->8; 1->9; 1->10; + cn | vn | to_char | prc | to_char | to_char | qty | to_char | to_char | to_char +----+----+-------------------+------+-------------------+-------------------+------+-------------------+-------------------+------------------- + 1 | 10 | .0000000 | 0 | .0000000 | .0000000 | 1 | 400.0000000 | 1.0000000 | 9.0000000 + 1 | 30 | .0000000 | 5 | .0000000 | .0000000 | 12 | 600.0000000 | 1.0000000 | 9.0000000 + 1 | 20 | .0000000 | 0 | .0000000 | .0000000 | 1 | 400.0000000 | 1.0000000 | 9.0000000 + 1 | 30 | .0000000 | 0 | .0000000 | .0000000 | 1 | 400.0000000 | 1.0000000 | 9.0000000 + 1 | 50 | .0000000 | 0 | .0000000 | .0000000 | 1 | 400.0000000 | 1.0000000 | 9.0000000 + 2 | 40 | .0000000 | 2400 | .4545455 | 2.0000000 | 1100 | 100.0000000 | 6.0000000 | -1060.0000000 + 2 | 50 | .0000000 | 0 | .4545455 | .0000000 | 1 | 400.0000000 | 6.0000000 | -1060.0000000 + 3 | 30 | .0000000 | 5 | .6363636 | .0000000 | 12 | 600.0000000 | 8.0000000 | -1060.0000000 + 3 | 30 | .0000000 | 5 | .6363636 | .0000000 | 12 | 600.0000000 | 8.0000000 | -1060.0000000 + 3 | 40 | .0000000 | 0 | .6363636 | .0000000 | 1 | 400.0000000 | 8.0000000 | -1060.0000000 + 4 | 40 | .0000000 | 1 | .9090909 | .0000000 | 1 | 800.0000000 | 11.0000000 | -1060.0000000 + 4 | 40 | .0000000 | 1 | .9090909 | .0000000 | 1 | 800.0000000 | 11.0000000 | -1060.0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows between 9 following and floor(ow_sale.prc) following ); -- mvd 2,7,8,3,1->6; + qty | prc | vn | vn | vn | to_char | cn | dt +------+------+----+----+----+-------------------+----+------------ + 1 | 0 | 40 | 40 | 40 | .0000000 | 3 | 1401-04-01 + 1 | 0 | 20 | 20 | 20 | .0000000 | 1 | 1401-05-01 + 1 | 1 | 40 | 40 | 40 | .0000000 | 4 | 1401-06-01 + 1 | 1 | 40 | 40 | 40 | .0000000 | 4 | 1401-06-01 + 12 | 5 | 30 | 30 | 30 | .0000000 | 1 | 1401-06-01 + 12 | 5 | 30 | 30 | 30 | .0000000 | 3 | 1401-06-01 + 12 | 5 | 30 | 30 | 30 | .0000000 | 3 | 1401-06-01 + 1100 | 2400 | 40 | 40 | 40 | .0000000 | 2 | 1401-01-01 + 1 | 0 | 10 | 10 | 10 | .0000000 | 1 | 1401-03-01 + 1 | 0 | 30 | 30 | 30 | .0000000 | 1 | 1401-05-02 + 1 | 0 | 50 | 50 | 50 | .0000000 | 1 | 1401-06-01 + 1 | 0 | 50 | 50 | 50 | .0000000 | 2 | 1401-06-01 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc+ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.vn) following and floor(ow_sale.qty*ow_sale.pn) following ), +win2 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc); -- mvd 5,6,2,7->4; 1,2->8; + dt | vn | vn | to_char | prc | cn | qty | to_char +------------+----+----+-------------------+------+----+------+------------------- + 1401-06-01 | 50 | 50 | .0000000 | 0 | 2 | 1 | .0000000 + 1401-06-01 | 30 | 30 | .0000000 | 5 | 1 | 12 | .0000000 + 1401-06-01 | 30 | 30 | .0000000 | 5 | 3 | 12 | .0000000 + 1401-06-01 | 30 | 30 | .0000000 | 5 | 3 | 12 | .0000000 + 1401-03-01 | 10 | 10 | .0000000 | 0 | 1 | 1 | .0000000 + 1401-05-01 | 20 | 20 | .0000000 | 0 | 1 | 1 | .0000000 + 1401-05-02 | 30 | 30 | .0000000 | 0 | 1 | 1 | .0000000 + 1401-06-01 | 50 | 50 | .0000000 | 0 | 1 | 1 | .0000000 + 1401-04-01 | 40 | 40 | .0000000 | 0 | 3 | 1 | .0000000 + 1401-06-01 | 40 | 40 | .0000000 | 1 | 4 | 1 | .0000000 + 1401-06-01 | 40 | 40 | .0000000 | 1 | 4 | 1 | .0000000 + 1401-01-01 | 40 | 40 | .0000000 | 2400 | 2 | 1100 | .0000000 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn-ow_sale.qty),floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.pn desc rows between floor(ow_sale.cn) following and unbounded following ); -- mvd 3,4,5,6,7,1->2; + pn | to_char | prc | cn | dt | vn | qty +-----+-------------------+------+----+------------+----+------ + 200 | .0000000 | 0 | 3 | 1401-04-01 | 40 | 1 + 100 | .0000000 | 0 | 1 | 1401-05-01 | 20 | 1 + 300 | .0000000 | 0 | 1 | 1401-05-02 | 30 | 1 + 400 | .0000000 | 0 | 1 | 1401-06-01 | 50 | 1 + 400 | .0000000 | 0 | 2 | 1401-06-01 | 50 | 1 + 700 | .0000000 | 1 | 4 | 1401-06-01 | 40 | 1 + 600 | .0000000 | 5 | 3 | 1401-06-01 | 30 | 12 + 200 | .0000000 | 0 | 1 | 1401-03-01 | 10 | 1 + 800 | .0000000 | 1 | 4 | 1401-06-01 | 40 | 1 + 500 | .0000000 | 5 | 1 | 1401-06-01 | 30 | 12 + 500 | .0000000 | 5 | 3 | 1401-06-01 | 30 | 12 + 100 | .0000000 | 2400 | 2 | 1401-01-01 | 40 | 1100 +(12 rows) + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.vn) following and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.vn) following and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.qty order by ow_sale.cn desc), +win3 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc), +win4 as (order by ow_sale.cn asc); -- mvd 2,6,3,8->7; 2,6,1,8->9; 2,3,8->10; 2->11; 2,6,3,8->12; + qty | cn | vn | prc | vn | dt | to_char | pn | to_char | to_char | to_char | to_char +------+----+----+------+----+------------+-------------------+-----+-------------------+-------------------+-------------------+------------------- + 1 | 1 | 10 | 0 | 10 | 1401-03-01 | .0000000 | 200 | 1.0000000 | .0000000 | 1.0000000 | .0000000 + 1 | 1 | 20 | 0 | 20 | 1401-05-01 | .0000000 | 100 | 1.0000000 | .0000000 | 1.0000000 | .0000000 + 1 | 1 | 30 | 0 | 30 | 1401-05-02 | .0000000 | 300 | 1.0000000 | .0000000 | 1.0000000 | .0000000 + 1 | 1 | 50 | 0 | 50 | 1401-06-01 | .0000000 | 400 | 2.0000000 | .0000000 | 1.0000000 | .0000000 + 12 | 1 | 30 | 5 | 30 | 1401-06-01 | .0000000 | 500 | 2.0000000 | .0000000 | 1.0000000 | .0000000 + 1 | 2 | 50 | 0 | 50 | 1401-06-01 | .0000000 | 400 | 1.0000000 | .0000000 | 6.0000000 | .0000000 + 1100 | 2 | 40 | 2400 | 40 | 1401-01-01 | .0000000 | 100 | 1.0000000 | .0000000 | 6.0000000 | .0000000 + 12 | 3 | 30 | 5 | 30 | 1401-06-01 | .0000000 | 500 | 1.0000000 | .0000000 | 8.0000000 | .0000000 + 1 | 3 | 40 | 0 | 40 | 1401-04-01 | .0000000 | 200 | 1.0000000 | .0000000 | 8.0000000 | .0000000 + 12 | 3 | 30 | 5 | 30 | 1401-06-01 | .0000000 | 600 | 1.0000000 | .0000000 | 8.0000000 | .0000000 + 1 | 4 | 40 | 1 | 40 | 1401-06-01 | .0000000 | 700 | 1.0000000 | .0000000 | 11.0000000 | .0000000 + 1 | 4 | 40 | 1 | 40 | 1401-06-01 | .0000000 | 800 | 1.0000000 | .0000000 | 11.0000000 | .0000000 +(12 rows) + +-- REGR_SLOPE() function with NULL OVER() clause -- +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (); -- mvd 3->3; + vn | prc | to_char +----+------+------------------- + 50 | 0 | -.1360261 + 40 | 1 | -.1360261 + 20 | 0 | -.1360261 + 10 | 0 | -.1360261 + 40 | 0 | -.1360261 + 30 | 5 | -.1360261 + 30 | 0 | -.1360261 + 50 | 0 | -.1360261 + 30 | 5 | -.1360261 + 30 | 5 | -.1360261 + 40 | 2400 | -.1360261 + 40 | 1 | -.1360261 +(12 rows) + +-- REGR_SLOPE() function with NULL OVER() clause in combination with other window functions -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn/ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.qty,ow_sale.vn order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (), +win2 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.vn desc); -- mvd 2->2; 4,5->3; 2->6; 4,5->7; + prc | to_char | to_char | vn | qty | to_char | to_char +------+-------------------+-------------------+----+------+-------------------+------------------- + 0 | .0000000 | .0000000 | 10 | 1 | 50.0000000 | 1.0000000 + 0 | .0000000 | .0000000 | 20 | 1 | 50.0000000 | 1.0000000 + 0 | .0000000 | .0000000 | 30 | 1 | 50.0000000 | 1.0000000 + 1 | .0000000 | .0000000 | 40 | 1 | 50.0000000 | 1.0000000 + 0 | .0000000 | .0000000 | 40 | 1 | 50.0000000 | 2.0000000 + 1 | .0000000 | .0000000 | 40 | 1 | 50.0000000 | 3.0000000 + 0 | .0000000 | .0000000 | 50 | 1 | 50.0000000 | 1.0000000 + 0 | .0000000 | .0000000 | 50 | 1 | 50.0000000 | 2.0000000 + 5 | .0000000 | .0000000 | 30 | 12 | 50.0000000 | 1.0000000 + 5 | .0000000 | .0000000 | 30 | 12 | 50.0000000 | 2.0000000 + 5 | .0000000 | .0000000 | 30 | 12 | 50.0000000 | 3.0000000 + 2400 | .0000000 | .0000000 | 40 | 1100 | 50.0000000 | 1.0000000 +(12 rows) + +-- REGR_SLOPE() function with OVER() clause having ONLY PARTITION BY -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn-ow_sale.qty),floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.prc); -- mvd 3,1,5,6->4; + cn | dt | prc | to_char | qty | pn +----+------------+------+-------------------+------+----- + 1 | 1401-05-02 | 0 | .0000000 | 1 | 300 + 1 | 1401-06-01 | 0 | .0000000 | 1 | 400 + 3 | 1401-06-01 | 5 | .0000000 | 12 | 600 + 4 | 1401-06-01 | 1 | .0000000 | 1 | 800 + 1 | 1401-05-01 | 0 | .0000000 | 1 | 100 + 2 | 1401-01-01 | 2400 | .0000000 | 1100 | 100 + 1 | 1401-03-01 | 0 | .0000000 | 1 | 200 + 3 | 1401-04-01 | 0 | .0000000 | 1 | 200 + 2 | 1401-06-01 | 0 | .0000000 | 1 | 400 + 1 | 1401-06-01 | 5 | .0000000 | 12 | 500 + 3 | 1401-06-01 | 5 | .0000000 | 12 | 500 + 4 | 1401-06-01 | 1 | .0000000 | 1 | 700 +(12 rows) + +-- REGR_SLOPE() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty+ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.vn), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.pn order by ow_sale.cn asc); -- mvd 6,7->5; 2->8; 2->9; 11,2->10; + qty | pn | dt | pn | to_char | prc | vn | to_char | to_char | to_char | cn +------+-----+------------+-----+-------------------+------+----+-------------------+-------------------+-------------------+---- + 1 | 800 | 1401-06-01 | 800 | .0000000 | 1 | 40 | .0833333 | 1.0000000 | .0000000 | 4 + 1 | 700 | 1401-06-01 | 700 | .0000000 | 1 | 40 | .1666667 | 2.0000000 | .0000000 | 4 + 12 | 600 | 1401-06-01 | 600 | .0000000 | 5 | 30 | .2500000 | 3.0000000 | .0000000 | 3 + 12 | 500 | 1401-06-01 | 500 | .0000000 | 5 | 30 | .4166667 | 4.0000000 | 1.0000000 | 3 + 12 | 500 | 1401-06-01 | 500 | .0000000 | 5 | 30 | .4166667 | 4.0000000 | .0000000 | 1 + 1 | 400 | 1401-06-01 | 400 | .0000000 | 0 | 50 | .5833333 | 5.0000000 | 1.0000000 | 2 + 1 | 400 | 1401-06-01 | 400 | .0000000 | 0 | 50 | .5833333 | 5.0000000 | .0000000 | 1 + 1 | 300 | 1401-05-02 | 300 | .0000000 | 0 | 30 | .6666667 | 6.0000000 | .0000000 | 1 + 1 | 200 | 1401-04-01 | 200 | .0000000 | 0 | 40 | .8333333 | 7.0000000 | 1.0000000 | 3 + 1 | 200 | 1401-03-01 | 200 | .0000000 | 0 | 10 | .8333333 | 7.0000000 | .0000000 | 1 + 1 | 100 | 1401-05-01 | 100 | .0000000 | 0 | 20 | 1.0000000 | 8.0000000 | .0000000 | 1 + 1100 | 100 | 1401-01-01 | 100 | .0000000 | 2400 | 40 | 1.0000000 | 8.0000000 | 1.0000000 | 2 +(12 rows) + +-- REGR_SLOPE() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc,ow_sale.pn desc); -- mvd 1,3->5; + vn | prc | pn | qty | to_char +----+------+-----+------+------------------- + 50 | 0 | 400 | 1 | .0000000 + 50 | 0 | 400 | 1 | .0000000 + 40 | 1 | 800 | 1 | -1.0000000 + 40 | 1 | 700 | 1 | -1.0000000 + 40 | 0 | 200 | 1 | -1.0000000 + 40 | 2400 | 100 | 1100 | -.3501379 + 30 | 5 | 600 | 12 | -.3564470 + 30 | 5 | 500 | 12 | -.3531781 + 30 | 5 | 500 | 12 | -.3531781 + 30 | 0 | 300 | 1 | -.3556472 + 20 | 0 | 100 | 1 | -.3803113 + 10 | 0 | 200 | 1 | -.3882111 +(12 rows) + +-- REGR_SLOPE() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(order by ow_sale.pn asc,ow_sale.cn asc,ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.pn asc,ow_sale.cn asc,ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc,ow_sale.cn asc,ow_sale.pn desc), +win2 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc); -- mvd 4,2->7; 4,2->8; 4,2->9; 5->10; 5->11; + prc | pn | qty | cn | vn | vn | to_char | to_char | to_char | to_char | to_char +------+-----+------+----+----+----+-------------------+-------------------+-------------------+-------------------+------------------- + 0 | 100 | 1 | 1 | 20 | 20 | .0000000 | .0000000 | .0833333 | .0000000 | 1.0000000 + 2400 | 100 | 1100 | 2 | 40 | 40 | 1.0000000 | 2400.0000000 | .1666667 | .0000000 | 1.0000000 + 0 | 200 | 1 | 1 | 10 | 10 | 1.0000000 | 2400.0000000 | .2500000 | .0000000 | 1.0000000 + 0 | 200 | 1 | 3 | 40 | 40 | 1.0000000 | 2400.0000000 | .3333333 | .0000000 | 2.0000000 + 0 | 300 | 1 | 1 | 30 | 30 | 1.0000000 | 2400.0000000 | .4166667 | .0000000 | 1.0000000 + 0 | 400 | 1 | 1 | 50 | 50 | 1.0000000 | 2400.0000000 | .5000000 | .0000000 | 1.0000000 + 0 | 400 | 1 | 2 | 50 | 50 | 1.0000000 | 2400.0000000 | .5833333 | .0000000 | 2.0000000 + 5 | 500 | 12 | 1 | 30 | 30 | 1.0000000 | 2400.0000000 | .6666667 | .0000000 | 2.0000000 + 5 | 500 | 12 | 3 | 30 | 30 | 1.0000000 | 2400.0000000 | .7500000 | .0000000 | 3.0000000 + 5 | 600 | 12 | 3 | 30 | 30 | 1.0000000 | 2400.0000000 | .8333333 | .0000000 | 4.0000000 + 1 | 700 | 1 | 4 | 40 | 40 | 1.0000000 | 2400.0000000 | .9166667 | .0000000 | 3.0000000 + 1 | 800 | 1 | 4 | 40 | 40 | 1.0000000 | 2400.0000000 | 1.0000000 | .0000000 | 4.0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn/ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range unbounded preceding ); -- mvd 3->2; + cn | to_char | pn +----+-------------------+----- + 4 | .0000000 | 800 + 4 | .0000000 | 700 + 3 | .1900000 | 600 + 1 | .1452941 | 500 + 3 | .1452941 | 500 + 1 | -.0031250 | 400 + 2 | -.0031250 | 400 + 1 | -.0061538 | 300 + 1 | -.0004396 | 200 + 3 | -.0004396 | 200 + 1 | .0168966 | 100 + 2 | .0168966 | 100 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range floor(ow_sale.vn) preceding ); -- mvd 3->2; + qty | to_char | pn +------+-------------------+----- + 1 | .0000000 | 100 + 1100 | .0000000 | 100 + 1 | .0000000 | 200 + 1 | .0000000 | 200 + 1 | .0000000 | 300 + 1 | .0000000 | 400 + 1 | .0000000 | 400 + 12 | .0000000 | 500 + 12 | .0000000 | 500 + 12 | .0000000 | 600 + 1 | .0000000 | 700 + 1 | .0000000 | 800 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn*ow_sale.vn),floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.prc)) OVER(order by ow_sale.cn desc range 0 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range 0 preceding ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.vn asc), +win3 as (order by ow_sale.pn asc); -- mvd 5->4; 1,7,3->6; 5->8; 3->9; + prc | qty | pn | to_char | cn | to_char | vn | to_char | to_char +------+------+-----+-------------------+----+-------------------+----+-------------------+------------------- + 2400 | 1100 | 100 | 106.6666667 | 2 | 1.0000000 | 40 | 2.0000000 | 1.0000000 + 0 | 1 | 100 | 44.0000000 | 1 | 1.0000000 | 20 | 5.0000000 | 1.0000000 + 0 | 1 | 200 | 73.5779060 | 3 | 1.0000000 | 40 | 3.0000000 | 2.0000000 + 0 | 1 | 200 | 44.0000000 | 1 | 1.0000000 | 10 | 5.0000000 | 2.0000000 + 0 | 1 | 300 | 44.0000000 | 1 | 1.0000000 | 30 | 5.0000000 | 3.0000000 + 0 | 1 | 400 | 44.0000000 | 1 | 2.0000000 | 50 | 5.0000000 | 4.0000000 + 0 | 1 | 400 | 106.6666667 | 2 | 1.0000000 | 50 | 2.0000000 | 4.0000000 + 5 | 12 | 500 | 73.5779060 | 3 | 2.0000000 | 30 | 3.0000000 | 5.0000000 + 5 | 12 | 500 | 44.0000000 | 1 | 1.0000000 | 30 | 5.0000000 | 5.0000000 + 5 | 12 | 600 | 73.5779060 | 3 | 1.0000000 | 30 | 3.0000000 | 6.0000000 + 1 | 1 | 700 | 160.0000000 | 4 | 1.0000000 | 40 | 2.0000000 | 7.0000000 + 1 | 1 | 800 | 160.0000000 | 4 | 1.0000000 | 40 | 2.0000000 | 8.0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range current row ); -- mvd 1->3; + cn | qty | to_char +----+------+------------------- + 1 | 1 | .5000000 + 1 | 1 | .5000000 + 1 | 1 | .5000000 + 1 | 1 | .5000000 + 1 | 12 | .5000000 + 2 | 1100 | -.0041667 + 2 | 1 | -.0041667 + 3 | 1 | -2.0000000 + 3 | 12 | -2.0000000 + 3 | 12 | -2.0000000 + 4 | 1 | .0000000 + 4 | 1 | .0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.prc order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.pn)) OVER(partition by ow_sale.vn order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range current row ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.prc order by ow_sale.cn desc), +win3 as (partition by ow_sale.vn order by ow_sale.cn desc); -- mvd 5->4; 7,3,8,5->6; 7,3,8,5->9; 3,1->10; 3,1->11; 3,1->12; + vn | qty | cn | to_char | pn | to_char | prc | dt | to_char | to_char | to_char | to_char +----+------+----+-------------------+-----+-------------------+------+------------+-------------------+-------------------+-------------------+------------------- + 40 | 1 | 4 | .0000000 | 800 | 1.0000000 | 1 | 1401-06-01 | 1.0000000 | 1.0000000 | 1600.0000000 | 1.0000000 + 40 | 1 | 4 | .0000000 | 700 | 1.0000000 | 1 | 1401-06-01 | 1.0000000 | 1.0000000 | 1600.0000000 | 1.0000000 + 30 | 12 | 3 | .0000000 | 600 | 1.0000000 | 5 | 1401-06-01 | 1.0000000 | 1.0000000 | 1200.0000000 | 1.0000000 + 30 | 12 | 3 | .0000000 | 500 | 1.0000000 | 5 | 1401-06-01 | 1.0000000 | 1.0000000 | 1200.0000000 | 1.0000000 + 30 | 12 | 1 | .0000000 | 500 | 2.0000000 | 5 | 1401-06-01 | 2.0000000 | 2.0000000 | 1200.0000000 | 2.0000000 + 50 | 1 | 2 | .0000000 | 400 | 1.0000000 | 0 | 1401-06-01 | 1.0000000 | 1.0000000 | 800.0000000 | 1.0000000 + 50 | 1 | 1 | .0000000 | 400 | 2.0000000 | 0 | 1401-06-01 | 2.0000000 | 2.0000000 | 800.0000000 | 2.0000000 + 30 | 1 | 1 | .0000000 | 300 | 1.0000000 | 0 | 1401-05-02 | 1.0000000 | 2.0000000 | 1200.0000000 | 2.0000000 + 40 | 1 | 3 | .0000000 | 200 | 1.0000000 | 0 | 1401-04-01 | 1.0000000 | 2.0000000 | 1600.0000000 | 2.0000000 + 10 | 1 | 1 | .0000000 | 200 | 1.0000000 | 0 | 1401-03-01 | 1.0000000 | 1.0000000 | 400.0000000 | 1.0000000 + 20 | 1 | 1 | 2400.0000000 | 100 | 1.0000000 | 0 | 1401-05-01 | 1.0000000 | 1.0000000 | 200.0000000 | 1.0000000 + 40 | 1100 | 2 | 2400.0000000 | 100 | 1.0000000 | 2400 | 1401-01-01 | 1.0000000 | 3.0000000 | 1600.0000000 | 3.0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.prc) preceding ); -- mvd 3->6; + vn | prc | cn | cn | pn | to_char +----+------+----+----+-----+------------------- + 20 | 0 | 1 | 1 | 100 | .0000000 + 10 | 0 | 1 | 1 | 200 | .0000000 + 30 | 0 | 1 | 1 | 300 | .0000000 + 50 | 0 | 1 | 1 | 400 | .0000000 + 30 | 5 | 1 | 1 | 500 | .0000000 + 40 | 2400 | 2 | 2 | 100 | .0000000 + 50 | 0 | 2 | 2 | 400 | -3.6111111 + 40 | 0 | 3 | 3 | 200 | -4.2592593 + 30 | 5 | 3 | 3 | 600 | .0000000 + 30 | 5 | 3 | 3 | 500 | .0000000 + 40 | 1 | 4 | 4 | 700 | -4.2592593 + 40 | 1 | 4 | 4 | 800 | -4.2592593 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc),floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and current row ); -- mvd 5->4; + qty | qty | qty | to_char | vn +------+------+------+-------------------+---- + 1 | 1 | 1 | .0000000 | 50 + 1 | 1 | 1 | .0000000 | 50 + 1100 | 1100 | 1100 | -.3154025 | 40 + 1 | 1 | 1 | -.3154025 | 40 + 1 | 1 | 1 | -.3154025 | 40 + 1 | 1 | 1 | -.3154025 | 40 + 12 | 12 | 12 | -.2311176 | 30 + 1 | 1 | 1 | -.2311176 | 30 + 12 | 12 | 12 | -.2311176 | 30 + 12 | 12 | 12 | -.2311176 | 30 + 1 | 1 | 1 | -.1877345 | 20 + 1 | 1 | 1 | -.1613850 | 10 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty/ow_sale.vn)) OVER(order by ow_sale.pn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.vn order by ow_sale.cn desc); -- mvd 3->4; 3->5; 3->6; 8,2->7; 3->9; + prc | vn | pn | to_char | to_char | to_char | to_char | cn | to_char +------+----+-----+-------------------+-------------------+-------------------+-------------------+----+------------------- + 2400 | 40 | 100 | .0083333 | 27.0000000 | .0000000 | 4.0000000 | 2 | 1.0000000 + 0 | 10 | 200 | .0069444 | 27.0000000 | 3.0000000 | 1.0000000 | 1 | 2.0000000 + 0 | 40 | 200 | .0069444 | 27.0000000 | .0000000 | 3.0000000 | 3 | 3.0000000 + 0 | 20 | 100 | .0083333 | 27.0000000 | .0000000 | 1.0000000 | 1 | 4.0000000 + 0 | 30 | 300 | .0062500 | 27.0000000 | .0000000 | 3.0000000 | 1 | 5.0000000 + 0 | 50 | 400 | .0027778 | 27.0000000 | .0000000 | 2.0000000 | 1 | 6.0000000 + 0 | 50 | 400 | .0027778 | 27.0000000 | .0000000 | 1.0000000 | 2 | 7.0000000 + 5 | 30 | 500 | .0031217 | 27.0000000 | .0000000 | 3.0000000 | 1 | 8.0000000 + 5 | 30 | 500 | .0031217 | 27.0000000 | .0000000 | 1.0000000 | 3 | 9.0000000 + 5 | 30 | 600 | .0032365 | 27.0000000 | .0000000 | 1.0000000 | 3 | 10.0000000 + 1 | 40 | 700 | .0029113 | 27.0000000 | .0000000 | 1.0000000 | 4 | 11.0000000 + 1 | 40 | 800 | .0026453 | 27.0000000 | .0000000 | 1.0000000 | 4 | 12.0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and floor(ow_sale.prc) following ); -- mvd 5->4; + pn | pn | pn | to_char | vn +-----+-----+-----+-------------------+---- + 200 | 200 | 200 | .0000000 | 10 + 100 | 100 | 100 | -10.0000000 | 20 + 600 | 600 | 600 | 17.1428571 | 30 + 300 | 300 | 300 | 17.1428571 | 30 + 500 | 500 | 500 | 17.1428571 | 30 + 500 | 500 | 500 | 17.1428571 | 30 + 100 | 100 | 100 | 6.0335196 | 40 + 700 | 700 | 700 | 10.1123596 | 40 + 800 | 800 | 800 | 10.1123596 | 40 + 200 | 200 | 200 | 10.1123596 | 40 + 400 | 400 | 400 | 6.0335196 | 50 + 400 | 400 | 400 | 6.0335196 | 50 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and unbounded following ); -- mvd 1->4; + pn | prc | cn | to_char +-----+------+----+------------------- + 100 | 0 | 1 | .0346369 + 100 | 2400 | 2 | .0346369 + 200 | 0 | 1 | .0346369 + 200 | 0 | 3 | .0346369 + 300 | 0 | 1 | .0346369 + 400 | 0 | 1 | .0346369 + 400 | 0 | 2 | .0346369 + 500 | 5 | 1 | .0346369 + 500 | 5 | 3 | .0346369 + 600 | 5 | 3 | .0346369 + 700 | 1 | 4 | .0346369 + 800 | 1 | 4 | .0346369 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.cn asc); -- mvd 3->2; 3->4; + pn | to_char | cn | to_char +-----+-------------------+----+------------------- + 800 | .0120690 | 4 | 12.0000000 + 700 | .0120690 | 4 | 11.0000000 + 200 | .0120690 | 3 | 8.0000000 + 500 | .0120690 | 3 | 10.0000000 + 600 | .0120690 | 3 | 9.0000000 + 400 | .0120690 | 2 | 7.0000000 + 100 | .0120690 | 2 | 6.0000000 + 200 | .0120690 | 1 | 1.0000000 + 500 | .0120690 | 1 | 5.0000000 + 400 | .0120690 | 1 | 4.0000000 + 300 | .0120690 | 1 | 3.0000000 + 100 | .0120690 | 1 | 2.0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn*ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.qty) preceding and floor(ow_sale.prc) preceding ); -- mvd 4->3; + vn | dt | to_char | pn +----+------------+-------------------+----- + 20 | 1401-05-01 | 96000.0000000 | 100 + 40 | 1401-01-01 | .0000000 | 100 + 10 | 1401-03-01 | .0000000 | 200 + 40 | 1401-04-01 | .0000000 | 200 + 30 | 1401-05-02 | .0000000 | 300 + 50 | 1401-06-01 | .0000000 | 400 + 50 | 1401-06-01 | .0000000 | 400 + 30 | 1401-06-01 | .0000000 | 500 + 30 | 1401-06-01 | .0000000 | 500 + 30 | 1401-06-01 | .0000000 | 600 + 40 | 1401-06-01 | .0000000 | 700 + 40 | 1401-06-01 | .0000000 | 800 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn+ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.pn+ow_sale.pn) preceding and floor(ow_sale.qty+ow_sale.pn) preceding ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.vn order by ow_sale.vn desc); -- mvd 7->6; 1->8; 1->9; 5,7->10; + cn | cn | pn | pn | qty | to_char | vn | to_char | to_char | to_char +----+----+-----+-----+------+-------------------+----+-------------------+-------------------+------------------- + 1 | 1 | 200 | 200 | 1 | .0000000 | 10 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 500 | 500 | 12 | .0000000 | 30 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 300 | 300 | 1 | .0000000 | 30 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 100 | 100 | 1 | .0000000 | 20 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 400 | 400 | 1 | .0000000 | 50 | 1.0000000 | 1.0000000 | 1.0000000 + 2 | 2 | 400 | 400 | 1 | .0000000 | 50 | 6.0000000 | 2.0000000 | 1.0000000 + 2 | 2 | 100 | 100 | 1100 | .0000000 | 40 | 6.0000000 | 2.0000000 | 1.0000000 + 3 | 3 | 500 | 500 | 12 | .0000000 | 30 | 8.0000000 | 3.0000000 | 1.0000000 + 3 | 3 | 200 | 200 | 1 | .0000000 | 40 | 8.0000000 | 3.0000000 | 1.0000000 + 3 | 3 | 600 | 600 | 12 | .0000000 | 30 | 8.0000000 | 3.0000000 | 1.0000000 + 4 | 4 | 700 | 700 | 1 | .0000000 | 40 | 11.0000000 | 4.0000000 | 1.0000000 + 4 | 4 | 800 | 800 | 1 | .0000000 | 40 | 11.0000000 | 4.0000000 | 1.0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 3 preceding and current row ); -- mvd 1->5; + pn | qty | qty | qty | to_char +-----+------+------+------+------------------- + 100 | 1 | 1 | 1 | .0000000 + 100 | 1100 | 1100 | 1100 | .0000000 + 200 | 1 | 1 | 1 | .0000000 + 200 | 1 | 1 | 1 | .0000000 + 300 | 1 | 1 | 1 | .0000000 + 400 | 1 | 1 | 1 | .0000000 + 400 | 1 | 1 | 1 | .0000000 + 500 | 12 | 12 | 12 | .0000000 + 500 | 12 | 12 | 12 | .0000000 + 600 | 12 | 12 | 12 | .0000000 + 700 | 1 | 1 | 1 | .0000000 + 800 | 1 | 1 | 1 | .0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 4 preceding and current row ), +win2 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.cn order by ow_sale.pn desc); -- mvd 1->4; 3,6,7,1->5; + pn | pn | prc | to_char | to_char | cn | vn +-----+-----+------+-------------------+-------------------+----+---- + 100 | 100 | 0 | .0000000 | .0000000 | 1 | 20 + 100 | 100 | 2400 | .0000000 | .0000000 | 2 | 40 + 200 | 200 | 0 | .0000000 | .0000000 | 1 | 10 + 200 | 200 | 0 | .0000000 | .0000000 | 3 | 40 + 300 | 300 | 0 | .0000000 | .0000000 | 1 | 30 + 400 | 400 | 0 | .0000000 | .0000000 | 1 | 50 + 400 | 400 | 0 | .0000000 | .0000000 | 2 | 50 + 500 | 500 | 5 | .0000000 | .0000000 | 1 | 30 + 500 | 500 | 5 | .0000000 | .0000000 | 3 | 30 + 600 | 600 | 5 | .0000000 | .0000000 | 3 | 30 + 700 | 700 | 1 | .0000000 | .0000000 | 4 | 40 + 800 | 800 | 1 | .0000000 | .0000000 | 4 | 40 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc+ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 3 preceding and 0 following ); -- mvd 3->2; + qty | to_char | cn +------+-------------------+---- + 1 | 1.0113636 | 1 + 1 | 1.0113636 | 1 + 1 | 1.0113636 | 1 + 12 | 1.0113636 | 1 + 1 | 1.0113636 | 1 + 1100 | 13.7553191 | 2 + 1 | 13.7553191 | 2 + 12 | 12.8829787 | 3 + 1 | 12.8829787 | 3 + 12 | 12.8829787 | 3 + 1 | 10.3513966 | 4 + 1 | 10.3513966 | 4 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc-ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn+ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn/ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.qty*ow_sale.cn) preceding and floor(ow_sale.cn/ow_sale.qty) following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 5->4; 5->6; 8->7; 8->9; 8->10; + qty | qty | qty | to_char | cn | to_char | to_char | vn | to_char | to_char +------+------+------+-------------------+----+-------------------+-------------------+----+-------------------+------------------- + 1100 | 1100 | 1100 | .5432197 | 2 | 2400.0000000 | .0000000 | 40 | .0000000 | 1.0000000 + 1 | 1 | 1 | .5426811 | 1 | 2400.0000000 | 42.0000000 | 10 | .0000000 | 2.0000000 + 1 | 1 | 1 | .5430219 | 3 | 2400.0000000 | 11.0000000 | 40 | .0000000 | 3.0000000 + 1 | 1 | 1 | .5426811 | 1 | 2400.0000000 | 43.0000000 | 20 | .0000000 | 4.0000000 + 1 | 1 | 1 | .5426811 | 1 | 2400.0000000 | 21.0000000 | 30 | .0000000 | 5.0000000 + 1 | 1 | 1 | .5426811 | 1 | 2400.0000000 | 31.0000000 | 50 | .0000000 | 6.0000000 + 1 | 1 | 1 | .5430219 | 2 | 2400.0000000 | 51.0000000 | 50 | .0000000 | 7.0000000 + 12 | 12 | 12 | .5430219 | 1 | 2400.0000000 | .0000000 | 30 | .0000000 | 8.0000000 + 12 | 12 | 12 | -1.4655172 | 3 | 5.0000000 | .0000000 | 30 | .0000000 | 9.0000000 + 12 | 12 | 12 | -1.4655172 | 3 | 5.0000000 | .0000000 | 30 | .0000000 | 10.0000000 + 1 | 1 | 1 | .5430219 | 4 | 2400.0000000 | 33.0000000 | 40 | .0000000 | 11.0000000 + 1 | 1 | 1 | .5430219 | 4 | 2400.0000000 | 44.0000000 | 40 | .0000000 | 12.0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn/ow_sale.cn),floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 1 preceding and unbounded following ); -- mvd 1->5; + cn | pn | pn | vn | to_char +----+-----+-----+----+------------------- + 1 | 100 | 100 | 20 | .0000001 + 1 | 200 | 200 | 10 | .0000001 + 1 | 300 | 300 | 30 | .0000001 + 1 | 400 | 400 | 50 | .0000001 + 1 | 500 | 500 | 30 | .0000001 + 2 | 100 | 100 | 40 | .0000001 + 2 | 400 | 400 | 50 | .0000001 + 3 | 200 | 200 | 40 | .0000058 + 3 | 600 | 600 | 30 | .0000058 + 3 | 500 | 500 | 30 | .0000058 + 4 | 700 | 700 | 40 | -.0069930 + 4 | 800 | 800 | 40 | -.0069930 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(order by ow_sale.vn asc range between 0 preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 0 preceding and unbounded following ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.vn desc), +win4 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.vn desc); -- mvd 4->3; 4->5; 7->6; 4->8; 7->9; 4,11->10; + prc | dt | to_char | vn | to_char | to_char | cn | to_char | to_char | to_char | pn +------+------------+-------------------+----+-------------------+-------------------+----+-------------------+-------------------+-------------------+----- + 5 | 1401-06-01 | -76.2419355 | 30 | 10.0000000 | .0000000 | 1 | .8333333 | 5.0000000 | .0000000 | 500 + 0 | 1401-05-02 | -76.2419355 | 30 | 10.0000000 | .0000000 | 1 | .8333333 | 5.0000000 | .0000000 | 300 + 0 | 1401-03-01 | -24.1382979 | 10 | 12.0000000 | .0000000 | 1 | 1.0000000 | 5.0000000 | .0000000 | 200 + 0 | 1401-06-01 | 1.0000000 | 50 | 2.0000000 | .0000000 | 1 | .1666667 | 5.0000000 | .0000000 | 400 + 0 | 1401-05-01 | -44.8461538 | 20 | 11.0000000 | .0000000 | 1 | .9166667 | 5.0000000 | .0000000 | 100 + 0 | 1401-06-01 | 1.0000000 | 50 | 2.0000000 | .4545455 | 2 | .1666667 | 7.0000000 | .0000000 | 400 + 2400 | 1401-01-01 | -216.8181818 | 40 | 6.0000000 | .4545455 | 2 | .5000000 | 7.0000000 | .0000000 | 100 + 5 | 1401-06-01 | -76.2419355 | 30 | 10.0000000 | .6363636 | 3 | .8333333 | 10.0000000 | .0000000 | 600 + 5 | 1401-06-01 | -76.2419355 | 30 | 10.0000000 | .6363636 | 3 | .8333333 | 10.0000000 | .0000000 | 500 + 0 | 1401-04-01 | -216.8181818 | 40 | 6.0000000 | .6363636 | 3 | .5000000 | 10.0000000 | .0000000 | 200 + 1 | 1401-06-01 | -216.8181818 | 40 | 6.0000000 | .9090909 | 4 | .5000000 | 12.0000000 | .0000000 | 700 + 1 | 1401-06-01 | -216.8181818 | 40 | 6.0000000 | .9090909 | 4 | .5000000 | 12.0000000 | .0000000 | 800 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and current row ); -- mvd 4->3; + pn | vn | to_char | cn +-----+----+-------------------+---- + 800 | 40 | .0000000 | 4 + 700 | 40 | .0000000 | 4 + 500 | 30 | -.0304605 | 3 + 600 | 30 | -.0304605 | 3 + 200 | 40 | -.0304605 | 3 + 400 | 50 | .7855611 | 2 + 100 | 40 | .7855611 | 2 + 300 | 30 | -.0219777 | 1 + 500 | 30 | -.0219777 | 1 + 400 | 50 | -.0219777 | 1 + 200 | 10 | -.0219777 | 1 + 100 | 20 | -.0219777 | 1 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and current row ), +win2 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.cn order by ow_sale.pn asc); -- mvd 1->3; 1->4; 6,7,1->5; 6,7,1->8; + pn | qty | to_char | to_char | to_char | prc | cn | to_char +-----+------+-------------------+-------------------+-------------------+------+----+------------------- + 100 | 1 | .0000000 | 100.0000000 | 1.0000000 | 0 | 1 | 1.0000000 + 100 | 1100 | .0000000 | 100.0000000 | 1.0000000 | 2400 | 2 | 1.0000000 + 200 | 1 | .0000000 | 200.0000000 | 1.0000000 | 0 | 1 | 1.0000000 + 200 | 1 | .0000000 | 200.0000000 | 1.0000000 | 0 | 3 | 1.0000000 + 300 | 1 | .0000000 | 300.0000000 | 1.0000000 | 0 | 1 | 1.0000000 + 400 | 1 | .0000000 | 400.0000000 | 1.0000000 | 0 | 1 | 1.0000000 + 400 | 1 | .0000000 | 400.0000000 | 1.0000000 | 0 | 2 | 1.0000000 + 500 | 12 | .0000000 | 500.0000000 | 1.0000000 | 5 | 1 | 1.0000000 + 500 | 12 | .0000000 | 500.0000000 | 1.0000000 | 5 | 3 | 1.0000000 + 600 | 12 | .0000000 | 600.0000000 | 1.0000000 | 5 | 3 | 1.0000000 + 700 | 1 | .0000000 | 700.0000000 | 1.0000000 | 1 | 4 | 1.0000000 + 800 | 1 | .0000000 | 800.0000000 | 1.0000000 | 1 | 4 | 1.0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn*ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and floor(ow_sale.prc-ow_sale.prc) following ); -- mvd 3->2; + prc | to_char | vn +------+-------------------+---- + 0 | .0000000 | 10 + 0 | .0000000 | 20 + 5 | .0000000 | 30 + 0 | .0000000 | 30 + 5 | .0000000 | 30 + 5 | .0000000 | 30 + 2400 | .0000000 | 40 + 1 | .0000000 | 40 + 0 | .0000000 | 40 + 1 | .0000000 | 40 + 0 | .0000000 | 50 + 0 | .0000000 | 50 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty+ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and floor(ow_sale.cn+ow_sale.prc) following ), +win2 as (order by ow_sale.cn desc); -- mvd 5->4; 5->6; + vn | vn | vn | to_char | cn | to_char +----+----+----+-------------------+----+------------------- + 40 | 40 | 40 | 1.0056959 | 4 | 1.0000000 + 40 | 40 | 40 | 1.0056959 | 4 | 1.0000000 + 30 | 30 | 30 | 1.0070313 | 3 | 2.0000000 + 40 | 40 | 40 | 1.0070313 | 3 | 2.0000000 + 30 | 30 | 30 | 1.0070313 | 3 | 2.0000000 + 50 | 50 | 50 | 1.0075768 | 2 | 3.0000000 + 40 | 40 | 40 | 1.0075768 | 2 | 3.0000000 + 30 | 30 | 30 | 1.2272727 | 1 | 4.0000000 + 50 | 50 | 50 | 1.2272727 | 1 | 4.0000000 + 30 | 30 | 30 | 1.2272727 | 1 | 4.0000000 + 20 | 20 | 20 | 1.2272727 | 1 | 4.0000000 + 10 | 10 | 10 | 1.2272727 | 1 | 4.0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc),floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and unbounded following ); -- mvd 1->4; + pn | qty | qty | to_char +-----+------+------+------------------- + 100 | 1 | 1 | .0220538 + 100 | 1100 | 1100 | .0220538 + 200 | 1 | 1 | .0007845 + 200 | 1 | 1 | .0007845 + 300 | 1 | 1 | .0007757 + 400 | 1 | 1 | .0007643 + 400 | 1 | 1 | .0007643 + 500 | 12 | 12 | .0006906 + 500 | 12 | 12 | .0006906 + 600 | 12 | 12 | .0006200 + 700 | 1 | 1 | .0000000 + 800 | 1 | 1 | .0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn-ow_sale.prc),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn/ow_sale.pn) as int),cast (floor(ow_sale.qty/ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty+ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and unbounded following ), +win2 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc), +win4 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 3->2; 5,3->4; 5,3->6; 8->7; 8->9; 8->10; + cn | to_char | vn | to_char | dt | to_char | to_char | pn | to_char | to_char +----+-------------------+----+-------------------+------------+-------------------+-------------------+-----+-------------------+------------------- + 2 | -.0004164 | 40 | .0000000 | 1401-01-01 | 1.0000000 | .0000000 | 100 | .0000000 | 1.0000000 + 1 | .0000000 | 10 | .0000000 | 1401-03-01 | 1.0000000 | .0000000 | 200 | .0000000 | 2.0000000 + 3 | -.0004164 | 40 | .0000000 | 1401-04-01 | 1.0000000 | .0000000 | 200 | .0000000 | 3.0000000 + 1 | .0000000 | 20 | .0000000 | 1401-05-01 | 1.0000000 | .0000000 | 100 | .0000000 | 4.0000000 + 1 | -.1466667 | 30 | .0000000 | 1401-05-02 | 1.0000000 | .0000000 | 300 | .0000000 | 5.0000000 + 1 | -.0004164 | 50 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 | 400 | .0000000 | 6.0000000 + 2 | -.0004164 | 50 | .0000000 | 1401-06-01 | 2.0000000 | .0000000 | 400 | .0000000 | 7.0000000 + 1 | -.1466667 | 30 | .0000000 | 1401-06-01 | 3.0000000 | .0000000 | 500 | .0000000 | 8.0000000 + 3 | -.1466667 | 30 | .0000000 | 1401-06-01 | 4.0000000 | .0000000 | 500 | .0000000 | 9.0000000 + 3 | -.1466667 | 30 | .0000000 | 1401-06-01 | 5.0000000 | .0000000 | 600 | .0000000 | 10.0000000 + 4 | -.0004164 | 40 | .0000000 | 1401-06-01 | 6.0000000 | .0000000 | 700 | .0000000 | 11.0000000 + 4 | -.0004164 | 40 | .0000000 | 1401-06-01 | 7.0000000 | .0000000 | 800 | .0000000 | 12.0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn-ow_sale.qty),floor(ow_sale.prc*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 2 following and floor(ow_sale.prc) following ); -- mvd 4->3; + qty | dt | to_char | vn +------+------------+-------------------+---- + 1 | 1401-03-01 | .0000000 | 10 + 1 | 1401-05-01 | .0000000 | 20 + 12 | 1401-06-01 | .0000000 | 30 + 1 | 1401-05-02 | .0000000 | 30 + 12 | 1401-06-01 | .0000000 | 30 + 12 | 1401-06-01 | .0000000 | 30 + 1100 | 1401-01-01 | .0000000 | 40 + 1 | 1401-06-01 | .0000000 | 40 + 1 | 1401-06-01 | .0000000 | 40 + 1 | 1401-04-01 | .0000000 | 40 + 1 | 1401-06-01 | .0000000 | 50 + 1 | 1401-06-01 | .0000000 | 50 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc*ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.vn+ow_sale.prc) following and unbounded following ); -- mvd 5->4; + pn | pn | vn | to_char | cn +-----+-----+----+-------------------+---- + 100 | 100 | 20 | .0000000 | 1 + 200 | 200 | 10 | .0000000 | 1 + 300 | 300 | 30 | .0000000 | 1 + 400 | 400 | 50 | .0000000 | 1 + 500 | 500 | 30 | .0000000 | 1 + 100 | 100 | 40 | .0000000 | 2 + 400 | 400 | 50 | .0000000 | 2 + 200 | 200 | 40 | .0000000 | 3 + 600 | 600 | 30 | .0000000 | 3 + 500 | 500 | 30 | .0000000 | 3 + 700 | 700 | 40 | .0000000 | 4 + 800 | 800 | 40 | .0000000 | 4 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn*ow_sale.cn),floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn/ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn/ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 4 following and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 3->5; 3,2,7->6; 7->8; 7->9; 3,2,7->10; 3,2,7->11; + dt | vn | cn | vn | to_char | to_char | pn | to_char | to_char | to_char | to_char +------------+----+----+----+-------------------+-------------------+-----+-------------------+-------------------+-------------------+------------------- + 1401-01-01 | 40 | 2 | 40 | .0000000 | 1.0000000 | 100 | 1100.0000000 | .0000000 | 1.0000000 | 1100.0000000 + 1401-03-01 | 10 | 1 | 10 | .0000000 | 1.0000000 | 200 | 1100.0000000 | .0000000 | 1.0000000 | 1.0000000 + 1401-04-01 | 40 | 3 | 40 | .0000000 | 1.0000000 | 200 | .0000000 | .0000000 | 1.0000000 | 1.0000000 + 1401-05-01 | 20 | 1 | 20 | .0000000 | 1.0000000 | 100 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 1401-05-02 | 30 | 1 | 30 | .0000000 | 1.0000000 | 300 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 50 | 1 | 50 | .0000000 | 2.0000000 | 400 | 1.0000000 | .0000000 | 2.0000000 | 1.0000000 + 1401-06-01 | 50 | 2 | 50 | .0000000 | 1.0000000 | 400 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 30 | 1 | 30 | .0000000 | 2.0000000 | 500 | 12.0000000 | .0000000 | 2.0000000 | 12.0000000 + 1401-06-01 | 30 | 3 | 30 | .0000000 | 1.0000000 | 500 | 12.0000000 | .0000000 | 1.0000000 | 12.0000000 + 1401-06-01 | 30 | 3 | 30 | .0000000 | 1.0000000 | 600 | 12.0000000 | .0000000 | 1.0000000 | 12.0000000 + 1401-06-01 | 40 | 4 | 40 | .0000000 | 1.0000000 | 700 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 40 | 4 | 40 | .0000000 | 1.0000000 | 800 | 12.0000000 | .0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc+ow_sale.qty),floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows unbounded preceding ); -- mvd 6,7->5; + qty | qty | qty | vn | to_char | cn | pn +------+------+------+----+-------------------+----+----- + 1100 | 1100 | 1100 | 40 | .0000000 | 2 | 100 + 1 | 1 | 1 | 10 | 1.4399177 | 1 | 200 + 1 | 1 | 1 | 40 | 1.4486936 | 3 | 200 + 1 | 1 | 1 | 20 | 1.4477078 | 1 | 100 + 1 | 1 | 1 | 30 | 1.4487060 | 1 | 300 + 1 | 1 | 1 | 50 | 1.4515673 | 1 | 400 + 1 | 1 | 1 | 50 | 1.4534878 | 2 | 400 + 12 | 12 | 12 | 30 | 1.4526937 | 1 | 500 + 12 | 12 | 12 | 30 | 1.4520979 | 3 | 500 + 12 | 12 | 12 | 30 | 1.4516344 | 3 | 600 + 1 | 1 | 1 | 40 | 1.4522293 | 4 | 700 + 1 | 1 | 1 | 40 | 1.4527165 | 4 | 800 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc/ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.pn asc rows unbounded preceding ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn order by ow_sale.pn asc), +win4 as (order by ow_sale.cn desc); -- mvd 1->2; 4->3; 4->5; 7,8,1->6; 4->9; + pn | to_char | to_char | cn | to_char | to_char | dt | vn | to_char +-----+-------------------+-------------------+----+-------------------+-------------------+------------+----+------------------- + 800 | .0547314 | 12.0000000 | 4 | 1.0000000 | 2.0000000 | 1401-06-01 | 40 | 1.0000000 + 700 | .0547468 | 11.0000000 | 4 | 1.0000000 | 1.0000000 | 1401-06-01 | 40 | 2.0000000 + 200 | .0545951 | 8.0000000 | 3 | .8333333 | 1.0000000 | 1401-04-01 | 40 | 3.0000000 + 600 | .0547656 | 10.0000000 | 3 | .8333333 | 3.0000000 | 1401-06-01 | 30 | 4.0000000 + 500 | .0547227 | 9.0000000 | 3 | .8333333 | 1.0000000 | 1401-06-01 | 30 | 5.0000000 + 400 | .0545951 | 7.0000000 | 2 | .5833333 | 1.0000000 | 1401-06-01 | 50 | 6.0000000 + 100 | .0000000 | 6.0000000 | 2 | .5833333 | 1.0000000 | 1401-01-01 | 40 | 7.0000000 + 400 | .0545951 | 1.0000000 | 1 | .4166667 | 1.0000000 | 1401-06-01 | 50 | 8.0000000 + 300 | .0545951 | 5.0000000 | 1 | .4166667 | 1.0000000 | 1401-05-02 | 30 | 9.0000000 + 100 | .0545951 | 4.0000000 | 1 | .4166667 | 1.0000000 | 1401-05-01 | 20 | 10.0000000 + 500 | .0546679 | 3.0000000 | 1 | .4166667 | 1.0000000 | 1401-06-01 | 30 | 11.0000000 + 200 | .0545951 | 2.0000000 | 1 | .4166667 | 1.0000000 | 1401-03-01 | 10 | 12.0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows 0 preceding ), +win2 as (order by ow_sale.pn asc); -- mvd 3->5; 3->6; + vn | qty | pn | dt | to_char | to_char +----+------+-----+------------+-------------------+------------------- + 40 | 1100 | 100 | 1401-01-01 | .0000000 | 1.0000000 + 20 | 1 | 100 | 1401-05-01 | .0000000 | 2.0000000 + 10 | 1 | 200 | 1401-03-01 | .0000000 | 3.0000000 + 40 | 1 | 200 | 1401-04-01 | .0000000 | 4.0000000 + 30 | 1 | 300 | 1401-05-02 | .0000000 | 5.0000000 + 50 | 1 | 400 | 1401-06-01 | .0000000 | 6.0000000 + 50 | 1 | 400 | 1401-06-01 | .0000000 | 7.0000000 + 30 | 12 | 500 | 1401-06-01 | .0000000 | 8.0000000 + 30 | 12 | 500 | 1401-06-01 | .0000000 | 9.0000000 + 30 | 12 | 600 | 1401-06-01 | .0000000 | 10.0000000 + 40 | 1 | 700 | 1401-06-01 | .0000000 | 11.0000000 + 40 | 1 | 800 | 1401-06-01 | .0000000 | 12.0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows current row ), +win2 as (order by ow_sale.cn desc); -- mvd 2->7; 2->8; 2->9; + qty | cn | prc | vn | dt | pn | to_char | to_char | to_char +------+----+------+----+------------+-----+-------------------+-------------------+------------------- + 1 | 4 | 1 | 40 | 1401-06-01 | 800 | .0000000 | 1.0000000 | 1.0000000 + 1 | 4 | 1 | 40 | 1401-06-01 | 700 | .0000000 | 2.0000000 | 2.0000000 + 12 | 3 | 5 | 30 | 1401-06-01 | 500 | .0000000 | 3.0000000 | 3.0000000 + 1 | 3 | 0 | 40 | 1401-04-01 | 200 | .0000000 | 4.0000000 | 4.0000000 + 12 | 3 | 5 | 30 | 1401-06-01 | 600 | .0000000 | 5.0000000 | 5.0000000 + 1 | 2 | 0 | 50 | 1401-06-01 | 400 | .0000000 | 6.0000000 | 6.0000000 + 1100 | 2 | 2400 | 40 | 1401-01-01 | 100 | .0000000 | 7.0000000 | 7.0000000 + 12 | 1 | 5 | 30 | 1401-06-01 | 500 | .0000000 | 8.0000000 | 8.0000000 + 1 | 1 | 0 | 50 | 1401-06-01 | 400 | .0000000 | 9.0000000 | 9.0000000 + 1 | 1 | 0 | 30 | 1401-05-02 | 300 | .0000000 | 10.0000000 | 10.0000000 + 1 | 1 | 0 | 20 | 1401-05-01 | 100 | .0000000 | 11.0000000 | 11.0000000 + 1 | 1 | 0 | 10 | 1401-03-01 | 200 | .0000000 | 12.0000000 | 12.0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and 6 preceding ); -- mvd 1->2; + cn | to_char +----+------------------- + 2 | .0000000 + 1 | .0000000 + 3 | .0000000 + 1 | .0000000 + 1 | .0000000 + 1 | .0000000 + 2 | .0000000 + 1 | 2400.0000000 + 3 | .0000000 + 3 | 218.1818182 + 4 | 300.0000000 + 4 | 342.8571429 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn*ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn-ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and 4 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and 4 preceding ); -- mvd 4->5; 4->6; + vn | pn | vn | cn | to_char | to_char +----+-----+----+----+-------------------+------------------- + 40 | 100 | 40 | 2 | .0000000 | .0000000 + 10 | 200 | 10 | 1 | .0000000 | .0000000 + 40 | 200 | 40 | 3 | .0000000 | .0000000 + 20 | 100 | 20 | 1 | .0000000 | .0000000 + 30 | 300 | 30 | 1 | .0000000 | 1.0000000 + 50 | 400 | 50 | 1 | 4.3676069 | 2.0000000 + 50 | 400 | 50 | 2 | 4.3676069 | 3.0000000 + 30 | 500 | 30 | 1 | 4.3676069 | 4.0000000 + 30 | 500 | 30 | 3 | 4.3676069 | 5.0000000 + 30 | 600 | 30 | 3 | 4.3676069 | 6.0000000 + 40 | 700 | 40 | 4 | 4.3676069 | 7.0000000 + 40 | 800 | 40 | 4 | 4.3728245 | 8.0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc/ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 5->4; + vn | prc | prc | to_char | cn +----+------+------+-------------------+---- + 40 | 2400 | 2400 | .0000000 | 2 + 10 | 0 | 0 | .8000000 | 1 + 40 | 0 | 0 | .4000000 | 3 + 20 | 0 | 0 | .4444444 | 1 + 30 | 0 | 0 | .4235294 | 1 + 50 | 0 | 0 | .1846154 | 1 + 50 | 0 | 0 | .1000000 | 2 + 30 | 5 | 5 | .1081081 | 1 + 30 | 5 | 5 | .1142857 | 3 + 30 | 5 | 5 | .1191489 | 3 + 40 | 1 | 1 | .1050000 | 4 + 40 | 1 | 1 | .0938547 | 4 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn),floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc rows between unbounded preceding and 4 following ); -- mvd 2->4; + cn | vn | cn | to_char +----+----+----+------------------- + 2 | 40 | 2 | .0001042 + 1 | 10 | 1 | .0001250 + 3 | 40 | 3 | .0001042 + 1 | 20 | 1 | .0001190 + 1 | 30 | 1 | .0000790 + 1 | 50 | 1 | .0000479 + 2 | 50 | 2 | .0000016 + 1 | 30 | 1 | -.0000363 + 3 | 30 | 3 | -.0000363 + 3 | 30 | 3 | -.0000363 + 4 | 40 | 4 | -.0000363 + 4 | 40 | 4 | -.0000363 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.prc*ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.cn desc rows between unbounded preceding and 2 following ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,4->2; 6->5; 6->7; 3->8; + dt | to_char | cn | vn | to_char | pn | to_char | to_char +------------+-------------------+----+----+-------------------+-----+-------------------+------------------- + 1401-01-01 | -2.6666667 | 2 | 40 | .0000000 | 100 | 1.0000000 | .0000000 + 1401-03-01 | -1.7407407 | 1 | 10 | .0000000 | 200 | 2.0000000 | .0000000 + 1401-04-01 | -1.2941176 | 3 | 40 | .0000000 | 200 | 3.0000000 | .0000000 + 1401-05-01 | 2.5384615 | 1 | 20 | .0000000 | 100 | 4.0000000 | .0000000 + 1401-05-02 | 3.8958333 | 1 | 30 | .0000000 | 300 | 5.0000000 | .0000000 + 1401-06-01 | 3.1441441 | 1 | 50 | .0000000 | 400 | 6.0000000 | .0000000 + 1401-06-01 | 2.5714286 | 2 | 50 | .0000000 | 400 | 7.0000000 | .0000000 + 1401-06-01 | 1.9078014 | 1 | 30 | .0000000 | 500 | 8.0000000 | .0000000 + 1401-06-01 | 3.4375000 | 3 | 30 | .0000000 | 500 | 9.0000000 | .0000000 + 1401-06-01 | 5.0335196 | 3 | 30 | .0000000 | 600 | 10.0000000 | .0000000 + 1401-06-01 | 5.0335196 | 4 | 40 | .0000000 | 700 | 11.0000000 | .0000000 + 1401-06-01 | 5.0335196 | 4 | 40 | .0000000 | 800 | 12.0000000 | .0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc),floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 4,1->5; + vn | pn | vn | cn | to_char +----+-----+----+----+------------------- + 40 | 100 | 40 | 2 | 1.0943755 + 10 | 200 | 10 | 1 | 1.0943755 + 40 | 200 | 40 | 3 | 1.0943755 + 20 | 100 | 20 | 1 | 1.0943755 + 30 | 300 | 30 | 1 | 1.0943755 + 50 | 400 | 50 | 1 | 1.0943755 + 50 | 400 | 50 | 2 | 1.0943755 + 30 | 500 | 30 | 1 | 1.0943755 + 30 | 500 | 30 | 3 | 1.0943755 + 30 | 600 | 30 | 3 | 1.0943755 + 40 | 700 | 40 | 4 | 1.0943755 + 40 | 800 | 40 | 4 | 1.0943755 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn/ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.cn) as int),cast (floor(ow_sale.prc/ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.qty,ow_sale.pn order by ow_sale.cn asc), +win4 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 1->2; 4->3; 1,6,7->5; 9,1,7->8; + cn | to_char | to_char | vn | to_char | qty | pn | to_char | dt +----+-------------------+-------------------+----+-------------------+------+-----+-------------------+------------ + 1 | 1.0782123 | 1.0000000 | 10 | .0000000 | 1 | 200 | 1.0000000 | 1401-03-01 + 1 | 1.0782123 | 2.0000000 | 20 | .0000000 | 1 | 100 | 1.0000000 | 1401-05-01 + 3 | 1.0782123 | 3.0000000 | 30 | 1.0000000 | 12 | 500 | 9.0000000 | 1401-06-01 + 1 | 1.0782123 | 4.0000000 | 30 | .0000000 | 12 | 500 | 1.0000000 | 1401-06-01 + 1 | 1.0782123 | 5.0000000 | 30 | .0000000 | 1 | 300 | 1.0000000 | 1401-05-02 + 3 | 1.0782123 | 6.0000000 | 30 | .0000000 | 12 | 600 | 9.0000000 | 1401-06-01 + 2 | 1.0782123 | 7.0000000 | 40 | .0000000 | 1100 | 100 | .0000000 | 1401-01-01 + 3 | 1.0782123 | 8.0000000 | 40 | 1.0000000 | 1 | 200 | 9.0000000 | 1401-04-01 + 4 | 1.0782123 | 9.0000000 | 40 | .0000000 | 1 | 700 | 16.0000000 | 1401-06-01 + 4 | 1.0782123 | 10.0000000 | 40 | .0000000 | 1 | 800 | 16.0000000 | 1401-06-01 + 2 | 1.0782123 | 11.0000000 | 50 | 1.0000000 | 1 | 400 | 4.0000000 | 1401-06-01 + 1 | 1.0782123 | 12.0000000 | 50 | .0000000 | 1 | 400 | 1.0000000 | 1401-06-01 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between floor(ow_sale.prc) preceding and 3 preceding ); -- mvd 3,4->2; + prc | to_char | cn | pn +------+-------------------+----+----- + 2400 | .0000000 | 2 | 100 + 0 | .0000000 | 1 | 200 + 0 | .0000000 | 3 | 200 + 0 | .0000000 | 1 | 100 + 0 | .0000000 | 1 | 300 + 0 | .0000000 | 1 | 400 + 0 | .0000000 | 2 | 400 + 5 | .0500000 | 1 | 500 + 5 | .0928571 | 3 | 500 + 5 | .2000000 | 3 | 600 + 1 | .0000000 | 4 | 700 + 1 | .0000000 | 4 | 800 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn-ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 8 preceding and current row ); -- mvd 1->2; + cn | to_char +----+------------------- + 2 | .0000000 + 1 | -35.6333333 + 3 | -17.3166667 + 1 | -19.3518519 + 1 | -18.3941176 + 1 | -7.4538462 + 2 | -3.5791667 + 1 | -3.9207207 + 3 | -4.1809524 + 3 | 1.0540984 + 4 | 1.2229730 + 4 | 1.2229730 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn/ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.prc) as int),cast (floor(ow_sale.pn+ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.prc) preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.vn asc), +win3 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc); -- mvd 1->2; 4->3; 6,7,4->5; 4->8; 4->9; + pn | to_char | to_char | vn | to_char | cn | dt | to_char | to_char +-----+-------------------+-------------------+----+-------------------+----+------------+-------------------+------------------- + 100 | .0000000 | .0000000 | 40 | .0000000 | 2 | 1401-01-01 | 1.0000000 | 1.0000000 + 200 | .0000000 | 40.0000000 | 10 | .0000000 | 1 | 1401-03-01 | 2.0000000 | 2.0000000 + 200 | .0000000 | .0000000 | 40 | .0000000 | 3 | 1401-04-01 | 3.0000000 | 3.0000000 + 100 | .0000000 | 40.0000000 | 20 | .0000000 | 1 | 1401-05-01 | 4.0000000 | 4.0000000 + 300 | .0000000 | 20.0000000 | 30 | .0000000 | 1 | 1401-05-02 | 5.0000000 | 5.0000000 + 400 | .0000000 | 30.0000000 | 50 | .0000000 | 1 | 1401-06-01 | 6.0000000 | 6.0000000 + 400 | .0000000 | 30.0000000 | 50 | .0000000 | 2 | 1401-06-01 | 7.0000000 | 7.0000000 + 500 | .0000000 | 50.0000000 | 30 | .0000000 | 1 | 1401-06-01 | 8.0000000 | 8.0000000 + 500 | .0000000 | 50.0000000 | 30 | .0000000 | 3 | 1401-06-01 | 9.0000000 | 9.0000000 + 600 | .0000000 | 50.0000000 | 30 | .0000000 | 3 | 1401-06-01 | 10.0000000 | 10.0000000 + 700 | .0000000 | 50.0000000 | 40 | .0000000 | 4 | 1401-06-01 | 11.0000000 | 11.0000000 + 800 | .0000000 | 30.0000000 | 40 | .0000000 | 4 | 1401-06-01 | 12.0000000 | 12.0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc*ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.vn asc rows between 0 preceding and floor(ow_sale.qty*ow_sale.cn) following ); -- mvd 3,4->2; + dt | to_char | cn | vn +------------+-------------------+----+---- + 1401-01-01 | 10323.5273743 | 2 | 40 + 1401-03-01 | .0000000 | 1 | 10 + 1401-04-01 | .0000000 | 3 | 40 + 1401-05-01 | .0000000 | 1 | 20 + 1401-05-02 | .0000000 | 1 | 30 + 1401-06-01 | .0000000 | 1 | 50 + 1401-06-01 | -3.0000000 | 2 | 50 + 1401-06-01 | -5.9000000 | 1 | 30 + 1401-06-01 | -5.9000000 | 3 | 30 + 1401-06-01 | -5.9000000 | 3 | 30 + 1401-06-01 | .0000000 | 4 | 40 + 1401-06-01 | .0000000 | 4 | 40 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn*ow_sale.pn),floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc rows between 1 preceding and floor(ow_sale.cn+ow_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc rows between 1 preceding and floor(ow_sale.cn+ow_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc rows between 1 preceding and floor(ow_sale.cn+ow_sale.cn) following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.cn asc); -- mvd 6,1->5; 6,1->7; 6,1->8; 10->9; 10->11; 10,1->12; + pn | pn | pn | pn | to_char | vn | to_char | to_char | to_char | cn | to_char | to_char +-----+-----+-----+-----+-------------------+----+-------------------+-------------------+-------------------+----+-------------------+------------------- + 400 | 400 | 400 | 400 | 1.1764706 | 50 | 1.0000000 | 12.0000000 | 1.0000000 | 1 | 5.0000000 | 1.0000000 + 200 | 200 | 200 | 200 | 3.1782946 | 10 | 1.0000000 | 1100.0000000 | 1.0000000 | 1 | 5.0000000 | 1.0000000 + 500 | 500 | 500 | 500 | 5.7055215 | 30 | 1.0000000 | 12.0000000 | 1.0000000 | 1 | 5.0000000 | 1.0000000 + 100 | 100 | 100 | 100 | .6153846 | 20 | 1.0000000 | 1.0000000 | 1.0000000 | 1 | 5.0000000 | 1.0000000 + 300 | 300 | 300 | 300 | 1.5273478 | 30 | 1.0000000 | 1.0000000 | 1.0000000 | 1 | 5.0000000 | 1.0000000 + 100 | 100 | 100 | 100 | 1.1951909 | 40 | 1.0000000 | 1100.0000000 | 2.0000000 | 2 | 7.0000000 | 1.0000000 + 400 | 400 | 400 | 400 | 7.5534442 | 50 | 1.0000000 | 12.0000000 | 2.0000000 | 2 | 7.0000000 | 1.0000000 + 200 | 200 | 200 | 200 | 1.9131975 | 40 | 1.0000000 | 12.0000000 | 3.0000000 | 3 | 10.0000000 | 1.0000000 + 500 | 500 | 500 | 500 | 7.4304419 | 30 | 1.0000000 | 12.0000000 | 3.0000000 | 3 | 10.0000000 | 1.0000000 + 600 | 600 | 600 | 600 | 5.8872458 | 30 | 3.0000000 | 12.0000000 | 3.0000000 | 3 | 10.0000000 | 1.0000000 + 700 | 700 | 700 | 700 | 6.7069486 | 40 | 3.0000000 | 12.0000000 | 4.0000000 | 4 | 12.0000000 | 1.0000000 + 800 | 800 | 800 | 800 | 4.0000000 | 40 | 4.0000000 | 1.0000000 | 4.0000000 | 4 | 12.0000000 | 1.0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn+ow_sale.pn),floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between 6 preceding and unbounded following ); -- mvd 3->2; + qty | to_char | cn +------+-------------------+---- + 1100 | -.2836840 | 2 + 1 | -.2836840 | 1 + 1 | -.2836840 | 3 + 1 | -.2836840 | 1 + 1 | -.2836840 | 1 + 1 | -.2836840 | 1 + 1 | -.2836840 | 2 + 12 | 9.7844934 | 1 + 12 | 11.1346512 | 3 + 12 | 11.4213125 | 3 + 1 | -.8119734 | 4 + 1 | -25.3979821 | 4 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between 4 preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,4->2; 3,4->5; 7,3,1,4->6; + vn | to_char | cn | pn | to_char | to_char | dt +----+-------------------+----+-----+-------------------+-------------------+------------ + 40 | -11.3404255 | 2 | 100 | 12.0000000 | .0000000 | 1401-01-01 + 10 | -11.3404255 | 1 | 200 | 12.0000000 | .0000000 | 1401-03-01 + 40 | -11.3404255 | 3 | 200 | 12.0000000 | .0000000 | 1401-04-01 + 20 | -11.3404255 | 1 | 100 | 12.0000000 | .0000000 | 1401-05-01 + 30 | -11.3404255 | 1 | 300 | 12.0000000 | .0000000 | 1401-05-02 + 50 | .3197674 | 1 | 400 | 11.0000000 | .0000000 | 1401-06-01 + 50 | .0780142 | 2 | 400 | 10.0000000 | .0000000 | 1401-06-01 + 30 | .2704918 | 1 | 500 | 9.0000000 | .0000000 | 1401-06-01 + 30 | -.1157895 | 3 | 500 | 8.0000000 | .0000000 | 1401-06-01 + 30 | -.8088235 | 3 | 600 | 7.0000000 | .0000000 | 1401-06-01 + 40 | -2.4146341 | 4 | 700 | 6.0000000 | .0000000 | 1401-06-01 + 40 | -3.6666667 | 4 | 800 | 5.0000000 | .0000000 | 1401-06-01 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn-ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc rows between current row and current row ); -- mvd 6->5; + vn | pn | qty | qty | to_char | cn +----+-----+------+------+-------------------+---- + 40 | 100 | 1100 | 1100 | .0000000 | 2 + 10 | 200 | 1 | 1 | .0000000 | 1 + 40 | 200 | 1 | 1 | .0000000 | 3 + 20 | 100 | 1 | 1 | .0000000 | 1 + 30 | 300 | 1 | 1 | .0000000 | 1 + 50 | 400 | 1 | 1 | .0000000 | 1 + 50 | 400 | 1 | 1 | .0000000 | 2 + 30 | 500 | 12 | 12 | .0000000 | 1 + 30 | 500 | 12 | 12 | .0000000 | 3 + 30 | 600 | 12 | 12 | .0000000 | 3 + 40 | 700 | 1 | 1 | .0000000 | 4 + 40 | 800 | 1 | 1 | .0000000 | 4 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn+ow_sale.vn),floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between current row and current row ); -- mvd 8->7; 8->9; + prc | qty | qty | prc | vn | pn | to_char | cn | to_char +------+------+------+------+----+-----+-------------------+----+------------------- + 2400 | 1100 | 1100 | 2400 | 40 | 100 | .0000000 | 2 | 1.0000000 + 0 | 1 | 1 | 0 | 10 | 200 | .0000000 | 1 | 1.0000000 + 0 | 1 | 1 | 0 | 40 | 200 | .0000000 | 3 | 1.0000000 + 0 | 1 | 1 | 0 | 20 | 100 | .0000000 | 1 | 1.0000000 + 0 | 1 | 1 | 0 | 30 | 300 | .0000000 | 1 | 1.0000000 + 0 | 1 | 1 | 0 | 50 | 400 | .0000000 | 1 | 1.0000000 + 0 | 1 | 1 | 0 | 50 | 400 | .0000000 | 2 | 1.0000000 + 5 | 12 | 12 | 5 | 30 | 500 | .0000000 | 1 | 1.0000000 + 5 | 12 | 12 | 5 | 30 | 500 | .0000000 | 3 | 1.0000000 + 5 | 12 | 12 | 5 | 30 | 600 | .0000000 | 3 | 1.0000000 + 1 | 1 | 1 | 1 | 40 | 700 | .0000000 | 4 | 1.0000000 + 1 | 1 | 1 | 1 | 40 | 800 | .0000000 | 4 | 1.0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc rows between current row and 3 following ); -- mvd 1->2; + pn | to_char +-----+------------------- + 100 | .0555556 + 200 | .0600000 + 200 | .0200000 + 100 | .0185185 + 300 | .0250000 + 400 | -.0250000 + 400 | -.0166667 + 500 | .1666667 + 500 | .1000000 + 600 | .1000000 + 700 | .0000000 + 800 | .0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty/ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn-ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn*ow_sale.vn) as int),cast (floor(ow_sale.prc+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and 1 following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc), +win4 as (partition by ow_sale.cn order by ow_sale.vn desc); -- mvd 1->2; 4->3; 4->5; 4->6; 8,4,9->7; 4,11->10; + pn | to_char | to_char | cn | to_char | to_char | to_char | dt | qty | to_char | vn +-----+-------------------+-------------------+----+-------------------+-------------------+-------------------+------------+------+-------------------+---- + 100 | .3666667 | .0000000 | 2 | 1.0000000 | 1.0000000 | .0000000 | 1401-01-01 | 1100 | 2.0000000 | 40 + 200 | .0000000 | 199.0000000 | 1 | 2.0000000 | 2.0000000 | .0000000 | 1401-03-01 | 1 | 5.0000000 | 10 + 200 | .0000000 | 197.0000000 | 3 | 3.0000000 | 3.0000000 | .0000000 | 1401-04-01 | 1 | 1.0000000 | 40 + 100 | .0000000 | 99.0000000 | 1 | 4.0000000 | 4.0000000 | .0000000 | 1401-05-01 | 1 | 4.0000000 | 20 + 300 | .0000000 | 299.0000000 | 1 | 5.0000000 | 5.0000000 | .0000000 | 1401-05-02 | 1 | 2.0000000 | 30 + 400 | .0000000 | 399.0000000 | 1 | 6.0000000 | 6.0000000 | .0000000 | 1401-06-01 | 1 | 1.0000000 | 50 + 400 | .0000000 | 398.0000000 | 2 | 7.0000000 | 7.0000000 | .0000000 | 1401-06-01 | 1 | 1.0000000 | 50 + 500 | .0000000 | 197.0000000 | 1 | 8.0000000 | 8.0000000 | .0000000 | 1401-06-01 | 12 | 2.0000000 | 30 + 500 | .0000000 | 99.0000000 | 3 | 9.0000000 | 9.0000000 | .0000000 | 1401-06-01 | 12 | 2.0000000 | 30 + 600 | .0000000 | 299.0000000 | 3 | 10.0000000 | 10.0000000 | .0000000 | 1401-06-01 | 12 | 2.0000000 | 30 + 700 | .0000000 | 597.0000000 | 4 | 11.0000000 | 11.0000000 | .0000000 | 1401-06-01 | 1 | 1.0000000 | 40 + 800 | .0000000 | 696.0000000 | 4 | 12.0000000 | 12.0000000 | .0000000 | 1401-06-01 | 1 | 1.0000000 | 40 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty*ow_sale.cn),floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.vn asc rows between current row and unbounded following ); -- mvd 4,5->3; + qty | prc | to_char | vn | pn +------+------+-------------------+----+----- + 1100 | 2400 | .0499355 | 40 | 100 + 1 | 0 | .0793719 | 10 | 200 + 1 | 0 | .0798530 | 40 | 200 + 1 | 0 | .0801509 | 20 | 100 + 1 | 0 | .0803634 | 30 | 300 + 1 | 0 | .0799647 | 50 | 400 + 1 | 0 | .0777716 | 50 | 400 + 12 | 5 | .0750000 | 30 | 500 + 12 | 5 | .1000000 | 30 | 500 + 12 | 5 | .1000000 | 30 | 600 + 1 | 1 | .0000000 | 40 | 700 + 1 | 1 | .0000000 | 40 | 800 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty+ow_sale.cn) as int),cast (floor(ow_sale.cn*ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.pn asc); -- mvd 4->3; 4->5; 7,1,4,2,8->6; + cn | qty | to_char | vn | to_char | to_char | dt | pn +----+------+-------------------+----+-------------------+-------------------+------------+----- + 2 | 1100 | -.1360261 | 40 | .0000000 | 1.0000000 | 1401-01-01 | 100 + 1 | 1 | 44.0860215 | 10 | .0000000 | 1.0000000 | 1401-03-01 | 200 + 3 | 1 | 38.4615385 | 40 | .0000000 | 1.0000000 | 1401-04-01 | 200 + 1 | 1 | 30.6930693 | 20 | .0000000 | 1.0000000 | 1401-05-01 | 100 + 1 | 1 | 14.0672783 | 30 | .0000000 | 1.0000000 | 1401-05-02 | 300 + 1 | 1 | .8000000 | 50 | .0000000 | 1.0000000 | 1401-06-01 | 400 + 2 | 1 | -14.4508671 | 50 | .0000000 | 1.0000000 | 1401-06-01 | 400 + 1 | 12 | -54.1666667 | 30 | .0000000 | 1.0000000 | 1401-06-01 | 500 + 3 | 12 | -50.0000000 | 30 | .0000000 | 1.0000000 | 1401-06-01 | 500 + 3 | 12 | -37.5000000 | 30 | .0000000 | 2.0000000 | 1401-06-01 | 600 + 4 | 1 | .0000000 | 40 | .0000000 | 1.0000000 | 1401-06-01 | 700 + 4 | 1 | .0000000 | 40 | .0000000 | 2.0000000 | 1401-06-01 | 800 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc+ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.pn asc rows between 4 following and 6 following ); -- mvd 3,4->2; + qty | to_char | cn | pn +------+-------------------+----+----- + 1100 | .0000000 | 2 | 100 + 1 | 3.2000000 | 1 | 200 + 1 | 3.2000000 | 3 | 200 + 1 | .0000000 | 1 | 100 + 1 | 3.7500000 | 1 | 300 + 1 | 3.7500000 | 1 | 400 + 1 | .0000000 | 2 | 400 + 12 | .0000000 | 1 | 500 + 12 | .0000000 | 3 | 500 + 12 | .0000000 | 3 | 600 + 1 | .0000000 | 4 | 700 + 1 | .0000000 | 4 | 800 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn-ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.prc+ow_sale.pn) following and floor(ow_sale.pn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.prc+ow_sale.pn) following and floor(ow_sale.pn) following ), +win2 as (order by ow_sale.pn desc); -- mvd 2->5; 7->6; 2->8; + cn | vn | cn | qty | to_char | to_char | pn | to_char +----+----+----+------+-------------------+-------------------+-----+------------------- + 4 | 40 | 4 | 1 | .0000000 | 1.0000000 | 800 | .0000000 + 4 | 40 | 4 | 1 | .0000000 | 2.0000000 | 700 | .0000000 + 3 | 30 | 3 | 12 | .0000000 | 3.0000000 | 600 | .0000000 + 1 | 30 | 1 | 12 | .0000000 | 4.0000000 | 500 | .0000000 + 3 | 30 | 3 | 12 | .0000000 | 4.0000000 | 500 | .0000000 + 2 | 50 | 2 | 1 | .0000000 | 5.0000000 | 400 | .0000000 + 1 | 50 | 1 | 1 | .0000000 | 5.0000000 | 400 | .0000000 + 1 | 30 | 1 | 1 | .0000000 | 6.0000000 | 300 | .0000000 + 3 | 40 | 3 | 1 | .0000000 | 7.0000000 | 200 | .0000000 + 1 | 10 | 1 | 1 | .0000000 | 7.0000000 | 200 | .0000000 + 2 | 40 | 2 | 1100 | .0000000 | 8.0000000 | 100 | .0000000 + 1 | 20 | 1 | 1 | .0000000 | 8.0000000 | 100 | .0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn-ow_sale.prc),floor(ow_sale.cn*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between floor(ow_sale.pn-ow_sale.pn) following and unbounded following ); -- mvd 3,2->5; + prc | pn | cn | vn | to_char +------+-----+----+----+------------------- + 2400 | 100 | 2 | 40 | 2.6888195 + 0 | 200 | 1 | 10 | 2.8438080 + 0 | 200 | 3 | 40 | 2.7453608 + 0 | 100 | 1 | 20 | 3.3304854 + 0 | 300 | 1 | 30 | 2.6963880 + 0 | 400 | 1 | 50 | 2.4028101 + 0 | 400 | 2 | 50 | 2.2152263 + 5 | 500 | 1 | 30 | 2.1313531 + 5 | 500 | 3 | 30 | 2.9142857 + 5 | 600 | 3 | 30 | 2.2000000 + 1 | 700 | 4 | 40 | .0000000 + 1 | 800 | 4 | 40 | .0000000 +(12 rows) + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc/ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 2 following and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.cn desc); -- mvd 4->3; 4,6,7,2->5; 4,6,7,2->8; 4,6,7,2->9; + qty | pn | to_char | cn | to_char | dt | vn | to_char | to_char +------+-----+-------------------+----+-------------------+------------+----+-------------------+------------------- + 1100 | 100 | .0000000 | 2 | 1.0000000 | 1401-01-01 | 40 | 1.0000000 | 1.0000000 + 1 | 200 | .0000000 | 1 | 1.0000000 | 1401-03-01 | 10 | 1.0000000 | 1.0000000 + 1 | 200 | .0000000 | 3 | 1.0000000 | 1401-04-01 | 40 | 1.0000000 | 1.0000000 + 1 | 100 | .0000000 | 1 | 1.0000000 | 1401-05-01 | 20 | 1.0000000 | 1.0000000 + 1 | 300 | .0000000 | 1 | 1.0000000 | 1401-05-02 | 30 | 1.0000000 | 1.0000000 + 1 | 400 | .0000000 | 1 | 1.0000000 | 1401-06-01 | 50 | 1.0000000 | 1.0000000 + 1 | 400 | .0000000 | 2 | 1.0000000 | 1401-06-01 | 50 | 1.0000000 | 1.0000000 + 12 | 500 | .0000000 | 1 | 1.0000000 | 1401-06-01 | 30 | 1.0000000 | 1.0000000 + 12 | 500 | .0000000 | 3 | 1.0000000 | 1401-06-01 | 30 | 1.0000000 | 1.0000000 + 12 | 600 | .0000000 | 3 | 1.0000000 | 1401-06-01 | 30 | 1.0000000 | 1.0000000 + 1 | 700 | .0000000 | 4 | 1.0000000 | 1401-06-01 | 40 | 1.0000000 | 1.0000000 + 1 | 800 | .0000000 | 4 | 1.0000000 | 1401-06-01 | 40 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_SLOPE() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty*ow_sale.vn),floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.pn asc); -- mvd 1,2->5; + vn | pn | cn | vn | to_char +----+-----+----+----+------------------- + 10 | 200 | 1 | 10 | .0000000 + 20 | 100 | 1 | 20 | .0000000 + 30 | 300 | 1 | 30 | .0000000 + 30 | 500 | 3 | 30 | 7.8980229 + 30 | 500 | 1 | 30 | 7.8980229 + 30 | 600 | 3 | 30 | 7.1796938 + 40 | 100 | 2 | 40 | .0000000 + 40 | 200 | 3 | 40 | 20.0091033 + 40 | 700 | 4 | 40 | 20.0136550 + 40 | 800 | 4 | 40 | 20.0151731 + 50 | 400 | 1 | 50 | .0000000 + 50 | 400 | 2 | 50 | .0000000 +(12 rows) + +-- REGR_SLOPE() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc-ow_sale.prc),floor(ow_sale.cn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.qty order by ow_sale.cn desc,ow_sale.pn desc,ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.cn desc,ow_sale.pn desc,ow_sale.vn asc); -- mvd 3,4,5,1->2; 3,4,5,1->6; 3,4,5,1->7; + pn | to_char | cn | vn | qty | to_char | to_char +-----+-------------------+----+----+------+-------------------+------------------- + 800 | .0000000 | 4 | 40 | 1 | .0000000 | 4.0000000 + 700 | .0000000 | 4 | 40 | 1 | .1428571 | 4.0000000 + 200 | .0000000 | 3 | 40 | 1 | .2857143 | 3.0000000 + 400 | .0000000 | 2 | 50 | 1 | .4285714 | 2.0000000 + 400 | .0000000 | 1 | 50 | 1 | .5714286 | 1.0000000 + 300 | .0000000 | 1 | 30 | 1 | .7142857 | 1.0000000 + 200 | .0000000 | 1 | 10 | 1 | .8571429 | 1.0000000 + 100 | .0000000 | 1 | 20 | 1 | 1.0000000 | 1.0000000 + 600 | .0000000 | 3 | 30 | 12 | .0000000 | 3.0000000 + 500 | .0000000 | 3 | 30 | 12 | .5000000 | 3.0000000 + 500 | .0000000 | 1 | 30 | 12 | 1.0000000 | 1.0000000 + 100 | .0000000 | 2 | 40 | 1100 | .0000000 | 2.0000000 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.prc/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.vn asc range unbounded preceding ); -- mvd 3,5->4; + qty | cn | vn | to_char | pn +------+----+----+-------------------+----- + 1 | 1 | 30 | .0000000 | 300 + 1 | 2 | 50 | .0000000 | 400 + 1 | 1 | 50 | .0000000 | 400 + 12 | 1 | 30 | .0000000 | 500 + 12 | 3 | 30 | .0000000 | 500 + 1 | 4 | 40 | .0000000 | 800 + 1 | 1 | 20 | .0000000 | 100 + 1100 | 2 | 40 | .0000000 | 100 + 1 | 1 | 10 | .0000000 | 200 + 1 | 3 | 40 | .0000000 | 200 + 12 | 3 | 30 | .0000000 | 600 + 1 | 4 | 40 | .0000000 | 700 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc+ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty/ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.cn asc range unbounded preceding ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc); -- mvd 6,3,1->5; 2,3,1->7; + pn | dt | vn | prc | to_char | cn | to_char +-----+------------+----+------+-------------------+----+------------------- + 300 | 1401-05-02 | 30 | 0 | .0000000 | 1 | .0000000 + 500 | 1401-06-01 | 30 | 5 | .0000000 | 1 | .0000000 + 500 | 1401-06-01 | 30 | 5 | .0000000 | 3 | 500.0000000 + 800 | 1401-06-01 | 40 | 1 | .0000000 | 4 | .0000000 + 400 | 1401-06-01 | 50 | 0 | .0000000 | 1 | .0000000 + 400 | 1401-06-01 | 50 | 0 | .0000000 | 2 | 400.0000000 + 200 | 1401-03-01 | 10 | 0 | .0000000 | 1 | .0000000 + 100 | 1401-05-01 | 20 | 0 | .0000000 | 1 | .0000000 + 600 | 1401-06-01 | 30 | 5 | .0000000 | 3 | .0000000 + 100 | 1401-01-01 | 40 | 2400 | .0000000 | 2 | .0000000 + 200 | 1401-04-01 | 40 | 0 | .0000000 | 3 | .0000000 + 700 | 1401-06-01 | 40 | 1 | .0000000 | 4 | .0000000 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn/ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.vn asc range floor(ow_sale.pn) preceding ); -- mvd 4,5,6->3; + pn | pn | to_char | cn | dt | vn +-----+-----+-------------------+----+------------+---- + 200 | 200 | .0000000 | 3 | 1401-04-01 | 40 + 100 | 100 | .0000000 | 1 | 1401-05-01 | 20 + 800 | 800 | .0000000 | 4 | 1401-06-01 | 40 + 700 | 700 | .0000000 | 4 | 1401-06-01 | 40 + 400 | 400 | .0000000 | 2 | 1401-06-01 | 50 + 100 | 100 | .0000000 | 2 | 1401-01-01 | 40 + 200 | 200 | .0000000 | 1 | 1401-03-01 | 10 + 300 | 300 | .0000000 | 1 | 1401-05-02 | 30 + 500 | 500 | .0000000 | 1 | 1401-06-01 | 30 + 500 | 500 | .0000000 | 3 | 1401-06-01 | 30 + 600 | 600 | .0000000 | 3 | 1401-06-01 | 30 + 400 | 400 | .0000000 | 1 | 1401-06-01 | 50 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc),floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc+ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.pn desc range 1 preceding ), +win2 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.vn desc), +win4 as (order by ow_sale.cn asc); -- mvd 3,4,5->2; 3,4,5->6; 3,8->7; 4->9; 3->10; + qty | to_char | cn | vn | pn | to_char | to_char | dt | to_char | to_char +------+-------------------+----+----+-----+-------------------+-------------------+------------+-------------------+------------------- + 1100 | .0000000 | 2 | 40 | 100 | 240000.0000000 | .0000000 | 1401-01-01 | .0000000 | .4545455 + 1 | .0000000 | 1 | 10 | 200 | .0000000 | .0000000 | 1401-03-01 | .0000000 | .0000000 + 1 | .0000000 | 3 | 40 | 200 | .0000000 | .0000000 | 1401-04-01 | .0000000 | .6363636 + 1 | .0000000 | 1 | 20 | 100 | .0000000 | .0000000 | 1401-05-01 | .0000000 | .0000000 + 1 | .0000000 | 1 | 30 | 300 | .0000000 | .0000000 | 1401-05-02 | .0000000 | .0000000 + 1 | .0000000 | 1 | 50 | 400 | .0000000 | 12.0000000 | 1401-06-01 | .0000000 | .0000000 + 1 | .0000000 | 2 | 50 | 400 | .0000000 | .0000000 | 1401-06-01 | .0000000 | .4545455 + 12 | .0000000 | 1 | 30 | 500 | 2500.0000000 | .0000000 | 1401-06-01 | .0000000 | .0000000 + 12 | .0000000 | 3 | 30 | 500 | 2500.0000000 | .0000000 | 1401-06-01 | .0000000 | .6363636 + 12 | .0000000 | 3 | 30 | 600 | 3000.0000000 | .0000000 | 1401-06-01 | .0000000 | .6363636 + 1 | .0000000 | 4 | 40 | 700 | 700.0000000 | .0000000 | 1401-06-01 | .0000000 | .9090909 + 1 | .0000000 | 4 | 40 | 800 | 800.0000000 | .0000000 | 1401-06-01 | .0000000 | .9090909 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn+ow_sale.pn),floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.dt order by ow_sale.vn desc range current row ); -- mvd 5,6,1->4; + vn | pn | qty | to_char | prc | dt +----+-----+------+-------------------+------+------------ + 20 | 100 | 1 | .0000000 | 0 | 1401-05-01 + 40 | 200 | 1 | .0000000 | 0 | 1401-04-01 + 40 | 800 | 1 | .0000000 | 1 | 1401-06-01 + 40 | 700 | 1 | .0000000 | 1 | 1401-06-01 + 40 | 100 | 1100 | .0000000 | 2400 | 1401-01-01 + 10 | 200 | 1 | .0000000 | 0 | 1401-03-01 + 30 | 300 | 1 | .0000000 | 0 | 1401-05-02 + 30 | 600 | 12 | .0000000 | 5 | 1401-06-01 + 30 | 500 | 12 | .0000000 | 5 | 1401-06-01 + 30 | 500 | 12 | .0000000 | 5 | 1401-06-01 + 50 | 400 | 1 | .0000000 | 0 | 1401-06-01 + 50 | 400 | 1 | .0000000 | 0 | 1401-06-01 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.pn asc range between unbounded preceding and 1 preceding ); -- mvd 2,6,7->5; + dt | cn | dt | qty | to_char | vn | pn +------------+----+------------+------+-------------------+----+----- + 1401-05-01 | 1 | 1401-05-01 | 1 | .0000000 | 20 | 100 + 1401-03-01 | 1 | 1401-03-01 | 1 | .0000000 | 10 | 200 + 1401-06-01 | 2 | 1401-06-01 | 1 | .0000000 | 50 | 400 + 1401-04-01 | 3 | 1401-04-01 | 1 | .0000000 | 40 | 200 + 1401-06-01 | 3 | 1401-06-01 | 12 | .0000000 | 30 | 600 + 1401-06-01 | 4 | 1401-06-01 | 1 | .0000000 | 40 | 800 + 1401-05-02 | 1 | 1401-05-02 | 1 | .0000000 | 30 | 300 + 1401-06-01 | 1 | 1401-06-01 | 1 | .0000000 | 50 | 400 + 1401-06-01 | 1 | 1401-06-01 | 12 | .0000000 | 30 | 500 + 1401-01-01 | 2 | 1401-01-01 | 1100 | .0000000 | 40 | 100 + 1401-06-01 | 3 | 1401-06-01 | 12 | .0000000 | 30 | 500 + 1401-06-01 | 4 | 1401-06-01 | 1 | .0000000 | 40 | 700 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn/ow_sale.qty),floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.dt order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty*ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc range between unbounded preceding and 4 preceding ), +win2 as (partition by ow_sale.dt order by ow_sale.pn asc), +win3 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc), +win4 as (partition by ow_sale.dt order by ow_sale.vn desc); -- mvd 3,4,1,5->2; 7,5->6; 7,5->8; 10,3,7,1,5->9; 7,4->11; + qty | to_char | cn | vn | pn | to_char | dt | to_char | to_char | prc | to_char +------+-------------------+----+----+-----+-------------------+------------+-------------------+-------------------+------+------------------- + 1 | .0000000 | 1 | 30 | 300 | 1.0000000 | 1401-05-02 | .0000000 | .0000000 | 0 | 1.0000000 + 1 | .0000000 | 1 | 50 | 400 | 1.0000000 | 1401-06-01 | .0000000 | .0000000 | 0 | .2857143 + 12 | .0000000 | 3 | 30 | 600 | 3.0000000 | 1401-06-01 | 5.0000000 | .0000000 | 5 | 1.0000000 + 1 | .0000000 | 4 | 40 | 700 | 4.0000000 | 1401-06-01 | 5.0000000 | .0000000 | 1 | .5714286 + 1 | .0000000 | 1 | 20 | 100 | 1.0000000 | 1401-05-01 | .0000000 | .0000000 | 0 | 1.0000000 + 1100 | .0000000 | 2 | 40 | 100 | 1.0000000 | 1401-01-01 | 2400.0000000 | .0000000 | 2400 | 1.0000000 + 1 | .0000000 | 1 | 10 | 200 | 1.0000000 | 1401-03-01 | .0000000 | .0000000 | 0 | 1.0000000 + 1 | .0000000 | 3 | 40 | 200 | 1.0000000 | 1401-04-01 | .0000000 | .0000000 | 0 | 1.0000000 + 1 | .0000000 | 2 | 50 | 400 | 1.0000000 | 1401-06-01 | .0000000 | .0000000 | 0 | .2857143 + 12 | .0000000 | 1 | 30 | 500 | 2.0000000 | 1401-06-01 | 5.0000000 | .0000000 | 5 | 1.0000000 + 12 | .0000000 | 3 | 30 | 500 | 2.0000000 | 1401-06-01 | 5.0000000 | .0000000 | 5 | 1.0000000 + 1 | .0000000 | 4 | 40 | 800 | 5.0000000 | 1401-06-01 | 5.0000000 | .0000000 | 1 | .5714286 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc*ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.qty order by ow_sale.cn asc range between unbounded preceding and current row ); -- mvd 1,3,4->2; + cn | to_char | qty | pn +----+-------------------+------+----- + 1 | .0000000 | 1 | 300 + 1 | .0000000 | 1 | 400 + 3 | .0000000 | 12 | 600 + 4 | .0000000 | 1 | 700 + 1 | .0000000 | 1 | 100 + 1 | .0000000 | 1 | 200 + 1 | .0000000 | 12 | 500 + 2 | .0000000 | 1100 | 100 + 2 | .0000000 | 1 | 400 + 3 | .0000000 | 1 | 200 + 3 | .0000000 | 12 | 500 + 4 | .0000000 | 1 | 800 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.qty order by ow_sale.pn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.qty order by ow_sale.pn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.qty order by ow_sale.pn asc range between unbounded preceding and current row ), +win2 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.vn asc), +win3 as (order by ow_sale.cn asc); -- mvd 2,5,6->4; 2,5,6->7; 2,5,6->8; 2,5,6->9; 1,5->10; 2->11; + vn | cn | vn | to_char | qty | pn | to_char | to_char | to_char | to_char | to_char +----+----+----+-------------------+------+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 30 | 1 | 30 | .0000000 | 1 | 300 | 1.0000000 | 2.0000000 | 31.0000000 | .0000000 | .0000000 + 50 | 1 | 50 | .0000000 | 1 | 400 | 1.0000000 | 2.0000000 | 51.0000000 | .0000000 | .0000000 + 20 | 1 | 20 | .0000000 | 1 | 100 | 1.0000000 | 2.0000000 | 21.0000000 | .0000000 | .0000000 + 10 | 1 | 10 | .0000000 | 1 | 200 | 1.0000000 | 2.0000000 | 11.0000000 | .0000000 | .0000000 + 30 | 1 | 30 | .0000000 | 12 | 500 | 12.0000000 | 13.0000000 | 42.0000000 | .0000000 | .0000000 + 40 | 2 | 40 | .0000000 | 1100 | 100 | 1100.0000000 | 1102.0000000 | 1140.0000000 | .0000000 | .4545455 + 50 | 2 | 50 | .0000000 | 1 | 400 | 1.0000000 | 3.0000000 | 51.0000000 | .0000000 | .4545455 + 40 | 3 | 40 | .0000000 | 1 | 200 | 1.0000000 | 4.0000000 | 41.0000000 | .0000000 | .6363636 + 30 | 3 | 30 | .0000000 | 12 | 500 | 12.0000000 | 15.0000000 | 42.0000000 | .0000000 | .6363636 + 30 | 3 | 30 | .0000000 | 12 | 600 | 12.0000000 | 15.0000000 | 42.0000000 | .0000000 | .6363636 + 40 | 4 | 40 | .0000000 | 1 | 700 | 1.0000000 | 5.0000000 | 41.0000000 | .0000000 | .9090909 + 40 | 4 | 40 | .0000000 | 1 | 800 | 1.0000000 | 5.0000000 | 41.0000000 | .0000000 | .9090909 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.vn order by ow_sale.cn asc range between unbounded preceding and 4 following ); -- mvd 1,6,2,7,3->5; + cn | qty | pn | pn | to_char | dt | vn +----+------+-----+-----+-------------------+------------+---- + 1 | 1 | 100 | 100 | .0000000 | 1401-05-01 | 20 + 1 | 1 | 300 | 300 | .0000000 | 1401-05-02 | 30 + 3 | 12 | 600 | 600 | .0000000 | 1401-06-01 | 30 + 3 | 1 | 200 | 200 | .0000000 | 1401-04-01 | 40 + 4 | 1 | 800 | 800 | .0000000 | 1401-06-01 | 40 + 1 | 1 | 400 | 400 | .0000000 | 1401-06-01 | 50 + 2 | 1 | 400 | 400 | .0000000 | 1401-06-01 | 50 + 1 | 1 | 200 | 200 | .0000000 | 1401-03-01 | 10 + 1 | 12 | 500 | 500 | .0000000 | 1401-06-01 | 30 + 3 | 12 | 500 | 500 | .0000000 | 1401-06-01 | 30 + 4 | 1 | 700 | 700 | .0000000 | 1401-06-01 | 40 + 2 | 1100 | 100 | 100 | .0000000 | 1401-01-01 | 40 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.prc+ow_sale.prc) following ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.dt order by ow_sale.cn desc); -- mvd 4,1->3; 6,7,4,1->5; + pn | prc | to_char | vn | to_char | dt | cn +-----+------+-------------------+----+-------------------+------------+---- + 300 | 0 | .0000000 | 30 | 1.0000000 | 1401-05-02 | 1 + 400 | 0 | 1.0000000 | 50 | 1.0000000 | 1401-06-01 | 1 + 400 | 0 | 1.0000000 | 50 | 1.0000000 | 1401-06-01 | 2 + 500 | 5 | 1.0000000 | 30 | 1.0000000 | 1401-06-01 | 1 + 500 | 5 | 1.0000000 | 30 | 1.0000000 | 1401-06-01 | 3 + 800 | 1 | .0000000 | 40 | 1.0000000 | 1401-06-01 | 4 + 100 | 2400 | 1.0000000 | 40 | 1.0000000 | 1401-01-01 | 2 + 100 | 0 | 1.0000000 | 20 | 1.0000000 | 1401-05-01 | 1 + 200 | 0 | .0000000 | 40 | 1.0000000 | 1401-04-01 | 3 + 200 | 0 | 1.0000000 | 10 | 1.0000000 | 1401-03-01 | 1 + 600 | 5 | .0000000 | 30 | 1.0000000 | 1401-06-01 | 3 + 700 | 1 | .0000000 | 40 | 1.0000000 | 1401-06-01 | 4 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn),floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.vn order by ow_sale.cn asc range between unbounded preceding and unbounded following ); -- mvd 4,5,6,2->3; + dt | pn | to_char | prc | cn | vn +------------+-----+-------------------+------+----+---- + 1401-05-02 | 300 | .0000000 | 0 | 1 | 30 + 1401-06-01 | 400 | .0000000 | 0 | 1 | 50 + 1401-06-01 | 400 | .0000000 | 0 | 2 | 50 + 1401-06-01 | 500 | .0000000 | 5 | 1 | 30 + 1401-06-01 | 500 | .0000000 | 5 | 3 | 30 + 1401-06-01 | 700 | .0000000 | 1 | 4 | 40 + 1401-05-01 | 100 | .0000000 | 0 | 1 | 20 + 1401-01-01 | 100 | .0000000 | 2400 | 2 | 40 + 1401-03-01 | 200 | .0000000 | 0 | 1 | 10 + 1401-04-01 | 200 | .0000000 | 0 | 3 | 40 + 1401-06-01 | 600 | .0000000 | 5 | 3 | 30 + 1401-06-01 | 800 | .0000000 | 1 | 4 | 40 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.dt order by ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 7,3,8,9->6; 7,3,8,9->10; + cn | prc | vn | vn | vn | to_char | dt | qty | pn | to_char +----+------+----+----+----+-------------------+------------+------+-----+------------------- + 2 | 2400 | 40 | 40 | 40 | .0000000 | 1401-01-01 | 1100 | 100 | 1.0000000 + 1 | 0 | 10 | 10 | 10 | .0000000 | 1401-03-01 | 1 | 200 | 1.0000000 + 4 | 1 | 40 | 40 | 40 | .0000000 | 1401-06-01 | 1 | 700 | 1.0000000 + 1 | 5 | 30 | 30 | 30 | .0000000 | 1401-06-01 | 12 | 500 | 2.0000000 + 3 | 5 | 30 | 30 | 30 | .0000000 | 1401-06-01 | 12 | 500 | 2.0000000 + 3 | 0 | 40 | 40 | 40 | .0000000 | 1401-04-01 | 1 | 200 | 1.0000000 + 1 | 0 | 20 | 20 | 20 | .0000000 | 1401-05-01 | 1 | 100 | 1.0000000 + 1 | 0 | 30 | 30 | 30 | .0000000 | 1401-05-02 | 1 | 300 | 1.0000000 + 1 | 0 | 50 | 50 | 50 | .0000000 | 1401-06-01 | 1 | 400 | 2.0000000 + 2 | 0 | 50 | 50 | 50 | .0000000 | 1401-06-01 | 1 | 400 | 2.0000000 + 4 | 1 | 40 | 40 | 40 | .0000000 | 1401-06-01 | 1 | 800 | 1.0000000 + 3 | 5 | 30 | 30 | 30 | .0000000 | 1401-06-01 | 12 | 600 | 1.0000000 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn-ow_sale.pn),floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.pn asc range between floor(ow_sale.qty) preceding and floor(ow_sale.prc-ow_sale.prc) preceding ); -- mvd 2,5,3->4; + qty | dt | pn | to_char | vn +------+------------+-----+-------------------+---- + 1 | 1401-03-01 | 200 | .0000000 | 10 + 12 | 1401-06-01 | 600 | .0000000 | 30 + 1 | 1401-06-01 | 700 | .0000000 | 40 + 1 | 1401-05-01 | 100 | .0000000 | 20 + 1 | 1401-05-02 | 300 | .0000000 | 30 + 12 | 1401-06-01 | 500 | .0000000 | 30 + 12 | 1401-06-01 | 500 | .0000000 | 30 + 1100 | 1401-01-01 | 100 | .0000000 | 40 + 1 | 1401-04-01 | 200 | .0000000 | 40 + 1 | 1401-06-01 | 800 | .0000000 | 40 + 1 | 1401-06-01 | 400 | .0000000 | 50 + 1 | 1401-06-01 | 400 | .0000000 | 50 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn*ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.cn order by ow_sale.pn desc range between floor(ow_sale.qty) preceding and current row ); -- mvd 7,2,1,8,3->6; + qty | dt | pn | qty | qty | to_char | cn | vn +------+------------+-----+------+------+-------------------+----+---- + 1 | 1401-05-01 | 100 | 1 | 1 | .0000000 | 1 | 20 + 1 | 1401-03-01 | 200 | 1 | 1 | .0000000 | 1 | 10 + 1 | 1401-04-01 | 200 | 1 | 1 | .0000000 | 3 | 40 + 1 | 1401-06-01 | 400 | 1 | 1 | .0000000 | 2 | 50 + 12 | 1401-06-01 | 600 | 12 | 12 | .0000000 | 3 | 30 + 1 | 1401-06-01 | 800 | 1 | 1 | .0000000 | 4 | 40 + 1100 | 1401-01-01 | 100 | 1100 | 1100 | .0000000 | 2 | 40 + 1 | 1401-05-02 | 300 | 1 | 1 | .0000000 | 1 | 30 + 1 | 1401-06-01 | 400 | 1 | 1 | .0000000 | 1 | 50 + 12 | 1401-06-01 | 500 | 12 | 12 | .0000000 | 1 | 30 + 12 | 1401-06-01 | 500 | 12 | 12 | .0000000 | 3 | 30 + 1 | 1401-06-01 | 700 | 1 | 1 | .0000000 | 4 | 40 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc+ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.qty order by ow_sale.cn asc range between floor(ow_sale.cn-ow_sale.cn) preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.vn order by ow_sale.cn desc), +win3 as (order by ow_sale.vn desc); -- mvd 4,1,5,6->3; 4,1,5,6->7; 4,1,5->8; 5->9; + qty | prc | to_char | cn | vn | pn | to_char | to_char | to_char +------+------+-------------------+----+----+-----+-------------------+-------------------+------------------- + 1 | 0 | .0000000 | 2 | 50 | 400 | .0000000 | .5000000 | 1.0000000 + 1 | 0 | .0000000 | 1 | 50 | 400 | .0000000 | 1.0000000 | 2.0000000 + 1 | 1 | .0000000 | 4 | 40 | 800 | 1.0000000 | .6666667 | 3.0000000 + 1 | 1 | .0000000 | 4 | 40 | 700 | 1.0000000 | .6666667 | 4.0000000 + 1 | 0 | .0000000 | 3 | 40 | 200 | .0000000 | 1.0000000 | 5.0000000 + 1100 | 2400 | .0000000 | 2 | 40 | 100 | 2400.0000000 | 1.0000000 | 6.0000000 + 12 | 5 | .0000000 | 3 | 30 | 500 | 5.0000000 | .6666667 | 7.0000000 + 12 | 5 | .0000000 | 3 | 30 | 600 | 5.0000000 | .6666667 | 8.0000000 + 12 | 5 | .0000000 | 1 | 30 | 500 | 5.0000000 | 1.0000000 | 9.0000000 + 1 | 0 | .0000000 | 1 | 30 | 300 | .0000000 | 1.0000000 | 10.0000000 + 1 | 0 | .0000000 | 1 | 20 | 100 | .0000000 | 1.0000000 | 11.0000000 + 1 | 0 | .0000000 | 1 | 10 | 200 | .0000000 | 1.0000000 | 12.0000000 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.vn order by ow_sale.vn desc range between 3 preceding and floor(ow_sale.prc) following ); -- mvd 6,2,3,1,7->5; + qty | cn | vn | cn | to_char | prc | pn +------+----+----+----+-------------------+------+----- + 1 | 1 | 20 | 1 | .0000000 | 0 | 100 + 1 | 1 | 10 | 1 | .0000000 | 0 | 200 + 1 | 3 | 40 | 3 | .0000000 | 0 | 200 + 1 | 2 | 50 | 2 | .0000000 | 0 | 400 + 1 | 4 | 40 | 4 | .0000000 | 1 | 800 + 12 | 3 | 30 | 3 | .0000000 | 5 | 600 + 1 | 1 | 30 | 1 | .0000000 | 0 | 300 + 1 | 1 | 50 | 1 | .0000000 | 0 | 400 + 1 | 4 | 40 | 4 | .0000000 | 1 | 700 + 12 | 1 | 30 | 1 | .0000000 | 5 | 500 + 12 | 3 | 30 | 3 | .0000000 | 5 | 500 + 1100 | 2 | 40 | 2 | .0000000 | 2400 | 100 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn*ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.qty,ow_sale.qty order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.pn desc range between 2 preceding and 0 following ), +win2 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.qty order by ow_sale.pn desc), +win3 as (order by ow_sale.cn desc); -- mvd 2,5,4,3->7; 4,3->8; 4,3->9; 5->10; + vn | dt | pn | qty | cn | prc | to_char | to_char | to_char | to_char +----+------------+-----+------+----+------+-------------------+-------------------+-------------------+------------------- + 40 | 1401-06-01 | 700 | 1 | 4 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 40 | 1401-06-01 | 800 | 1 | 4 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 30 | 1401-06-01 | 600 | 12 | 3 | 5 | .0000000 | 1.0000000 | 1.0000000 | 3.0000000 + 40 | 1401-04-01 | 200 | 1 | 3 | 0 | .0000000 | 2.0000000 | 2.0000000 | 3.0000000 + 30 | 1401-06-01 | 500 | 12 | 3 | 5 | .0000000 | 2.0000000 | 2.0000000 | 3.0000000 + 50 | 1401-06-01 | 400 | 1 | 2 | 0 | .0000000 | 1.0000000 | 2.0000000 | 6.0000000 + 40 | 1401-01-01 | 100 | 1100 | 2 | 2400 | .0000000 | 1.0000000 | 1.0000000 | 6.0000000 + 30 | 1401-05-02 | 300 | 1 | 1 | 0 | .0000000 | 1.0000000 | 1.0000000 | 8.0000000 + 50 | 1401-06-01 | 400 | 1 | 1 | 0 | .0000000 | 2.0000000 | 2.0000000 | 8.0000000 + 20 | 1401-05-01 | 100 | 1 | 1 | 0 | .0000000 | 1.0000000 | 1.0000000 | 8.0000000 + 10 | 1401-03-01 | 200 | 1 | 1 | 0 | .0000000 | 1.0000000 | 2.0000000 | 8.0000000 + 30 | 1401-06-01 | 500 | 12 | 1 | 5 | .0000000 | 1.0000000 | 2.0000000 | 8.0000000 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn desc range between floor(ow_sale.cn) preceding and unbounded following ); -- mvd 6->5; + cn | cn | pn | cn | to_char | vn +----+----+-----+----+-------------------+---- + 1 | 1 | 200 | 1 | .0000000 | 10 + 1 | 1 | 100 | 1 | .0000000 | 20 + 1 | 1 | 300 | 1 | 2.3725490 | 30 + 3 | 3 | 600 | 3 | 2.3725490 | 30 + 1 | 1 | 500 | 1 | 2.3725490 | 30 + 3 | 3 | 500 | 3 | 2.3725490 | 30 + 3 | 3 | 200 | 3 | .4577259 | 40 + 4 | 4 | 700 | 4 | .4577259 | 40 + 2 | 2 | 100 | 2 | .4577259 | 40 + 4 | 4 | 800 | 4 | .4577259 | 40 + 1 | 1 | 400 | 1 | .0000000 | 50 + 2 | 2 | 400 | 2 | .0000000 | 50 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn),floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc*ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.vn order by ow_sale.vn desc range between floor(ow_sale.qty) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty*ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.vn desc range between floor(ow_sale.qty) preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 1,3->2; 1,3->4; 1,3->5; 1->6; + vn | to_char | pn | to_char | to_char | to_char +----+-------------------+-----+-------------------+-------------------+------------------- + 40 | .0000000 | 100 | 1.0000000 | 1.0000000 | .0000000 + 10 | .0000000 | 200 | 1.0000000 | 1.0000000 | 3.0000000 + 40 | .0000000 | 200 | 1.0000000 | 1.0000000 | 1.0000000 + 20 | .0000000 | 100 | 1.0000000 | 1.0000000 | 1.0000000 + 30 | .0000000 | 300 | 1.0000000 | 1.0000000 | 1.0000000 + 50 | .0000000 | 400 | 2.0000000 | 2.0000000 | 2.0000000 + 50 | .0000000 | 400 | 2.0000000 | 2.0000000 | 1.0000000 + 30 | .0000000 | 500 | 2.0000000 | 2.0000000 | .0000000 + 30 | .0000000 | 500 | 2.0000000 | 2.0000000 | .0000000 + 30 | .0000000 | 600 | 1.0000000 | 1.0000000 | .0000000 + 40 | .0000000 | 700 | 1.0000000 | 1.0000000 | 4.0000000 + 40 | .0000000 | 800 | 1.0000000 | 1.0000000 | .0000000 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.pn desc range between current row and current row ); -- mvd 4,8->7; + cn | cn | qty | dt | cn | prc | to_char | pn +----+----+------+------------+----+------+-------------------+----- + 1 | 1 | 1 | 1401-03-01 | 1 | 0 | .0000000 | 200 + 1 | 1 | 1 | 1401-05-02 | 1 | 0 | .0000000 | 300 + 4 | 4 | 1 | 1401-06-01 | 4 | 1 | .0000000 | 800 + 4 | 4 | 1 | 1401-06-01 | 4 | 1 | .0000000 | 700 + 3 | 3 | 12 | 1401-06-01 | 3 | 5 | .0000000 | 600 + 3 | 3 | 12 | 1401-06-01 | 3 | 5 | .0000000 | 500 + 1 | 1 | 12 | 1401-06-01 | 1 | 5 | .0000000 | 500 + 1 | 1 | 1 | 1401-06-01 | 1 | 0 | .0000000 | 400 + 2 | 2 | 1 | 1401-06-01 | 2 | 0 | .0000000 | 400 + 2 | 2 | 1100 | 1401-01-01 | 2 | 2400 | .0000000 | 100 + 3 | 3 | 1 | 1401-04-01 | 3 | 0 | .0000000 | 200 + 1 | 1 | 1 | 1401-05-01 | 1 | 0 | .0000000 | 100 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc+ow_sale.prc),floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.qty,ow_sale.prc,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.vn asc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.qty,ow_sale.prc,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.vn asc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.prc,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.vn asc range between current row and current row ), +win2 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.qty order by ow_sale.cn asc), +win3 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.cn asc); -- mvd 4,1,5,2,6,7->3; 4,1,5,2,6,7->8; 4,1,5,2,6,7->9; 4,1,5,2,6,7->10; 4,5,6,7->11; 5,1,2->12; + dt | vn | to_char | prc | cn | qty | pn | to_char | to_char | to_char | to_char | to_char +------------+----+-------------------+------+----+------+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 1401-05-01 | 20 | .0000000 | 0 | 1 | 1 | 100 | 1.0000000 | 2000.0000000 | 101.0000000 | 1.0000000 | 1.0000000 + 1401-03-01 | 10 | .0000000 | 0 | 1 | 1 | 200 | 1.0000000 | 2000.0000000 | 201.0000000 | .5000000 | 1.0000000 + 1401-04-01 | 40 | .0000000 | 0 | 3 | 1 | 200 | 1.0000000 | 8000.0000000 | 203.0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 40 | .0000000 | 1 | 4 | 1 | 800 | 1.0000000 | 32000.0000000 | 804.0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 30 | .0000000 | 5 | 1 | 12 | 500 | 1.0000000 | 15000.0000000 | 501.0000000 | .5000000 | 1.0000000 + 1401-06-01 | 30 | .0000000 | 5 | 3 | 12 | 500 | 1.0000000 | 15000.0000000 | 503.0000000 | 1.0000000 | 1.0000000 + 1401-05-02 | 30 | .0000000 | 0 | 1 | 1 | 300 | 1.0000000 | 9000.0000000 | 301.0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 50 | .0000000 | 0 | 1 | 1 | 400 | 1.0000000 | 20000.0000000 | 401.0000000 | .5000000 | 1.0000000 + 1401-06-01 | 50 | .0000000 | 0 | 2 | 1 | 400 | 1.0000000 | 20000.0000000 | 402.0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 40 | .0000000 | 1 | 4 | 1 | 700 | 1.0000000 | 28000.0000000 | 704.0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 30 | .0000000 | 5 | 3 | 12 | 600 | 1.0000000 | 18000.0000000 | 603.0000000 | 1.0000000 | 1.0000000 + 1401-01-01 | 40 | .0000000 | 2400 | 2 | 1100 | 100 | 1.0000000 | 4000.0000000 | 102.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn),floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.pn asc range between current row and unbounded following ); -- mvd 4,1,3->7; + dt | dt | pn | cn | prc | dt | to_char +------------+------------+-----+----+------+------------+------------------- + 1401-01-01 | 1401-01-01 | 100 | 2 | 2400 | 1401-01-01 | .0000000 + 1401-03-01 | 1401-03-01 | 200 | 1 | 0 | 1401-03-01 | .0000000 + 1401-05-02 | 1401-05-02 | 300 | 1 | 0 | 1401-05-02 | .0000000 + 1401-06-01 | 1401-06-01 | 400 | 1 | 0 | 1401-06-01 | .0000000 + 1401-06-01 | 1401-06-01 | 500 | 1 | 5 | 1401-06-01 | .0000000 + 1401-06-01 | 1401-06-01 | 500 | 3 | 5 | 1401-06-01 | .0000000 + 1401-06-01 | 1401-06-01 | 600 | 3 | 5 | 1401-06-01 | .0000000 + 1401-04-01 | 1401-04-01 | 200 | 3 | 0 | 1401-04-01 | .0000000 + 1401-05-01 | 1401-05-01 | 100 | 1 | 0 | 1401-05-01 | .0000000 + 1401-06-01 | 1401-06-01 | 400 | 2 | 0 | 1401-06-01 | .0000000 + 1401-06-01 | 1401-06-01 | 700 | 4 | 1 | 1401-06-01 | .0000000 + 1401-06-01 | 1401-06-01 | 800 | 4 | 1 | 1401-06-01 | .0000000 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn*ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.vn desc range between floor(ow_sale.vn+ow_sale.pn) following and floor(ow_sale.vn) following ); -- mvd 4,1->5; + vn | cn | vn | prc | to_char +----+----+----+------+------------------- + 50 | 2 | 50 | 0 | .0000000 + 50 | 1 | 50 | 0 | .0000000 + 40 | 3 | 40 | 0 | .0000000 + 30 | 1 | 30 | 0 | .0000000 + 20 | 1 | 20 | 0 | .0000000 + 10 | 1 | 10 | 0 | .0000000 + 30 | 3 | 30 | 5 | .0000000 + 30 | 1 | 30 | 5 | .0000000 + 30 | 3 | 30 | 5 | .0000000 + 40 | 2 | 40 | 2400 | .0000000 + 40 | 4 | 40 | 1 | .0000000 + 40 | 4 | 40 | 1 | .0000000 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn*ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn*ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc order by ow_sale.cn desc range between 4 following and 1 following ), +win2 as (partition by ow_sale.vn order by ow_sale.vn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,2,8->7; 5->9; 11->10; 3,2,8->12; 5->13; 11->14; + qty | cn | prc | cn | vn | vn | to_char | dt | to_char | to_char | pn | to_char | to_char | to_char +------+----+------+----+----+----+-------------------+------------+-------------------+-------------------+-----+-------------------+-------------------+------------------- + 1100 | 2 | 2400 | 2 | 40 | 40 | .0000000 | 1401-01-01 | 1.0000000 | .0000000 | 100 | .0000000 | 1.0000000 | 1100.0000000 + 1 | 1 | 0 | 1 | 10 | 10 | .0000000 | 1401-03-01 | 1.0000000 | 40.0000000 | 200 | .0000000 | 1.0000000 | 1.0000000 + 1 | 3 | 0 | 3 | 40 | 40 | .0000000 | 1401-04-01 | 1.0000000 | 50.0000000 | 200 | .0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 0 | 1 | 20 | 20 | .0000000 | 1401-05-01 | 1.0000000 | 30.0000000 | 100 | .0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 0 | 1 | 30 | 30 | .0000000 | 1401-05-02 | 1.0000000 | 50.0000000 | 300 | .0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 0 | 1 | 50 | 50 | .0000000 | 1401-06-01 | 1.0000000 | 50.0000000 | 400 | .0000000 | 1.0000000 | 1.0000000 + 1 | 2 | 0 | 2 | 50 | 50 | .0000000 | 1401-06-01 | 1.0000000 | 30.0000000 | 400 | .0000000 | 1.0000000 | 1.0000000 + 12 | 1 | 5 | 1 | 30 | 30 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 | 500 | .0000000 | 1.0000000 | 1.0000000 + 12 | 3 | 5 | 3 | 30 | 30 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 | 500 | .0000000 | 1.0000000 | 1.0000000 + 12 | 3 | 5 | 3 | 30 | 30 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 | 600 | .0000000 | 1.0000000 | 1.0000000 + 1 | 4 | 1 | 4 | 40 | 40 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 | 700 | .0000000 | 1.0000000 | 1.0000000 + 1 | 4 | 1 | 4 | 40 | 40 | .0000000 | 1401-06-01 | 1.0000000 | .0000000 | 800 | .0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.cn asc range between 3 following and unbounded following ); -- mvd 5,1->4; + cn | qty | vn | to_char | dt +----+------+----+-------------------+------------ + 1 | 1 | 20 | .0000000 | 1401-05-01 + 2 | 1 | 50 | .0000000 | 1401-06-01 + 3 | 1 | 40 | .0000000 | 1401-04-01 + 4 | 1 | 40 | .0000000 | 1401-06-01 + 4 | 1 | 40 | .0000000 | 1401-06-01 + 1 | 1 | 10 | .0000000 | 1401-03-01 + 1 | 1 | 30 | .0000000 | 1401-05-02 + 1 | 1 | 50 | .0000000 | 1401-06-01 + 1 | 12 | 30 | .0000000 | 1401-06-01 + 2 | 1100 | 40 | .0000000 | 1401-01-01 + 3 | 12 | 30 | .0000000 | 1401-06-01 + 3 | 12 | 30 | .0000000 | 1401-06-01 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows unbounded preceding ); -- mvd 7->6; + cn | prc | cn | pn | qty | to_char | vn +----+------+----+-----+------+-------------------+---- + 1 | 0 | 1 | 200 | 1 | .0000000 | 10 + 1 | 0 | 1 | 100 | 1 | .0000000 | 20 + 1 | 0 | 1 | 300 | 1 | .0000000 | 30 + 1 | 5 | 1 | 500 | 12 | .0350877 | 30 + 3 | 5 | 3 | 500 | 12 | .0350877 | 30 + 3 | 5 | 3 | 600 | 12 | .0397506 | 30 + 2 | 2400 | 2 | 100 | 1100 | .0000000 | 40 + 3 | 0 | 3 | 200 | 1 | -.0009107 | 40 + 4 | 1 | 4 | 700 | 1 | -.0031792 | 40 + 4 | 1 | 4 | 800 | 1 | -.0042413 | 40 + 1 | 0 | 1 | 400 | 1 | .0000000 | 50 + 2 | 0 | 2 | 400 | 1 | .0000000 | 50 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows 9 preceding ); -- mvd 5->4; + cn | cn | qty | to_char | vn +----+----+------+-------------------+---- + 1 | 1 | 1 | .0000000 | 10 + 1 | 1 | 1 | .0000000 | 20 + 1 | 1 | 1 | .0000000 | 30 + 1 | 1 | 12 | .0550000 | 30 + 3 | 3 | 12 | .0550000 | 30 + 3 | 3 | 12 | .0405263 | 30 + 2 | 2 | 1100 | .0000000 | 40 + 3 | 3 | 1 | -10.9900000 | 40 + 4 | 4 | 1 | -1.2408065 | 40 + 4 | 4 | 1 | -1.0395946 | 40 + 1 | 1 | 1 | .0000000 | 50 + 2 | 2 | 1 | .0000000 | 50 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn+ow_sale.pn),floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc,ow_sale.cn desc rows 0 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc,ow_sale.cn desc rows 0 preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.pn asc); -- mvd 6,7,4,3,2->5; 3->8; 2->9; 6,7,4,3,2->10; + qty | pn | vn | dt | to_char | prc | cn | to_char | to_char | to_char +------+-----+----+------------+-------------------+------+----+-------------------+-------------------+------------------- + 1 | 400 | 50 | 1401-06-01 | .0000000 | 0 | 2 | 1.0000000 | 7.0000000 | -398.0000000 + 1 | 400 | 50 | 1401-06-01 | .0000000 | 0 | 1 | 1.0000000 | 6.0000000 | -399.0000000 + 1 | 800 | 40 | 1401-06-01 | .0000000 | 1 | 4 | 2.0000000 | 12.0000000 | -796.0000000 + 1 | 200 | 40 | 1401-04-01 | .0000000 | 0 | 3 | 2.0000000 | 3.0000000 | -197.0000000 + 1 | 700 | 40 | 1401-06-01 | .0000000 | 1 | 4 | 2.0000000 | 11.0000000 | -696.0000000 + 1100 | 100 | 40 | 1401-01-01 | .0000000 | 2400 | 2 | 2.0000000 | 1.0000000 | -98.0000000 + 12 | 500 | 30 | 1401-06-01 | .0000000 | 5 | 1 | 3.0000000 | 8.0000000 | -499.0000000 + 12 | 500 | 30 | 1401-06-01 | .0000000 | 5 | 3 | 3.0000000 | 9.0000000 | -497.0000000 + 12 | 600 | 30 | 1401-06-01 | .0000000 | 5 | 3 | 3.0000000 | 10.0000000 | -597.0000000 + 1 | 300 | 30 | 1401-05-02 | .0000000 | 0 | 1 | 3.0000000 | 5.0000000 | -299.0000000 + 1 | 100 | 20 | 1401-05-01 | .0000000 | 0 | 1 | 4.0000000 | 2.0000000 | -99.0000000 + 1 | 200 | 10 | 1401-03-01 | .0000000 | 0 | 1 | 5.0000000 | 4.0000000 | -199.0000000 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows current row ); -- mvd 7,4,3->6; + vn | qty | pn | dt | pn | to_char | cn +----+------+-----+------------+-----+-------------------+---- + 10 | 1 | 200 | 1401-03-01 | 200 | .0000000 | 1 + 30 | 1 | 300 | 1401-05-02 | 300 | .0000000 | 1 + 50 | 1 | 400 | 1401-06-01 | 400 | .0000000 | 1 + 50 | 1 | 400 | 1401-06-01 | 400 | .0000000 | 2 + 30 | 12 | 500 | 1401-06-01 | 500 | .0000000 | 1 + 30 | 12 | 500 | 1401-06-01 | 500 | .0000000 | 3 + 30 | 12 | 600 | 1401-06-01 | 600 | .0000000 | 3 + 40 | 1 | 700 | 1401-06-01 | 700 | .0000000 | 4 + 40 | 1 | 800 | 1401-06-01 | 800 | .0000000 | 4 + 40 | 1100 | 100 | 1401-01-01 | 100 | .0000000 | 2 + 40 | 1 | 200 | 1401-04-01 | 200 | .0000000 | 3 + 20 | 1 | 100 | 1401-05-01 | 100 | .0000000 | 1 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows current row ); -- mvd 1,4->3; 1,4->5; + vn | cn | to_char | pn | to_char +----+----+-------------------+-----+------------------- + 20 | 1 | .0000000 | 100 | .0000000 + 40 | 2 | .0000000 | 100 | 2640000.0000000 + 10 | 1 | .0000000 | 200 | .0000000 + 40 | 3 | .0000000 | 200 | .0000000 + 30 | 3 | .0000000 | 600 | 60.0000000 + 40 | 4 | .0000000 | 700 | 1.0000000 + 30 | 1 | .0000000 | 300 | .0000000 + 50 | 1 | .0000000 | 400 | .0000000 + 50 | 2 | .0000000 | 400 | .0000000 + 30 | 1 | .0000000 | 500 | 60.0000000 + 30 | 3 | .0000000 | 500 | 60.0000000 + 40 | 4 | .0000000 | 800 | 1.0000000 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.qty) preceding ); -- mvd 1,3,4,5->2; + cn | to_char | vn | qty | pn +----+-------------------+----+------+----- + 1 | .0000000 | 30 | 1 | 300 + 1 | .0000000 | 50 | 1 | 400 + 3 | .0000000 | 30 | 12 | 600 + 4 | .0000000 | 40 | 1 | 700 + 1 | .0000000 | 20 | 1 | 100 + 2 | .0000000 | 40 | 1100 | 100 + 1 | .0000000 | 10 | 1 | 200 + 3 | .0000000 | 40 | 1 | 200 + 2 | .0000000 | 50 | 1 | 400 + 1 | .0000000 | 30 | 12 | 500 + 3 | .0000000 | 30 | 12 | 500 + 4 | .0000000 | 40 | 1 | 800 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn/ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and 4 preceding ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.qty order by ow_sale.cn desc); -- mvd 3,6,1->5; 3,8,2,6,1->7; + pn | qty | cn | qty | to_char | vn | to_char | dt +-----+------+----+------+-------------------+----+-------------------+------------ + 200 | 1 | 1 | 1 | .0000000 | 10 | .0000000 | 1401-03-01 + 100 | 1 | 1 | 1 | .0000000 | 20 | .0000000 | 1401-05-01 + 600 | 12 | 3 | 12 | .0000000 | 30 | .0000000 | 1401-06-01 + 200 | 1 | 3 | 1 | .0000000 | 40 | .0000000 | 1401-04-01 + 800 | 1 | 4 | 1 | .0000000 | 40 | .0000000 | 1401-06-01 + 400 | 1 | 2 | 1 | .0000000 | 50 | .0000000 | 1401-06-01 + 300 | 1 | 1 | 1 | .0000000 | 30 | .0000000 | 1401-05-02 + 500 | 12 | 1 | 12 | .0000000 | 30 | .0000000 | 1401-06-01 + 500 | 12 | 3 | 12 | .0000000 | 30 | .0000000 | 1401-06-01 + 100 | 1100 | 2 | 1100 | .0000000 | 40 | .0000000 | 1401-01-01 + 700 | 1 | 4 | 1 | .0000000 | 40 | .0000000 | 1401-06-01 + 400 | 1 | 1 | 1 | .0000000 | 50 | .0000000 | 1401-06-01 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty-ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows between unbounded preceding and current row ); -- mvd 3,4,5,6->2; + qty | to_char | cn | dt | vn | pn +------+-------------------+----+------------+----+----- + 1 | .0000000 | 3 | 1401-04-01 | 40 | 200 + 1 | .0000000 | 1 | 1401-05-01 | 20 | 100 + 1 | .0000000 | 2 | 1401-06-01 | 50 | 400 + 1 | .0000000 | 4 | 1401-06-01 | 40 | 700 + 1 | .0000000 | 4 | 1401-06-01 | 40 | 800 + 1100 | .0000000 | 2 | 1401-01-01 | 40 | 100 + 1 | .0000000 | 1 | 1401-03-01 | 10 | 200 + 1 | .0000000 | 1 | 1401-05-02 | 30 | 300 + 1 | .0000000 | 1 | 1401-06-01 | 50 | 400 + 12 | .1100000 | 1 | 1401-06-01 | 30 | 500 + 12 | .0000000 | 3 | 1401-06-01 | 30 | 500 + 12 | .0000000 | 3 | 1401-06-01 | 30 | 600 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn/ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.vn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.qty order by ow_sale.vn desc); -- mvd 5,6->4; 2,8,1,5->7; + qty | cn | qty | to_char | vn | pn | to_char | dt +------+----+------+-------------------+----+-----+-------------------+------------ + 1 | 1 | 1 | .0000000 | 10 | 200 | .0000000 | 1401-03-01 + 1 | 1 | 1 | .0000000 | 20 | 100 | .0000000 | 1401-05-01 + 1 | 1 | 1 | .0000000 | 30 | 300 | .0000000 | 1401-05-02 + 12 | 1 | 12 | .0000000 | 30 | 500 | .0000000 | 1401-06-01 + 12 | 3 | 12 | -.0500000 | 30 | 500 | .0000000 | 1401-06-01 + 12 | 3 | 12 | -.0631579 | 30 | 600 | .0000000 | 1401-06-01 + 1100 | 2 | 1100 | .0000000 | 40 | 100 | .0000000 | 1401-01-01 + 1 | 3 | 1 | -.0700000 | 40 | 200 | .0000000 | 1401-04-01 + 1 | 4 | 1 | -.0132258 | 40 | 700 | .0000000 | 1401-06-01 + 1 | 4 | 1 | -.0114865 | 40 | 800 | .0000000 | 1401-06-01 + 1 | 1 | 1 | .0000000 | 50 | 400 | .0000000 | 1401-06-01 + 1 | 2 | 1 | .0000000 | 50 | 400 | .0000000 | 1401-06-01 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc,ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.vn) following ); -- mvd 7,8,2,1,9->6; + qty | vn | qty | qty | prc | to_char | cn | dt | pn +------+----+------+------+------+-------------------+----+------------+----- + 1 | 10 | 1 | 1 | 0 | .0000000 | 1 | 1401-03-01 | 200 + 1 | 30 | 1 | 1 | 0 | .0000000 | 1 | 1401-05-02 | 300 + 1 | 50 | 1 | 1 | 0 | .0000000 | 1 | 1401-06-01 | 400 + 1100 | 40 | 1100 | 1100 | 2400 | .0000000 | 2 | 1401-01-01 | 100 + 1 | 40 | 1 | 1 | 0 | .0000000 | 3 | 1401-04-01 | 200 + 1 | 20 | 1 | 1 | 0 | .0000000 | 1 | 1401-05-01 | 100 + 1 | 40 | 1 | 1 | 1 | -1.0000000 | 4 | 1401-06-01 | 700 + 1 | 40 | 1 | 1 | 1 | -1.0000000 | 4 | 1401-06-01 | 800 + 1 | 50 | 1 | 1 | 0 | .0000000 | 2 | 1401-06-01 | 400 + 12 | 30 | 12 | 12 | 5 | .0000000 | 1 | 1401-06-01 | 500 + 12 | 30 | 12 | 12 | 5 | -1.0000000 | 3 | 1401-06-01 | 500 + 12 | 30 | 12 | 12 | 5 | -1.0000000 | 3 | 1401-06-01 | 600 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.vn asc rows between unbounded preceding and 1 following ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.cn desc); -- mvd 1,7,5,4->6; 2,3->8; + prc | dt | cn | pn | qty | to_char | vn | to_char +------+------------+----+-----+------+-------------------+----+------------------- + 0 | 1401-05-01 | 1 | 100 | 1 | .0000000 | 20 | 1.0000000 + 0 | 1401-03-01 | 1 | 200 | 1 | .0000000 | 10 | 1.0000000 + 0 | 1401-04-01 | 3 | 200 | 1 | .0000000 | 40 | 1.0000000 + 1 | 1401-06-01 | 4 | 800 | 1 | .0000000 | 40 | 1.0000000 + 5 | 1401-06-01 | 1 | 500 | 12 | .0000000 | 30 | 1.0000000 + 5 | 1401-06-01 | 3 | 500 | 12 | .0000000 | 30 | 1.0000000 + 0 | 1401-05-02 | 1 | 300 | 1 | .0000000 | 30 | 1.0000000 + 0 | 1401-06-01 | 1 | 400 | 1 | .0000000 | 50 | 1.0000000 + 0 | 1401-06-01 | 2 | 400 | 1 | .0000000 | 50 | 1.0000000 + 1 | 1401-06-01 | 4 | 700 | 1 | .0000000 | 40 | 1.0000000 + 5 | 1401-06-01 | 3 | 600 | 12 | .0000000 | 30 | 1.0000000 + 2400 | 1401-01-01 | 2 | 100 | 1100 | .0000000 | 40 | 1.0000000 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn*ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and unbounded following ); -- mvd 1,3,4->2; + qty | to_char | vn | pn +------+-------------------+----+----- + 1 | .0000000 | 20 | 100 + 1 | .0000000 | 10 | 200 + 1 | .0000000 | 40 | 200 + 12 | .0000000 | 30 | 500 + 12 | .0000000 | 30 | 500 + 1 | .0000000 | 40 | 700 + 1100 | .0000000 | 40 | 100 + 1 | .0000000 | 30 | 300 + 1 | .0000000 | 50 | 400 + 1 | .0000000 | 50 | 400 + 12 | .0000000 | 30 | 600 + 1 | .0000000 | 40 | 800 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.qty)) OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.vn asc rows between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn/ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.vn asc rows between unbounded preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.vn asc rows between unbounded preceding and unbounded following ); -- mvd 1,3,4,5,6->2; 1,3,4,5,6->7; 1,3,4,5,6->8; + cn | to_char | dt | qty | vn | pn | to_char | to_char +----+-------------------+------------+------+----+-----+-------------------+------------------- + 1 | .0000000 | 1401-03-01 | 1 | 10 | 200 | 199.0000000 | 200.0000000 + 1 | .0000000 | 1401-05-01 | 1 | 20 | 100 | 99.0000000 | 100.0000000 + 3 | .0000000 | 1401-06-01 | 12 | 30 | 600 | 588.0000000 | 200.0000000 + 3 | .0000000 | 1401-04-01 | 1 | 40 | 200 | 199.0000000 | 66.0000000 + 4 | .0000000 | 1401-06-01 | 1 | 40 | 800 | 799.0000000 | 200.0000000 + 2 | .0000000 | 1401-06-01 | 1 | 50 | 400 | 399.0000000 | 200.0000000 + 1 | .0000000 | 1401-05-02 | 1 | 30 | 300 | 299.0000000 | 300.0000000 + 1 | .0000000 | 1401-06-01 | 12 | 30 | 500 | 488.0000000 | 500.0000000 + 3 | .0000000 | 1401-06-01 | 12 | 30 | 500 | 488.0000000 | 166.0000000 + 2 | .0000000 | 1401-01-01 | 1100 | 40 | 100 | -1000.0000000 | 50.0000000 + 4 | .0000000 | 1401-06-01 | 1 | 40 | 700 | 699.0000000 | 175.0000000 + 1 | .0000000 | 1401-06-01 | 1 | 50 | 400 | 399.0000000 | 400.0000000 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc rows between 0 preceding and 8 preceding ); -- mvd 2,3->7; + dt | cn | pn | qty | pn | vn | to_char +------------+----+-----+------+-----+----+------------------- + 1401-05-01 | 1 | 100 | 1 | 100 | 20 | .0000000 + 1401-03-01 | 1 | 200 | 1 | 200 | 10 | .0000000 + 1401-06-01 | 2 | 400 | 1 | 400 | 50 | .0000000 + 1401-04-01 | 3 | 200 | 1 | 200 | 40 | .0000000 + 1401-06-01 | 3 | 600 | 12 | 600 | 30 | .0000000 + 1401-06-01 | 4 | 800 | 1 | 800 | 40 | .0000000 + 1401-05-02 | 1 | 300 | 1 | 300 | 30 | .0000000 + 1401-06-01 | 1 | 400 | 1 | 400 | 50 | .0000000 + 1401-06-01 | 1 | 500 | 12 | 500 | 30 | .0000000 + 1401-01-01 | 2 | 100 | 1100 | 100 | 40 | .0000000 + 1401-06-01 | 3 | 500 | 12 | 500 | 30 | .0000000 + 1401-06-01 | 4 | 700 | 1 | 700 | 40 | .0000000 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc rows between floor(ow_sale.qty) preceding and current row ); -- mvd 4,1->3; + pn | qty | to_char | cn +-----+------+-------------------+---- + 200 | 1 | .0000000 | 1 + 100 | 1 | .0000000 | 1 + 300 | 1 | .0000000 | 1 + 400 | 1 | .0000000 | 1 + 500 | 12 | 2.2000000 | 1 + 200 | 1 | .0000000 | 3 + 500 | 12 | 2.2000000 | 3 + 600 | 12 | 2.2000000 | 3 + 100 | 1100 | .0000000 | 2 + 400 | 1 | .4579167 | 2 + 700 | 1 | .0000000 | 4 + 800 | 1 | .0000000 | 4 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(partition by ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between 0 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc/ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between 0 preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 3,7,8,9,2->6; 3,7,8,9,2->10; 1->11; + pn | qty | prc | qty | prc | to_char | dt | cn | vn | to_char | to_char +-----+------+------+------+------+-------------------+------------+----+----+-------------------+------------------- + 100 | 1100 | 2400 | 1100 | 2400 | .0000000 | 1401-01-01 | 2 | 40 | 40.0000000 | .0000000 + 200 | 1 | 0 | 1 | 0 | .0000000 | 1401-03-01 | 1 | 10 | 10.0000000 | 1.0000000 + 200 | 1 | 0 | 1 | 0 | .0000000 | 1401-04-01 | 3 | 40 | 40.0000000 | 1.0000000 + 100 | 1 | 0 | 1 | 0 | .0000000 | 1401-05-01 | 1 | 20 | 20.0000000 | 1.0000000 + 300 | 1 | 0 | 1 | 0 | .0000000 | 1401-05-02 | 1 | 30 | 30.0000000 | 1.0000000 + 400 | 1 | 0 | 1 | 0 | .0000000 | 1401-06-01 | 1 | 50 | 50.0000000 | 1.0000000 + 400 | 1 | 0 | 1 | 0 | .0000000 | 1401-06-01 | 2 | 50 | 50.0000000 | 1.0000000 + 500 | 12 | 5 | 12 | 5 | .0000000 | 1401-06-01 | 1 | 30 | 30.0000000 | 12.0000000 + 500 | 12 | 5 | 12 | 5 | .0000000 | 1401-06-01 | 3 | 30 | 30.0000000 | 12.0000000 + 600 | 12 | 5 | 12 | 5 | .0000000 | 1401-06-01 | 3 | 30 | 30.0000000 | 12.0000000 + 700 | 1 | 1 | 1 | 1 | .0000000 | 1401-06-01 | 4 | 40 | 40.0000000 | 1.0000000 + 800 | 1 | 1 | 1 | 1 | .0000000 | 1401-06-01 | 4 | 40 | 40.0000000 | 1.0000000 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn+ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between 5 preceding and floor(ow_sale.pn-ow_sale.cn) following ); -- mvd 2,7,1->6; + pn | cn | qty | prc | dt | to_char | vn +-----+----+------+------+------------+-------------------+---- + 300 | 1 | 1 | 0 | 1401-05-02 | .0000000 | 30 + 400 | 1 | 1 | 0 | 1401-06-01 | .0000000 | 50 + 400 | 2 | 1 | 0 | 1401-06-01 | .0000000 | 50 + 500 | 1 | 12 | 5 | 1401-06-01 | .0000000 | 30 + 500 | 3 | 12 | 5 | 1401-06-01 | .0000000 | 30 + 800 | 4 | 1 | 1 | 1401-06-01 | .0000000 | 40 + 100 | 1 | 1 | 0 | 1401-05-01 | .0000000 | 20 + 100 | 2 | 1100 | 2400 | 1401-01-01 | .0000000 | 40 + 200 | 1 | 1 | 0 | 1401-03-01 | .0000000 | 10 + 200 | 3 | 1 | 0 | 1401-04-01 | .0000000 | 40 + 600 | 3 | 12 | 5 | 1401-06-01 | .0000000 | 30 + 700 | 4 | 1 | 1 | 1401-06-01 | .0000000 | 40 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn*ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between 4 preceding and 0 following ), +win2 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 1,4->3; 4->5; + cn | cn | to_char | vn | to_char +----+----+-------------------+----+------------------- + 2 | 2 | .0000000 | 40 | .0000000 + 1 | 1 | .0000000 | 10 | 10.0000000 + 3 | 3 | .0000000 | 40 | 40.0000000 + 1 | 1 | .0000000 | 20 | 20.0000000 + 1 | 1 | .0000000 | 30 | 30.0000000 + 1 | 1 | .0000000 | 50 | 50.0000000 + 2 | 2 | .0000000 | 50 | 50.0000000 + 1 | 1 | .0536585 | 30 | .0000000 + 3 | 3 | .0000000 | 30 | .0000000 + 3 | 3 | .0000000 | 30 | .0000000 + 4 | 4 | .0000000 | 40 | .0000000 + 4 | 4 | .0000000 | 40 | .0000000 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows between 2 preceding and unbounded following ); -- mvd 3,1,5->4; + vn | qty | dt | to_char | pn +----+------+------------+-------------------+----- + 10 | 1 | 1401-03-01 | .0000000 | 200 + 30 | 12 | 1401-06-01 | .0000000 | 600 + 40 | 1 | 1401-06-01 | .0000000 | 700 + 40 | 1100 | 1401-01-01 | .0000000 | 100 + 20 | 1 | 1401-05-01 | .0000000 | 100 + 40 | 1 | 1401-04-01 | .0000000 | 200 + 30 | 1 | 1401-05-02 | .0000000 | 300 + 50 | 1 | 1401-06-01 | .0000000 | 400 + 50 | 1 | 1401-06-01 | .0000000 | 400 + 30 | 12 | 1401-06-01 | .0000000 | 500 + 30 | 12 | 1401-06-01 | .0000000 | 500 + 40 | 1 | 1401-06-01 | .0000000 | 800 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn+ow_sale.qty),floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between floor(ow_sale.qty) preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.cn asc); -- mvd 1,5,6->4; 1,8->7; + cn | prc | prc | to_char | qty | pn | to_char | vn +----+------+------+-------------------+------+-----+-------------------+---- + 1 | 0 | 0 | .0000000 | 1 | 100 | 1.0000000 | 20 + 1 | 0 | 0 | .0000000 | 1 | 200 | 1.0000000 | 10 + 3 | 0 | 0 | .0000000 | 1 | 200 | 1.0000000 | 40 + 1 | 5 | 5 | .0000000 | 12 | 500 | 1.0000000 | 30 + 3 | 5 | 5 | .0000000 | 12 | 500 | 1.0000000 | 30 + 4 | 1 | 1 | .0000000 | 1 | 700 | 1.0000000 | 40 + 2 | 2400 | 2400 | .0000000 | 1100 | 100 | 1.0000000 | 40 + 1 | 0 | 0 | .0000000 | 1 | 300 | 1.0000000 | 30 + 1 | 0 | 0 | .0000000 | 1 | 400 | 1.0000000 | 50 + 2 | 0 | 0 | .0000000 | 1 | 400 | 1.0000000 | 50 + 3 | 5 | 5 | .0000000 | 12 | 600 | 1.0000000 | 30 + 4 | 1 | 1 | .0000000 | 1 | 800 | 1.0000000 | 40 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn*ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between current row and current row ); -- mvd 1,7,5,8->6; + prc | pn | pn | prc | dt | to_char | cn | vn +------+-----+-----+------+------------+-------------------+----+---- + 0 | 200 | 200 | 0 | 1401-04-01 | .0000000 | 3 | 40 + 0 | 100 | 100 | 0 | 1401-05-01 | .0000000 | 1 | 20 + 0 | 400 | 400 | 0 | 1401-06-01 | .0000000 | 2 | 50 + 2400 | 100 | 100 | 2400 | 1401-01-01 | .0000000 | 2 | 40 + 0 | 200 | 200 | 0 | 1401-03-01 | .0000000 | 1 | 10 + 0 | 300 | 300 | 0 | 1401-05-02 | .0000000 | 1 | 30 + 0 | 400 | 400 | 0 | 1401-06-01 | .0000000 | 1 | 50 + 5 | 500 | 500 | 5 | 1401-06-01 | .0000000 | 1 | 30 + 5 | 500 | 500 | 5 | 1401-06-01 | .0000000 | 3 | 30 + 5 | 600 | 600 | 5 | 1401-06-01 | .0000000 | 3 | 30 + 1 | 700 | 700 | 1 | 1401-06-01 | .0000000 | 4 | 40 + 1 | 800 | 800 | 1 | 1401-06-01 | .0000000 | 4 | 40 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn+ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc rows between current row and current row ), +win2 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.vn order by ow_sale.vn asc); -- mvd 8,1,3->7; 1,2,10,3->9; + cn | vn | pn | cn | vn | vn | to_char | prc | to_char | qty +----+----+-----+----+----+----+-------------------+------+-------------------+------ + 1 | 10 | 200 | 1 | 10 | 10 | .0000000 | 0 | 1.0000000 | 1 + 1 | 20 | 100 | 1 | 20 | 20 | .0000000 | 0 | 1.0000000 | 1 + 1 | 30 | 300 | 1 | 30 | 30 | .0000000 | 0 | 1.0000000 | 1 + 1 | 50 | 400 | 1 | 50 | 50 | .0000000 | 0 | 1.0000000 | 1 + 1 | 30 | 500 | 1 | 30 | 30 | .0000000 | 5 | 1.0000000 | 12 + 3 | 40 | 200 | 3 | 40 | 40 | .0000000 | 0 | 1.0000000 | 1 + 3 | 30 | 500 | 3 | 30 | 30 | .0000000 | 5 | 1.0000000 | 12 + 3 | 30 | 600 | 3 | 30 | 30 | .0000000 | 5 | 1.0000000 | 12 + 4 | 40 | 700 | 4 | 40 | 40 | .0000000 | 1 | 1.0000000 | 1 + 4 | 40 | 800 | 4 | 40 | 40 | .0000000 | 1 | 1.0000000 | 1 + 2 | 50 | 400 | 2 | 50 | 50 | .0000000 | 0 | 1.0000000 | 1 + 2 | 40 | 100 | 2 | 40 | 40 | .0000000 | 2400 | 1.0000000 | 1100 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn+ow_sale.cn),floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.cn asc rows between current row and floor(ow_sale.cn+ow_sale.qty) following ); -- mvd 5,3,1->4; + pn | pn | vn | to_char | cn +-----+-----+----+-------------------+---- + 300 | 300 | 30 | .0000000 | 1 + 400 | 400 | 50 | 2.0000000 | 1 + 400 | 400 | 50 | .0000000 | 2 + 500 | 500 | 30 | 2.0000000 | 1 + 500 | 500 | 30 | .0000000 | 3 + 800 | 800 | 40 | .0000000 | 4 + 100 | 100 | 40 | -.0018215 | 2 + 100 | 100 | 20 | .0000000 | 1 + 200 | 200 | 10 | 2.0000000 | 1 + 200 | 200 | 40 | .0000000 | 3 + 600 | 600 | 30 | .0000000 | 3 + 700 | 700 | 40 | .0000000 | 4 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.cn desc rows between current row and unbounded following ); -- mvd 2,5,6,7->4; + qty | dt | qty | to_char | cn | vn | pn +------+------------+------+-------------------+----+----+----- + 1 | 1401-03-01 | 1 | .0000000 | 1 | 10 | 200 + 1 | 1401-05-01 | 1 | .0000000 | 1 | 20 | 100 + 1 | 1401-06-01 | 1 | .0000000 | 2 | 50 | 400 + 12 | 1401-06-01 | 12 | .0000000 | 3 | 30 | 600 + 1 | 1401-04-01 | 1 | .0000000 | 3 | 40 | 200 + 1 | 1401-06-01 | 1 | .0000000 | 4 | 40 | 800 + 1 | 1401-05-02 | 1 | .0000000 | 1 | 30 | 300 + 12 | 1401-06-01 | 12 | .0000000 | 1 | 30 | 500 + 1 | 1401-06-01 | 1 | .0000000 | 1 | 50 | 400 + 1100 | 1401-01-01 | 1100 | .0000000 | 2 | 40 | 100 + 12 | 1401-06-01 | 12 | .0000000 | 3 | 30 | 500 + 1 | 1401-06-01 | 1 | .0000000 | 4 | 40 | 700 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc*ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between current row and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.pn asc); -- mvd 3,4,5->2; 3,4,5->6; 4,3,1->7; + pn | to_char | cn | dt | vn | to_char | to_char +-----+-------------------+----+------------+----+-------------------+------------------- + 200 | .0000000 | 1 | 1401-03-01 | 10 | .0000000 | 1.0000000 + 300 | .0000000 | 1 | 1401-05-02 | 30 | .0000000 | 1.0000000 + 500 | .0000000 | 1 | 1401-06-01 | 30 | 150.0000000 | 2.0000000 + 500 | .0000000 | 3 | 1401-06-01 | 30 | 150.0000000 | 1.0000000 + 600 | .0000000 | 3 | 1401-06-01 | 30 | 150.0000000 | 2.0000000 + 700 | .0000000 | 4 | 1401-06-01 | 40 | 40.0000000 | 1.0000000 + 800 | .0000000 | 4 | 1401-06-01 | 40 | 40.0000000 | 2.0000000 + 400 | .0000000 | 1 | 1401-06-01 | 50 | .0000000 | 1.0000000 + 400 | .0000000 | 2 | 1401-06-01 | 50 | .0000000 | 1.0000000 + 100 | .0000000 | 2 | 1401-01-01 | 40 | 96000.0000000 | 1.0000000 + 200 | .0000000 | 3 | 1401-04-01 | 40 | .0000000 | 1.0000000 + 100 | .0000000 | 1 | 1401-05-01 | 20 | .0000000 | 1.0000000 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn asc rows between 3 following and 1 following ); -- mvd 3,7,4->6; + qty | dt | cn | pn | prc | to_char | vn +------+------------+----+-----+------+-------------------+---- + 1 | 1401-05-02 | 1 | 300 | 0 | .0000000 | 30 + 1 | 1401-06-01 | 1 | 400 | 0 | .0000000 | 50 + 12 | 1401-06-01 | 1 | 500 | 5 | .0000000 | 30 + 1100 | 1401-01-01 | 2 | 100 | 2400 | .0000000 | 40 + 12 | 1401-06-01 | 3 | 500 | 5 | .0000000 | 30 + 1 | 1401-06-01 | 4 | 700 | 1 | .0000000 | 40 + 1 | 1401-05-01 | 1 | 100 | 0 | .0000000 | 20 + 1 | 1401-03-01 | 1 | 200 | 0 | .0000000 | 10 + 1 | 1401-06-01 | 2 | 400 | 0 | .0000000 | 50 + 1 | 1401-04-01 | 3 | 200 | 0 | .0000000 | 40 + 12 | 1401-06-01 | 3 | 600 | 5 | .0000000 | 30 + 1 | 1401-06-01 | 4 | 800 | 1 | .0000000 | 40 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.vn asc rows between floor(ow_sale.cn) following and unbounded following ); -- mvd 6,1,3,7->5; + cn | qty | vn | cn | to_char | dt | pn +----+------+----+----+-------------------+------------+----- + 1 | 1 | 20 | 1 | .0000000 | 1401-05-01 | 100 + 2 | 1 | 50 | 2 | .0000000 | 1401-06-01 | 400 + 3 | 1 | 40 | 3 | .0000000 | 1401-04-01 | 200 + 4 | 1 | 40 | 4 | .0000000 | 1401-06-01 | 700 + 4 | 1 | 40 | 4 | .0000000 | 1401-06-01 | 800 + 1 | 1 | 10 | 1 | .0000000 | 1401-03-01 | 200 + 1 | 1 | 30 | 1 | .0000000 | 1401-05-02 | 300 + 1 | 12 | 30 | 1 | .0000000 | 1401-06-01 | 500 + 1 | 1 | 50 | 1 | .0000000 | 1401-06-01 | 400 + 2 | 1100 | 40 | 2 | .0000000 | 1401-01-01 | 100 + 3 | 12 | 30 | 3 | .0000000 | 1401-06-01 | 500 + 3 | 12 | 30 | 3 | .0000000 | 1401-06-01 | 600 +(12 rows) + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between floor(ow_sale.vn+ow_sale.vn) following and unbounded following ), +win2 as (order by ow_sale.vn desc); -- mvd 1->7; 1->8; + vn | pn | qty | dt | prc | vn | to_char | to_char +----+-----+------+------------+------+----+-------------------+------------------- + 50 | 400 | 1 | 1401-06-01 | 0 | 50 | .0000000 | 1.0000000 + 50 | 400 | 1 | 1401-06-01 | 0 | 50 | .0000000 | 1.0000000 + 40 | 100 | 1100 | 1401-01-01 | 2400 | 40 | .0000000 | 3.0000000 + 40 | 200 | 1 | 1401-04-01 | 0 | 40 | .0000000 | 3.0000000 + 40 | 700 | 1 | 1401-06-01 | 1 | 40 | .0000000 | 3.0000000 + 40 | 800 | 1 | 1401-06-01 | 1 | 40 | .0000000 | 3.0000000 + 30 | 300 | 1 | 1401-05-02 | 0 | 30 | .0000000 | 7.0000000 + 30 | 500 | 12 | 1401-06-01 | 5 | 30 | .0000000 | 7.0000000 + 30 | 500 | 12 | 1401-06-01 | 5 | 30 | .0000000 | 7.0000000 + 30 | 600 | 12 | 1401-06-01 | 5 | 30 | .0000000 | 7.0000000 + 20 | 100 | 1 | 1401-05-01 | 0 | 20 | .0000000 | 11.0000000 + 10 | 200 | 1 | 1401-03-01 | 0 | 10 | .0000000 | 12.0000000 +(12 rows) + +-- REGR_SXX() function with NULL OVER() clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (); -- mvd 2->2; + cn | to_char +----+------------------- + 1 | 5302642.9166667 + 1 | 5302642.9166667 + 3 | 5302642.9166667 + 2 | 5302642.9166667 + 4 | 5302642.9166667 + 1 | 5302642.9166667 + 1 | 5302642.9166667 + 1 | 5302642.9166667 + 3 | 5302642.9166667 + 3 | 5302642.9166667 + 4 | 5302642.9166667 + 2 | 5302642.9166667 +(12 rows) + +-- REGR_SXX() function with NULL OVER() clause in combination with other window functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn/ow_sale.qty) as int),cast (floor(ow_sale.cn/ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc*ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (), +win2 as (order by ow_sale.ord, ow_sale.vn asc), +win3 as (partition by ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc); -- mvd 5->5; 2->6; 2->7; 9,1->8; + cn | vn | vn | cn | to_char | to_char | to_char | to_char | prc +----+----+----+----+-------------------+-------------------+-------------------+-------------------+------ + 2 | 40 | 40 | 2 | 5273252.9166667 | .0000000 | .0833333 | .0000000 | 2400 + 1 | 10 | 10 | 1 | 5273252.9166667 | 10.0000000 | .1666667 | .0000000 | 0 + 3 | 40 | 40 | 3 | 5273252.9166667 | 40.0000000 | .2500000 | .0000000 | 0 + 1 | 20 | 20 | 1 | 5273252.9166667 | 20.0000000 | .3333333 | .0000000 | 0 + 1 | 30 | 30 | 1 | 5273252.9166667 | 30.0000000 | .4166667 | .0000000 | 0 + 1 | 50 | 50 | 1 | 5273252.9166667 | 50.0000000 | .5000000 | .0000000 | 0 + 2 | 50 | 50 | 2 | 5273252.9166667 | 50.0000000 | .5833333 | .0000000 | 0 + 1 | 30 | 30 | 1 | 5273252.9166667 | 2.0000000 | .6666667 | .0000000 | 5 + 3 | 30 | 30 | 3 | 5273252.9166667 | 2.0000000 | .7500000 | .0000000 | 5 + 3 | 30 | 30 | 3 | 5273252.9166667 | 2.0000000 | .8333333 | .0000000 | 5 + 4 | 40 | 40 | 4 | 5273252.9166667 | 40.0000000 | .9166667 | 40.0000000 | 1 + 4 | 40 | 40 | 4 | 5273252.9166667 | 40.0000000 | 1.0000000 | .0000000 | 1 +(12 rows) + +-- REGR_SXX() function with OVER() clause having ONLY PARTITION BY -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.pn); -- mvd 6,2,3->5; + qty | vn | pn | vn | to_char | prc +------+----+-----+----+-------------------+------ + 1 | 30 | 300 | 30 | .0000000 | 0 + 12 | 30 | 500 | 30 | .0000000 | 5 + 12 | 30 | 500 | 30 | .0000000 | 5 + 1 | 40 | 700 | 40 | .0000000 | 1 + 1 | 50 | 400 | 50 | .0000000 | 0 + 1 | 50 | 400 | 50 | .0000000 | 0 + 1 | 10 | 200 | 10 | .0000000 | 0 + 1 | 20 | 100 | 20 | .0000000 | 0 + 12 | 30 | 600 | 30 | .0000000 | 5 + 1100 | 40 | 100 | 40 | .0000000 | 2400 + 1 | 40 | 200 | 40 | .0000000 | 0 + 1 | 40 | 800 | 40 | .0000000 | 1 +(12 rows) + +-- REGR_SXX() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.vn)) OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.pn), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.cn asc); -- mvd 8,2,3->7; 8->9; 8->10; 8->11; 8->12; 8->13; + prc | vn | pn | vn | pn | pn | to_char | cn | to_char | to_char | to_char | to_char | to_char +------+----+-----+----+-----+-----+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | 40 | 800 | 40 | 800 | 800 | .0000000 | 4 | 1.0000000 | .0000000 | 840.0000000 | 4.0000000 | 1.0000000 + 1 | 40 | 700 | 40 | 700 | 700 | .0000000 | 4 | 2.0000000 | .0000000 | 840.0000000 | 4.0000000 | 1.0000000 + 0 | 40 | 200 | 40 | 200 | 200 | .0000000 | 3 | 3.0000000 | .1818182 | 840.0000000 | 3.0000000 | 1.0000000 + 5 | 30 | 500 | 30 | 500 | 500 | .0000000 | 3 | 4.0000000 | .1818182 | 840.0000000 | 3.0000000 | 1.0000000 + 5 | 30 | 600 | 30 | 600 | 600 | .0000000 | 3 | 5.0000000 | .1818182 | 840.0000000 | 3.0000000 | 1.0000000 + 0 | 50 | 400 | 50 | 400 | 400 | .0000000 | 2 | 6.0000000 | .4545455 | 840.0000000 | 2.0000000 | 1.0000000 + 2400 | 40 | 100 | 40 | 100 | 100 | .0000000 | 2 | 7.0000000 | .4545455 | 840.0000000 | 2.0000000 | 1.0000000 + 0 | 20 | 100 | 20 | 100 | 100 | .0000000 | 1 | 8.0000000 | .6363636 | 840.0000000 | 1.0000000 | 1.0000000 + 5 | 30 | 500 | 30 | 500 | 500 | .0000000 | 1 | 9.0000000 | .6363636 | 840.0000000 | 1.0000000 | 1.0000000 + 0 | 50 | 400 | 50 | 400 | 400 | .0000000 | 1 | 10.0000000 | .6363636 | 840.0000000 | 1.0000000 | 1.0000000 + 0 | 30 | 300 | 30 | 300 | 300 | .0000000 | 1 | 11.0000000 | .6363636 | 840.0000000 | 1.0000000 | 1.0000000 + 0 | 10 | 200 | 10 | 200 | 200 | .0000000 | 1 | 12.0000000 | .6363636 | 840.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_SXX() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc,ow_sale.vn asc); -- mvd 1,6->5; + vn | qty | cn | dt | to_char | pn +----+------+----+------------+-------------------+----- + 20 | 1 | 1 | 1401-05-01 | .0000000 | 100 + 40 | 1100 | 2 | 1401-01-01 | .5000000 | 100 + 10 | 1 | 1 | 1401-03-01 | .6666667 | 200 + 40 | 1 | 3 | 1401-04-01 | 2.7500000 | 200 + 30 | 1 | 1 | 1401-05-02 | 3.2000000 | 300 + 50 | 1 | 1 | 1401-06-01 | 3.7142857 | 400 + 50 | 1 | 2 | 1401-06-01 | 3.7142857 | 400 + 30 | 12 | 1 | 1401-06-01 | 6.0000000 | 500 + 30 | 12 | 3 | 1401-06-01 | 6.0000000 | 500 + 30 | 12 | 3 | 1401-06-01 | 7.6000000 | 600 + 40 | 1 | 4 | 1401-06-01 | 12.0000000 | 700 + 40 | 1 | 4 | 1401-06-01 | 15.6666667 | 800 +(12 rows) + +-- REGR_SXX() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.prc)) OVER(partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc), +win2 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 4->3; 6,4->5; 6,4->7; 4->8; 4->9; + qty | prc | to_char | vn | to_char | cn | to_char | to_char | to_char +------+------+-------------------+----+-------------------+----+-------------------+-------------------+------------------- + 1 | 0 | .0000000 | 10 | 1.0000000 | 1 | 1.0000000 | .0833333 | 10.0000000 + 1 | 0 | .0000000 | 20 | 1.0000000 | 1 | 1.0000000 | .1666667 | 20.0000000 + 1 | 0 | 37.5000000 | 30 | 1.0000000 | 1 | 1.0000000 | .5000000 | 30.0000000 + 12 | 5 | 37.5000000 | 30 | .0000000 | 1 | 1.0000000 | .5000000 | 30.0000000 + 12 | 5 | 37.5000000 | 30 | .0000000 | 3 | 1.0000000 | .5000000 | 30.0000000 + 12 | 5 | 37.5000000 | 30 | .0000000 | 3 | 1.0000000 | .5000000 | 30.0000000 + 1100 | 2400 | 5175888.1000000 | 40 | .0000000 | 2 | -1300.0000000 | .8333333 | 40.0000000 + 1 | 0 | 5175888.1000000 | 40 | 1.0000000 | 3 | -1300.0000000 | .8333333 | 40.0000000 + 1 | 1 | 5175888.1000000 | 40 | 2.0000000 | 4 | -1300.0000000 | .8333333 | 40.0000000 + 1 | 1 | 5175888.1000000 | 40 | .0000000 | 4 | -1300.0000000 | .8333333 | 40.0000000 + 1 | 0 | 5273252.9166667 | 50 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 50.0000000 + 1 | 0 | 5273252.9166667 | 50 | 1.0000000 | 2 | 1.0000000 | 1.0000000 | 50.0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range unbounded preceding ); -- mvd 1->7; + vn | cn | cn | cn | pn | cn | to_char +----+----+----+----+-----+----+------------------- + 10 | 1 | 1 | 1 | 200 | 1 | .0000000 + 20 | 1 | 1 | 1 | 100 | 1 | .0000000 + 30 | 3 | 3 | 3 | 600 | 3 | ########.###### + 30 | 1 | 1 | 1 | 300 | 1 | ########.###### + 30 | 1 | 1 | 1 | 500 | 1 | ########.###### + 30 | 3 | 3 | 3 | 500 | 3 | ########.###### + 40 | 2 | 2 | 2 | 100 | 2 | ########.###### + 40 | 4 | 4 | 4 | 700 | 4 | ########.###### + 40 | 3 | 3 | 3 | 200 | 3 | ########.###### + 40 | 4 | 4 | 4 | 800 | 4 | ########.###### + 50 | 2 | 2 | 2 | 400 | 2 | ########.##### + 50 | 1 | 1 | 1 | 400 | 1 | ########.##### +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.qty order by ow_sale.vn desc), +win4 as (partition by ow_sale.prc order by ow_sale.vn desc); -- mvd 4->3; 6->5; 6->7; 6->8; 10,1,6->9; 12,1->11; + vn | vn | to_char | cn | to_char | pn | to_char | to_char | to_char | qty | to_char | prc +----+----+-------------------+----+-------------------+-----+-------------------+-------------------+-------------------+------+-------------------+------ + 40 | 40 | .0000000 | 4 | .0833333 | 800 | 1.0000000 | 1.0000000 | 1.0000000 | 1 | 1.0000000 | 1 + 40 | 40 | .0000000 | 4 | .1666667 | 700 | 2.0000000 | 2.0000000 | 1.0000000 | 1 | 1.0000000 | 1 + 30 | 30 | 145.2000000 | 3 | .2500000 | 600 | 3.0000000 | 3.0000000 | 1.0000000 | 12 | 1.0000000 | 5 + 30 | 30 | 1101378.6666667 | 1 | .4166667 | 500 | 4.0000000 | 4.0000000 | 1.0000000 | 12 | 1.0000000 | 5 + 30 | 30 | 145.2000000 | 3 | .4166667 | 500 | 4.0000000 | 4.0000000 | 1.0000000 | 12 | 1.0000000 | 5 + 50 | 50 | 1101378.6666667 | 1 | .5833333 | 400 | 5.0000000 | 5.0000000 | 1.0000000 | 1 | 1.0000000 | 0 + 50 | 50 | 1028522.8571429 | 2 | .5833333 | 400 | 5.0000000 | 5.0000000 | 1.0000000 | 1 | 1.0000000 | 0 + 30 | 30 | 1101378.6666667 | 1 | .6666667 | 300 | 6.0000000 | 6.0000000 | 1.0000000 | 1 | 4.0000000 | 0 + 10 | 10 | 1101378.6666667 | 1 | .8333333 | 200 | 7.0000000 | 7.0000000 | 1.0000000 | 1 | 6.0000000 | 0 + 40 | 40 | 145.2000000 | 3 | .8333333 | 200 | 7.0000000 | 7.0000000 | 1.0000000 | 1 | 3.0000000 | 0 + 40 | 40 | 1028522.8571429 | 2 | 1.0000000 | 100 | 8.0000000 | 8.0000000 | 1.0000000 | 1100 | 1.0000000 | 2400 + 20 | 20 | 1101378.6666667 | 1 | 1.0000000 | 100 | 8.0000000 | 8.0000000 | 1.0000000 | 1 | 5.0000000 | 0 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn+ow_sale.cn),floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty*ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range floor(ow_sale.pn*ow_sale.pn) preceding ), +win2 as (partition by ow_sale.qty order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc), +win4 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc); -- mvd 3->2; 5,1->4; 3->6; 8,9,3->7; + qty | to_char | pn | to_char | cn | to_char | to_char | dt | vn +------+------------------+-----+-------------------+----+-------------------+-------------------+------------+---- + 1100 | ########.###### | 100 | 1.0000000 | 2 | .0000000 | .0000000 | 1401-01-01 | 40 + 1 | ########.##### | 200 | 1.0000000 | 1 | 3.0000000 | .0000000 | 1401-03-01 | 10 + 1 | ########.##### | 200 | 6.0000000 | 3 | 1.0000000 | .0000000 | 1401-04-01 | 40 + 1 | ########.###### | 100 | 1.0000000 | 1 | 1.0000000 | .0000000 | 1401-05-01 | 20 + 1 | ########.##### | 300 | 1.0000000 | 1 | 1.0000000 | .0000000 | 1401-05-02 | 30 + 1 | ########.##### | 400 | 1.0000000 | 1 | 2.0000000 | .0000000 | 1401-06-01 | 50 + 1 | ########.##### | 400 | 5.0000000 | 2 | 3.0000000 | .0000000 | 1401-06-01 | 50 + 12 | ########.##### | 500 | 1.0000000 | 1 | .0000000 | .0000000 | 1401-06-01 | 30 + 12 | ########.##### | 500 | 2.0000000 | 3 | .0000000 | .0000000 | 1401-06-01 | 30 + 12 | ########.##### | 600 | 2.0000000 | 3 | .0000000 | .0000000 | 1401-06-01 | 30 + 1 | ########.##### | 700 | 7.0000000 | 4 | .0000000 | .0000000 | 1401-06-01 | 40 + 1 | ########.##### | 800 | 7.0000000 | 4 | .0000000 | .0000000 | 1401-06-01 | 40 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range current row ); -- mvd 3->2; + vn | to_char | pn +----+-------------------+----- + 20 | 200.0000000 | 100 + 40 | 200.0000000 | 100 + 10 | 450.0000000 | 200 + 40 | 450.0000000 | 200 + 30 | .0000000 | 300 + 50 | .0000000 | 400 + 50 | .0000000 | 400 + 30 | .0000000 | 500 + 30 | .0000000 | 500 + 30 | .0000000 | 600 + 40 | .0000000 | 700 + 40 | .0000000 | 800 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ), +win2 as (partition by ow_sale.qty order by ow_sale.cn desc); -- mvd 2->4; 2->5; 2,1->6; + qty | cn | cn | to_char | to_char | to_char +------+----+----+-------------------+-------------------+------------------- + 1 | 4 | 4 | .0000000 | 2.0000000 | .2500000 + 1 | 4 | 4 | .0000000 | 2.0000000 | .2500000 + 1 | 3 | 3 | 66.6666667 | 3.0000000 | .3750000 + 12 | 3 | 3 | 66.6666667 | 3.0000000 | .6666667 + 12 | 3 | 3 | 66.6666667 | 3.0000000 | .6666667 + 1100 | 2 | 2 | 50.0000000 | 2.0000000 | 1.0000000 + 1 | 2 | 2 | 50.0000000 | 2.0000000 | .5000000 + 1 | 1 | 1 | 880.0000000 | 5.0000000 | 1.0000000 + 1 | 1 | 1 | 880.0000000 | 5.0000000 | 1.0000000 + 1 | 1 | 1 | 880.0000000 | 5.0000000 | 1.0000000 + 1 | 1 | 1 | 880.0000000 | 5.0000000 | 1.0000000 + 12 | 1 | 1 | 880.0000000 | 5.0000000 | 1.0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn-ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and floor(ow_sale.prc/ow_sale.pn) preceding ); -- mvd 3->2; + cn | to_char | pn +----+-------------------+----- + 1 | 200.0000000 | 100 + 2 | .0000000 | 100 + 1 | 675.0000000 | 200 + 3 | 675.0000000 | 200 + 1 | 680.0000000 | 300 + 1 | 1371.4285714 | 400 + 2 | 1371.4285714 | 400 + 1 | 1400.0000000 | 500 + 3 | 1400.0000000 | 500 + 3 | 1410.0000000 | 600 + 4 | 1454.5454545 | 700 + 4 | 1491.6666667 | 800 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn-ow_sale.qty),floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty*ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and 4 preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 3->2; 5->4; + dt | to_char | pn | to_char | cn +------------+-------------------+-----+-------------------+---- + 1401-01-01 | 1194.1000000 | 100 | .0000000 | 2 + 1401-03-01 | 566.8750000 | 200 | .0000000 | 1 + 1401-04-01 | 566.8750000 | 200 | .0000000 | 3 + 1401-05-01 | 1194.1000000 | 100 | .0000000 | 1 + 1401-05-02 | 524.0000000 | 300 | .0000000 | 1 + 1401-06-01 | 86.0000000 | 400 | .0000000 | 1 + 1401-06-01 | 86.0000000 | 400 | .0000000 | 2 + 1401-06-01 | 54.0000000 | 500 | .0000000 | 1 + 1401-06-01 | 54.0000000 | 500 | .0000000 | 3 + 1401-06-01 | .0000000 | 600 | .0000000 | 3 + 1401-06-01 | .0000000 | 700 | .0000000 | 4 + 1401-06-01 | .0000000 | 800 | .0000000 | 4 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc-ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and current row ); -- mvd 7->6; + qty | vn | qty | qty | cn | to_char | pn +------+----+------+------+----+-------------------+----- + 1 | 20 | 1 | 1 | 1 | .5000000 | 100 + 1100 | 40 | 1100 | 1100 | 2 | .5000000 | 100 + 1 | 10 | 1 | 1 | 1 | 2.7500000 | 200 + 1 | 40 | 1 | 1 | 3 | 2.7500000 | 200 + 1 | 30 | 1 | 1 | 1 | 3.2000000 | 300 + 1 | 50 | 1 | 1 | 1 | 3.7142857 | 400 + 1 | 50 | 1 | 1 | 2 | 3.7142857 | 400 + 12 | 30 | 12 | 12 | 1 | 6.0000000 | 500 + 12 | 30 | 12 | 12 | 3 | 6.0000000 | 500 + 12 | 30 | 12 | 12 | 3 | 7.6000000 | 600 + 1 | 40 | 1 | 1 | 4 | 12.0000000 | 700 + 1 | 40 | 1 | 1 | 4 | 15.6666667 | 800 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.vn asc); -- mvd 1->4; 2->5; + pn | vn | vn | to_char | to_char +-----+----+----+-------------------+------------------- + 200 | 10 | 10 | 675.0000000 | .0000000 + 100 | 20 | 20 | 200.0000000 | .0909091 + 600 | 30 | 30 | 1410.0000000 | .1818182 + 500 | 30 | 30 | 1400.0000000 | .1818182 + 500 | 30 | 30 | 1400.0000000 | .1818182 + 300 | 30 | 30 | 680.0000000 | .1818182 + 800 | 40 | 40 | 1491.6666667 | .5454545 + 100 | 40 | 40 | 200.0000000 | .5454545 + 200 | 40 | 40 | 675.0000000 | .5454545 + 700 | 40 | 40 | 1454.5454545 | .5454545 + 400 | 50 | 50 | 1371.4285714 | .9090909 + 400 | 50 | 50 | 1371.4285714 | .9090909 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn*ow_sale.cn) following ); -- mvd 4->3; + vn | qty | to_char | cn +----+------+---------------+---- + 10 | 1 | ########.### | 1 + 20 | 1 | ########.### | 1 + 30 | 1 | ########.### | 1 + 50 | 1 | ########.### | 1 + 30 | 12 | ########.### | 1 + 40 | 1100 | ########.### | 2 + 50 | 1 | ########.### | 2 + 40 | 1 | ########.### | 3 + 30 | 12 | ########.### | 3 + 30 | 12 | ########.### | 3 + 40 | 1 | ########.### | 4 + 40 | 1 | ########.### | 4 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.vn desc range between unbounded preceding and 1 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and 1 following ), +win2 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.pn desc), +win3 as (order by ow_sale.vn desc); -- mvd 4->6; 4->7; 4->8; 1,4,10->9; 4->11; + cn | qty | prc | vn | qty | to_char | to_char | to_char | to_char | pn | to_char +----+------+------+----+------+-------------------+-------------------+-------------------+-------------------+-----+------------------- + 1 | 1 | 0 | 50 | 1 | .0000000 | .0000000 | 2.0000000 | .0000000 | 400 | 1.0000000 + 2 | 1 | 0 | 50 | 1 | .0000000 | .0000000 | 2.0000000 | .0000000 | 400 | 1.0000000 + 2 | 1100 | 2400 | 40 | 1100 | 372133.3333333 | 2400.0000000 | 6.0000000 | .0000000 | 100 | 3.0000000 + 4 | 1 | 1 | 40 | 1 | 372133.3333333 | 2400.0000000 | 6.0000000 | .0000000 | 800 | 3.0000000 + 4 | 1 | 1 | 40 | 1 | 372133.3333333 | 2400.0000000 | 6.0000000 | 1.0000000 | 700 | 3.0000000 + 3 | 1 | 0 | 40 | 1 | 372133.3333333 | 2400.0000000 | 6.0000000 | .0000000 | 200 | 3.0000000 + 1 | 1 | 0 | 30 | 1 | 421560.0000000 | 2400.0000000 | 10.0000000 | 1.0000000 | 300 | 7.0000000 + 3 | 12 | 5 | 30 | 12 | 421560.0000000 | 2400.0000000 | 10.0000000 | 1.0000000 | 500 | 7.0000000 + 3 | 12 | 5 | 30 | 12 | 421560.0000000 | 2400.0000000 | 10.0000000 | .0000000 | 600 | 7.0000000 + 1 | 12 | 5 | 30 | 12 | 421560.0000000 | 2400.0000000 | 10.0000000 | .0000000 | 500 | 7.0000000 + 1 | 1 | 0 | 20 | 1 | 544672.7272727 | 2400.0000000 | 11.0000000 | .0000000 | 100 | 11.0000000 + 1 | 1 | 0 | 10 | 1 | 599491.6666667 | 2400.0000000 | 12.0000000 | .0000000 | 200 | 12.0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and unbounded following ); -- mvd 1->3; + vn | cn | to_char +----+----+--------------- + 50 | 2 | ########.### + 50 | 1 | ########.### + 40 | 2 | ########.### + 40 | 4 | ########.### + 40 | 3 | ########.### + 40 | 4 | ########.### + 30 | 3 | ########.### + 30 | 1 | ########.### + 30 | 1 | ########.### + 30 | 3 | ########.### + 20 | 1 | ########.### + 10 | 1 | ########.### +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(order by ow_sale.vn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn-ow_sale.vn) as int),cast (floor(ow_sale.qty+ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.vn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.qty) as int),cast (floor(ow_sale.prc*ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn asc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 3->6; 3->7; 3->8; 3->9; 3->10; 1->11; + pn | cn | vn | prc | prc | to_char | to_char | to_char | to_char | to_char | to_char +-----+----+----+------+------+-------------------+-------------------+-------------------+-------------------+-------------------+------------------- + 100 | 2 | 40 | 2400 | 2400 | 1491.6666667 | 12.0000000 | .0000000 | .0000000 | 12.0000000 | .0000000 + 200 | 1 | 10 | 0 | 0 | 1491.6666667 | 12.0000000 | .0000000 | .0000000 | 12.0000000 | 201.0000000 + 200 | 3 | 40 | 0 | 0 | 1491.6666667 | 12.0000000 | .0000000 | .0000000 | 12.0000000 | 201.0000000 + 100 | 1 | 20 | 0 | 0 | 1491.6666667 | 12.0000000 | .0000000 | .0000000 | 12.0000000 | 101.0000000 + 300 | 1 | 30 | 0 | 0 | 1491.6666667 | 12.0000000 | .0000000 | .0000000 | 12.0000000 | 301.0000000 + 400 | 1 | 50 | 0 | 0 | 1491.6666667 | 12.0000000 | .0000000 | .0000000 | 12.0000000 | 401.0000000 + 400 | 2 | 50 | 0 | 0 | 1491.6666667 | 12.0000000 | .0000000 | .0000000 | 12.0000000 | 401.0000000 + 500 | 1 | 30 | 5 | 5 | 1491.6666667 | 12.0000000 | .0000000 | .0000000 | 12.0000000 | .0000000 + 500 | 3 | 30 | 5 | 5 | 1491.6666667 | 12.0000000 | .0000000 | .0000000 | 12.0000000 | .0000000 + 600 | 3 | 30 | 5 | 5 | 1491.6666667 | 12.0000000 | .0000000 | .0000000 | 12.0000000 | .0000000 + 700 | 4 | 40 | 1 | 1 | 1491.6666667 | 12.0000000 | .0000000 | .0000000 | 12.0000000 | 801.0000000 + 800 | 4 | 40 | 1 | 1 | 1491.6666667 | 12.0000000 | .0000000 | .0000000 | 12.0000000 | .0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 2 preceding and 0 preceding ); -- mvd 3->7; + prc | dt | cn | vn | dt | dt | to_char +------+------------+----+----+------------+------------+------------------- + 0 | 1401-03-01 | 1 | 10 | 1401-03-01 | 1401-03-01 | 100000.0000000 + 0 | 1401-05-01 | 1 | 20 | 1401-05-01 | 1401-05-01 | 100000.0000000 + 0 | 1401-05-02 | 1 | 30 | 1401-05-02 | 1401-05-02 | 100000.0000000 + 5 | 1401-06-01 | 1 | 30 | 1401-06-01 | 1401-06-01 | 100000.0000000 + 0 | 1401-06-01 | 1 | 50 | 1401-06-01 | 1401-06-01 | 100000.0000000 + 2400 | 1401-01-01 | 2 | 40 | 1401-01-01 | 1401-01-01 | 148571.4285714 + 0 | 1401-06-01 | 2 | 50 | 1401-06-01 | 1401-06-01 | 148571.4285714 + 5 | 1401-06-01 | 3 | 30 | 1401-06-01 | 1401-06-01 | 281000.0000000 + 0 | 1401-04-01 | 3 | 40 | 1401-04-01 | 1401-04-01 | 281000.0000000 + 5 | 1401-06-01 | 3 | 30 | 1401-06-01 | 1401-06-01 | 281000.0000000 + 1 | 1401-06-01 | 4 | 40 | 1401-06-01 | 1401-06-01 | 394285.7142857 + 1 | 1401-06-01 | 4 | 40 | 1401-06-01 | 1401-06-01 | 394285.7142857 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.pn-ow_sale.cn) preceding and 0 preceding ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.prc order by ow_sale.cn desc), +win3 as (order by ow_sale.pn desc); -- mvd 5->4; 2,5,1->6; 8->7; + vn | prc | vn | to_char | cn | to_char | to_char | pn +----+------+----+-------------------+----+-------------------+-------------------+----- + 40 | 1 | 40 | 1101378.6666667 | 4 | 1.0000000 | 1.0000000 | 800 + 40 | 1 | 40 | 1101378.6666667 | 4 | 1.0000000 | 2.0000000 | 700 + 30 | 5 | 30 | 1080021.6000000 | 3 | 1.0000000 | 3.0000000 | 600 + 30 | 5 | 30 | 1080021.6000000 | 3 | 1.0000000 | 4.0000000 | 500 + 30 | 5 | 30 | 96.8000000 | 1 | 1.0000000 | 4.0000000 | 500 + 50 | 0 | 50 | 1031907.7142857 | 2 | 1.0000000 | 5.0000000 | 400 + 50 | 0 | 50 | 96.8000000 | 1 | 1.0000000 | 5.0000000 | 400 + 30 | 0 | 30 | 96.8000000 | 1 | 1.0000000 | 6.0000000 | 300 + 10 | 0 | 10 | 96.8000000 | 1 | 1.0000000 | 7.0000000 | 200 + 40 | 0 | 40 | 1080021.6000000 | 3 | 1.0000000 | 7.0000000 | 200 + 40 | 2400 | 40 | 1031907.7142857 | 2 | 1.0000000 | 8.0000000 | 100 + 20 | 0 | 20 | 96.8000000 | 1 | 1.0000000 | 8.0000000 | 100 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.pn-ow_sale.cn) preceding and current row ); -- mvd 1->5; + vn | qty | pn | pn | to_char +----+------+-----+-----+------------------- + 10 | 1 | 200 | 200 | .0000000 + 20 | 1 | 100 | 100 | .0000000 + 30 | 12 | 600 | 600 | 181.5000000 + 30 | 1 | 300 | 300 | 181.5000000 + 30 | 12 | 500 | 500 | 181.5000000 + 30 | 12 | 500 | 500 | 181.5000000 + 40 | 1100 | 100 | 100 | 1080021.6000000 + 40 | 1 | 700 | 700 | 1080021.6000000 + 40 | 1 | 200 | 200 | 1080021.6000000 + 40 | 1 | 800 | 800 | 1080021.6000000 + 50 | 1 | 400 | 400 | 1101378.6666667 + 50 | 1 | 400 | 400 | 1101378.6666667 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc*ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 1 preceding and current row ); -- mvd 6->5; 6->7; + vn | vn | vn | prc | to_char | cn | to_char +----+----+----+------+-------------------+----+------------------- + 40 | 40 | 40 | 1 | .0000000 | 4 | 2.0000000 + 40 | 40 | 40 | 1 | .0000000 | 4 | 2.0000000 + 30 | 30 | 30 | 5 | 1.2000000 | 3 | 5.0000000 + 30 | 30 | 30 | 5 | 1.2000000 | 3 | 5.0000000 + 40 | 40 | 40 | 0 | 1.2000000 | 3 | 5.0000000 + 50 | 50 | 50 | 0 | 1.2000000 | 2 | 5.0000000 + 40 | 40 | 40 | 2400 | 1.2000000 | 2 | 5.0000000 + 30 | 30 | 30 | 0 | 1.4285714 | 1 | 7.0000000 + 30 | 30 | 30 | 5 | 1.4285714 | 1 | 7.0000000 + 50 | 50 | 50 | 0 | 1.4285714 | 1 | 7.0000000 + 10 | 10 | 10 | 0 | 1.4285714 | 1 | 7.0000000 + 20 | 20 | 20 | 0 | 1.4285714 | 1 | 7.0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty-ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 2 preceding and floor(ow_sale.pn) following ); -- mvd 4->3; + vn | qty | to_char | cn +----+------+-------------------+---- + 40 | 1 | 1101378.6666667 | 4 + 40 | 1 | 1101378.6666667 | 4 + 30 | 12 | 1101378.6666667 | 3 + 30 | 12 | 1101378.6666667 | 3 + 40 | 1 | 1101378.6666667 | 3 + 50 | 1 | 1101378.6666667 | 2 + 40 | 1100 | 1101378.6666667 | 2 + 30 | 1 | 1080021.6000000 | 1 + 30 | 12 | 1080021.6000000 | 1 + 50 | 1 | 1080021.6000000 | 1 + 10 | 1 | 1080021.6000000 | 1 + 20 | 1 | 1080021.6000000 | 1 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn-ow_sale.prc),floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(order by ow_sale.cn asc range between 2 preceding and 4 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 2 preceding and 4 following ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.vn asc), +win4 as (order by ow_sale.vn desc), +win5 as (order by ow_sale.cn desc); -- mvd 3->2; 1->4; 1->5; 1->6; 3->7; 3->8; + vn | to_char | cn | to_char | to_char | to_char | to_char | to_char +----+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 50 | 1404.0000000 | 1 | 1.0000000 | 11.0000000 | 1.0000000 | 10.0000000 | 1.0000000 + 50 | 1404.0000000 | 2 | 1.0000000 | 12.0000000 | 1.0000000 | 10.0000000 | .5833333 + 40 | 1404.0000000 | 2 | 2.0000000 | 7.0000000 | 2.0000000 | 10.0000000 | .5833333 + 40 | 309.7142857 | 4 | 2.0000000 | 8.0000000 | 2.0000000 | 30.0000000 | .1666667 + 40 | 1404.0000000 | 3 | 2.0000000 | 9.0000000 | 2.0000000 | 10.0000000 | .4166667 + 40 | 309.7142857 | 4 | 2.0000000 | 10.0000000 | 2.0000000 | 30.0000000 | .1666667 + 30 | 1404.0000000 | 3 | 3.0000000 | 3.0000000 | 3.0000000 | 10.0000000 | .4166667 + 30 | 1404.0000000 | 1 | 3.0000000 | 4.0000000 | 3.0000000 | 10.0000000 | 1.0000000 + 30 | 1404.0000000 | 1 | 3.0000000 | 5.0000000 | 3.0000000 | 10.0000000 | 1.0000000 + 30 | 1404.0000000 | 3 | 3.0000000 | 6.0000000 | 3.0000000 | 10.0000000 | .4166667 + 20 | 1404.0000000 | 1 | 4.0000000 | 2.0000000 | 4.0000000 | 10.0000000 | 1.0000000 + 10 | 1404.0000000 | 1 | 5.0000000 | 1.0000000 | 5.0000000 | 10.0000000 | 1.0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between floor(ow_sale.pn-ow_sale.cn) preceding and unbounded following ); -- mvd 3->2; + cn | to_char | pn +----+-------------------+----- + 4 | 2331978.6666667 | 800 + 4 | 2331978.6666667 | 700 + 3 | 2331978.6666667 | 600 + 1 | 2331978.6666667 | 500 + 3 | 2331978.6666667 | 500 + 1 | 2065398.1818182 | 400 + 2 | 2065398.1818182 | 400 + 1 | 1699216.2222222 | 300 + 1 | 1170080.8000000 | 200 + 3 | 1170080.8000000 | 200 + 1 | 603900.5000000 | 100 + 2 | 603900.5000000 | 100 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn/ow_sale.cn),floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn-ow_sale.pn) as int),cast (floor(ow_sale.cn*ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 2 preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 3->2; 5->4; + qty | to_char | pn | to_char | vn +------+-------------------+-----+-------------------+---- + 1100 | 2880000.0000000 | 100 | .0000000 | 40 + 1 | 4570000.0000000 | 200 | .0000000 | 10 + 1 | 4570000.0000000 | 200 | .0000000 | 40 + 1 | 2880000.0000000 | 100 | .0000000 | 20 + 1 | 5020000.0000000 | 300 | .0000000 | 30 + 1 | 5720000.0000000 | 400 | .0000000 | 50 + 1 | 5720000.0000000 | 400 | .0000000 | 50 + 12 | 6270705.5555556 | 500 | .0000000 | 30 + 12 | 6270705.5555556 | 500 | .0000000 | 30 + 12 | 6555752.5000000 | 600 | .0000000 | 30 + 1 | 6894580.0000000 | 700 | .0000000 | 40 + 1 | 7287852.9166667 | 800 | .0000000 | 40 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and current row ); -- mvd 3->5; + pn | vn | cn | pn | to_char +-----+----+----+-----+------------------- + 800 | 40 | 4 | 800 | .0000000 + 700 | 40 | 4 | 700 | .0000000 + 500 | 30 | 3 | 500 | 66.6666667 + 200 | 40 | 3 | 200 | 66.6666667 + 600 | 30 | 3 | 600 | 66.6666667 + 400 | 50 | 2 | 400 | 50.0000000 + 100 | 40 | 2 | 100 | 50.0000000 + 300 | 30 | 1 | 300 | 880.0000000 + 400 | 50 | 1 | 400 | 880.0000000 + 500 | 30 | 1 | 500 | 880.0000000 + 200 | 10 | 1 | 200 | 880.0000000 + 100 | 20 | 1 | 100 | 880.0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty+ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.vn asc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.qty)) OVER(order by ow_sale.vn asc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and current row ), +win2 as (order by ow_sale.cn asc); -- mvd 5->4; 5->6; 5->7; 1->8; + cn | cn | pn | to_char | vn | to_char | to_char | to_char +----+----+-----+-------------------+----+-------------------+-------------------+------------------- + 1 | 1 | 200 | .0000000 | 10 | 1.0000000 | .0000000 | 1.0000000 + 1 | 1 | 100 | .0000000 | 20 | 1.0000000 | .0000000 | 2.0000000 + 1 | 1 | 300 | 90.7500000 | 30 | 4.0000000 | -11.0000000 | 3.0000000 + 1 | 1 | 500 | 90.7500000 | 30 | 4.0000000 | -11.0000000 | 4.0000000 + 1 | 1 | 400 | .0000000 | 50 | 2.0000000 | .0000000 | 5.0000000 + 2 | 2 | 100 | 905850.7500000 | 40 | 4.0000000 | -1098.0000000 | 6.0000000 + 2 | 2 | 400 | .0000000 | 50 | 2.0000000 | .0000000 | 7.0000000 + 3 | 3 | 600 | 90.7500000 | 30 | 4.0000000 | -11.0000000 | 8.0000000 + 3 | 3 | 200 | 905850.7500000 | 40 | 4.0000000 | -1098.0000000 | 9.0000000 + 3 | 3 | 500 | 90.7500000 | 30 | 4.0000000 | -11.0000000 | 10.0000000 + 4 | 4 | 800 | 905850.7500000 | 40 | 4.0000000 | -1098.0000000 | 11.0000000 + 4 | 4 | 700 | 905850.7500000 | 40 | 4.0000000 | -1098.0000000 | 12.0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn+ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and 3 following ); -- mvd 1->5; + cn | qty | qty | cn | to_char +----+------+------+----+------------------- + 1 | 1 | 1 | 1 | 15.6666667 + 1 | 1 | 1 | 1 | 15.6666667 + 1 | 1 | 1 | 1 | 15.6666667 + 1 | 12 | 12 | 1 | 15.6666667 + 1 | 1 | 1 | 1 | 15.6666667 + 2 | 1 | 1 | 2 | 4.0000000 + 2 | 1100 | 1100 | 2 | 4.0000000 + 3 | 1 | 1 | 3 | 1.2000000 + 3 | 12 | 12 | 3 | 1.2000000 + 3 | 12 | 12 | 3 | 1.2000000 + 4 | 1 | 1 | 4 | .0000000 + 4 | 1 | 1 | 4 | .0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and floor(ow_sale.cn) following ), +win2 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc); -- mvd 7->6; 3,2,7,1->8; 10,3,1->9; 10,3,1->11; + pn | qty | cn | pn | pn | to_char | vn | to_char | to_char | prc | to_char +-----+------+----+-----+-----+-------------------+----+-------------------+-------------------+------+------------------- + 400 | 1 | 1 | 400 | 400 | .0000000 | 50 | .0000000 | .0000000 | 0 | 1.0000000 + 400 | 1 | 2 | 400 | 400 | .0000000 | 50 | .0000000 | .0000000 | 0 | 1.0000000 + 200 | 1 | 3 | 200 | 200 | 3008801.0000000 | 40 | .0000000 | .0000000 | 0 | 1.0000000 + 800 | 1 | 4 | 800 | 800 | 3008801.0000000 | 40 | .0000000 | .0000000 | 1 | 1.0000000 + 100 | 1100 | 2 | 100 | 100 | 3008801.0000000 | 40 | .0000000 | .0000000 | 2400 | 1.0000000 + 700 | 1 | 4 | 700 | 700 | 3008801.0000000 | 40 | .0000000 | .0000000 | 1 | 1.0000000 + 300 | 1 | 1 | 300 | 300 | 49268.7500000 | 30 | .0000000 | .0000000 | 0 | 1.0000000 + 600 | 12 | 3 | 600 | 600 | 49268.7500000 | 30 | .0000000 | .0000000 | 5 | 1.0000000 + 500 | 12 | 1 | 500 | 500 | 49268.7500000 | 30 | .0000000 | .0000000 | 5 | 1.0000000 + 500 | 12 | 3 | 500 | 500 | 49268.7500000 | 30 | .0000000 | .0000000 | 5 | 1.0000000 + 100 | 1 | 1 | 100 | 100 | .0000000 | 20 | .0000000 | .0000000 | 0 | 1.0000000 + 200 | 1 | 1 | 200 | 200 | .0000000 | 10 | .0000000 | .0000000 | 0 | 1.0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and unbounded following ); -- mvd 2->7; + prc | vn | cn | pn | dt | pn | to_char +------+----+----+-----+------------+-----+------------------- + 0 | 50 | 2 | 400 | 1401-06-01 | 400 | 275223.6666667 + 0 | 50 | 1 | 400 | 1401-06-01 | 400 | 275223.6666667 + 2400 | 40 | 2 | 100 | 1401-01-01 | 100 | 269846.1000000 + 1 | 40 | 4 | 700 | 1401-06-01 | 700 | 269846.1000000 + 0 | 40 | 3 | 200 | 1401-04-01 | 200 | 269846.1000000 + 1 | 40 | 4 | 800 | 1401-06-01 | 800 | 269846.1000000 + 5 | 30 | 3 | 600 | 1401-06-01 | 600 | 90.8333333 + 0 | 30 | 1 | 300 | 1401-05-02 | 300 | 90.8333333 + 5 | 30 | 1 | 500 | 1401-06-01 | 500 | 90.8333333 + 5 | 30 | 3 | 500 | 1401-06-01 | 500 | 90.8333333 + 0 | 20 | 1 | 100 | 1401-05-01 | 100 | .0000000 + 0 | 10 | 1 | 200 | 1401-03-01 | 200 | .0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn+ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and unbounded following ), +win2 as (order by ow_sale.pn desc); -- mvd 2->4; 6->5; 6->7; + qty | cn | vn | to_char | to_char | pn | to_char +------+----+----+-------------------+-------------------+-----+------------------- + 1 | 4 | 40 | .0000000 | 1.0000000 | 800 | 8.0000000 + 1 | 4 | 40 | .0000000 | 2.0000000 | 700 | 8.0000000 + 12 | 3 | 30 | 23.2000000 | 3.0000000 | 600 | 6.0000000 + 12 | 3 | 30 | 23.2000000 | 4.0000000 | 500 | 2.0000000 + 12 | 1 | 30 | 5273252.9166667 | 4.0000000 | 500 | 2.0000000 + 1 | 2 | 50 | 4928945.7142857 | 6.0000000 | 400 | 2.0000000 + 1 | 1 | 50 | 5273252.9166667 | 6.0000000 | 400 | 2.0000000 + 1 | 1 | 30 | 5273252.9166667 | 8.0000000 | 300 | 2.0000000 + 1 | 3 | 40 | 23.2000000 | 9.0000000 | 200 | 2.0000000 + 1 | 1 | 10 | 5273252.9166667 | 9.0000000 | 200 | 2.0000000 + 1100 | 2 | 40 | 4928945.7142857 | 11.0000000 | 100 | 2.0000000 + 1 | 1 | 20 | 5273252.9166667 | 11.0000000 | 100 | 2.0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.vn+ow_sale.cn) following and floor(ow_sale.pn+ow_sale.cn) following ); -- mvd 4->3; + pn | cn | to_char | vn +-----+----+-------------------+---- + 200 | 1 | 429560.0000000 | 10 + 100 | 1 | .0000000 | 20 + 600 | 3 | .0000000 | 30 + 300 | 1 | .0000000 | 30 + 500 | 1 | .0000000 | 30 + 500 | 3 | .0000000 | 30 + 100 | 2 | .0000000 | 40 + 700 | 4 | .0000000 | 40 + 200 | 3 | .0000000 | 40 + 800 | 4 | .0000000 | 40 + 400 | 2 | .0000000 | 50 + 400 | 1 | .0000000 | 50 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 4 following and unbounded following ); -- mvd 3->2; + vn | to_char | pn +----+-------------------+----- + 20 | 254.1000000 | 100 + 40 | 254.1000000 | 100 + 10 | 226.8750000 | 200 + 40 | 226.8750000 | 200 + 30 | 207.4285714 | 300 + 50 | 145.2000000 | 400 + 50 | 145.2000000 | 400 + 30 | 80.6666667 | 500 + 30 | 80.6666667 | 500 + 30 | .0000000 | 600 + 40 | .0000000 | 700 + 40 | .0000000 | 800 +(12 rows) + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.vn)) OVER(order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.prc) following and unbounded following ), +win2 as (order by ow_sale.pn asc); -- mvd 1->5; 1->6; 1->7; + pn | pn | pn | vn | to_char | to_char | to_char +-----+-----+-----+----+-------------------+-------------------+------------------- + 100 | 100 | 100 | 20 | 5273252.9166667 | .0000000 | 2.0000000 + 100 | 100 | 100 | 40 | .0000000 | .0000000 | 2.0000000 + 200 | 200 | 200 | 10 | 48.1000000 | .1818182 | 4.0000000 + 200 | 200 | 200 | 40 | 48.1000000 | .1818182 | 4.0000000 + 300 | 300 | 300 | 30 | 40.8750000 | .3636364 | 5.0000000 + 400 | 400 | 400 | 50 | 35.7142857 | .4545455 | 7.0000000 + 400 | 400 | 400 | 50 | 35.7142857 | .4545455 | 7.0000000 + 500 | 500 | 500 | 30 | 10.6666667 | .6363636 | 9.0000000 + 500 | 500 | 500 | 30 | 10.6666667 | .6363636 | 9.0000000 + 600 | 600 | 600 | 30 | .0000000 | .8181818 | 10.0000000 + 700 | 700 | 700 | 40 | .0000000 | .9090909 | 11.0000000 + 800 | 800 | 800 | 40 | .0000000 | 1.0000000 | 12.0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc-ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows unbounded preceding ); -- mvd 4->3; + qty | vn | to_char | pn +------+----+-------------------+----- + 1100 | 40 | .0000000 | 100 + 1 | 10 | 603900.5000000 | 200 + 1 | 40 | 805200.6666667 | 200 + 1 | 20 | 905850.7500000 | 100 + 1 | 30 | 966240.8000000 | 300 + 1 | 50 | 1006500.8333333 | 400 + 1 | 50 | 1035258.0000000 | 400 + 12 | 30 | 1053909.5000000 | 500 + 12 | 30 | 1068416.2222222 | 500 + 12 | 30 | 1080021.6000000 | 600 + 1 | 40 | 1091670.9090909 | 700 + 1 | 40 | 1101378.6666667 | 800 +(12 rows) + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows unbounded preceding ), +win2 as (partition by ow_sale.dt order by ow_sale.vn asc), +win3 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.vn order by ow_sale.cn desc); -- mvd 2,4->3; 6,4->5; 6,2,4->7; + pn | cn | to_char | vn | to_char | dt | to_char +-----+----+-------------------+----+-------------------+------------+------------------- + 100 | 2 | .0000000 | 40 | 1.0000000 | 1401-01-01 | 1.0000000 + 200 | 1 | .0000000 | 10 | 1.0000000 | 1401-03-01 | 1.0000000 + 200 | 3 | .0000000 | 40 | 1.0000000 | 1401-04-01 | 1.0000000 + 100 | 1 | .0000000 | 20 | 1.0000000 | 1401-05-01 | 1.0000000 + 300 | 1 | .0000000 | 30 | 1.0000000 | 1401-05-02 | 1.0000000 + 400 | 1 | .0000000 | 50 | 6.0000000 | 1401-06-01 | 1.0000000 + 400 | 2 | .0000000 | 50 | 6.0000000 | 1401-06-01 | 1.0000000 + 500 | 1 | .0000000 | 30 | 1.0000000 | 1401-06-01 | 1.0000000 + 500 | 3 | .0000000 | 30 | 1.0000000 | 1401-06-01 | 2.0000000 + 600 | 3 | .0000000 | 30 | 1.0000000 | 1401-06-01 | 1.0000000 + 700 | 4 | .0000000 | 40 | 4.0000000 | 1401-06-01 | 2.0000000 + 800 | 4 | .0000000 | 40 | 4.0000000 | 1401-06-01 | 1.0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty+ow_sale.vn),floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.vn asc rows 4 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.vn asc rows 4 preceding ); -- mvd 1,3,4->2; 1,3,4->5; + cn | to_char | vn | pn | to_char +----+-------------------+----+-----+------------------- + 2 | .0000000 | 40 | 100 | 2440.0000000 + 1 | 2415602.0000000 | 10 | 200 | 10.0000000 + 3 | 3220802.6666667 | 40 | 200 | 10.0000000 + 1 | 3623403.0000000 | 20 | 100 | 10.0000000 + 1 | 3864963.2000000 | 30 | 300 | 10.0000000 + 1 | .0000000 | 50 | 400 | 10.0000000 + 2 | .0000000 | 50 | 400 | 20.0000000 + 1 | 387.2000000 | 30 | 500 | 20.0000000 + 3 | 580.8000000 | 30 | 500 | 30.0000000 + 3 | 580.8000000 | 30 | 600 | 35.0000000 + 4 | 580.8000000 | 40 | 700 | 35.0000000 + 4 | 580.8000000 | 40 | 800 | 35.0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn+ow_sale.qty),floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows current row ); -- mvd 3->2; + vn | to_char | cn +----+-------------------+---- + 40 | .0000000 | 2 + 10 | .0000000 | 1 + 40 | .0000000 | 3 + 20 | .0000000 | 1 + 30 | .0000000 | 1 + 50 | .0000000 | 1 + 50 | .0000000 | 2 + 30 | .0000000 | 1 + 30 | .0000000 | 3 + 30 | .0000000 | 3 + 40 | .0000000 | 4 + 40 | .0000000 | 4 +(12 rows) + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.prc+ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.pn desc rows current row ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,4->2; 1->5; 1->6; 1->7; + cn | to_char | vn | pn | to_char | to_char | to_char +----+-------------------+----+-----+-------------------+-------------------+------------------- + 2 | .0000000 | 40 | 100 | .0000000 | .0833333 | .0833333 + 1 | .0000000 | 10 | 200 | .0000000 | .1666667 | .1666667 + 3 | .0000000 | 40 | 200 | .0000000 | .2500000 | .2500000 + 1 | .0000000 | 20 | 100 | .0000000 | .3333333 | .3333333 + 1 | .0000000 | 30 | 300 | .0000000 | .4166667 | .4166667 + 1 | .0000000 | 50 | 400 | .0000000 | .5000000 | .5000000 + 2 | .0000000 | 50 | 400 | 5.0000000 | .5833333 | .5833333 + 1 | .0000000 | 30 | 500 | .0000000 | .6666667 | .6666667 + 3 | .0000000 | 30 | 500 | .0000000 | .7500000 | .7500000 + 3 | .0000000 | 30 | 600 | .0000000 | .8333333 | .8333333 + 4 | .0000000 | 40 | 700 | .0000000 | .9166667 | .9166667 + 4 | .0000000 | 40 | 800 | .0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn+ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc,ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.cn+ow_sale.vn) preceding ); -- mvd 2->4; + dt | vn | dt | to_char +------------+----+------------+------------------- + 1401-01-01 | 40 | 1401-01-01 | .0000000 + 1401-03-01 | 10 | 1401-03-01 | .0000000 + 1401-04-01 | 40 | 1401-04-01 | .0000000 + 1401-05-01 | 20 | 1401-05-01 | .0000000 + 1401-05-02 | 30 | 1401-05-02 | .0000000 + 1401-06-01 | 50 | 1401-06-01 | .0000000 + 1401-06-01 | 50 | 1401-06-01 | .0000000 + 1401-06-01 | 30 | 1401-06-01 | .0000000 + 1401-06-01 | 30 | 1401-06-01 | .0000000 + 1401-06-01 | 30 | 1401-06-01 | .0000000 + 1401-06-01 | 40 | 1401-06-01 | .0000000 + 1401-06-01 | 40 | 1401-06-01 | .0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc-ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and floor(ow_sale.cn/ow_sale.pn) preceding ), +win2 as (partition by ow_sale.vn order by ow_sale.pn asc); -- mvd 5,6->4; 2,6->7; + qty | vn | qty | to_char | cn | pn | to_char +------+----+------+-------------------+----+-----+------------------- + 1100 | 40 | 1100 | .0000000 | 2 | 100 | 1.0000000 + 1 | 10 | 1 | .5000000 | 1 | 200 | 1.0000000 + 1 | 40 | 1 | 2.0000000 | 3 | 200 | 2.0000000 + 1 | 20 | 1 | 2.7500000 | 1 | 100 | 1.0000000 + 1 | 30 | 1 | 3.2000000 | 1 | 300 | 1.0000000 + 1 | 50 | 1 | 3.5000000 | 1 | 400 | 1.0000000 + 1 | 50 | 1 | 3.7142857 | 2 | 400 | 1.0000000 + 12 | 30 | 12 | 4.0000000 | 1 | 500 | 2.0000000 + 12 | 30 | 12 | 6.0000000 | 3 | 500 | 2.0000000 + 12 | 30 | 12 | 7.6000000 | 3 | 600 | 4.0000000 + 1 | 40 | 1 | 12.0000000 | 4 | 700 | 3.0000000 + 1 | 40 | 1 | 15.6666667 | 4 | 800 | 4.0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn-ow_sale.cn),floor(ow_sale.pn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.vn asc rows between unbounded preceding and current row ); -- mvd 3,4,5->2; + prc | to_char | cn | vn | pn +------+-------------------+----+----+----- + 2400 | .0000000 | 2 | 40 | 100 + 0 | 20000.0000000 | 1 | 10 | 200 + 0 | 26666.6666667 | 3 | 40 | 200 + 0 | 27500.0000000 | 1 | 20 | 100 + 0 | 52000.0000000 | 1 | 30 | 300 + 0 | 100000.0000000 | 1 | 50 | 400 + 0 | 134285.7142857 | 2 | 50 | 400 + 5 | 165070.8750000 | 1 | 30 | 500 + 5 | 189014.8888889 | 3 | 30 | 500 + 5 | 205879.6000000 | 3 | 30 | 600 + 1 | 458168.9090909 | 4 | 40 | 700 + 1 | 765376.6666667 | 4 | 40 | 800 +(12 rows) + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(partition by ow_sale.vn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.cn asc), +win3 as (partition by ow_sale.vn order by ow_sale.pn desc), +win4 as (partition by ow_sale.qty order by ow_sale.cn desc); -- mvd 4,7->6; 4,7->8; 2,4,1->9; 7,1->10; 7,1->11; 4,13->12; + pn | dt | pn | cn | cn | to_char | vn | to_char | to_char | to_char | to_char | to_char | qty +-----+------------+-----+----+----+-------------------+----+-------------------+-------------------+-------------------+-------------------+-------------------+------ + 100 | 1401-01-01 | 100 | 2 | 2 | .0000000 | 40 | 1.0000000 | .0000000 | 4.0000000 | 1.0000000 | 1.0000000 | 1100 + 200 | 1401-03-01 | 200 | 1 | 1 | 450.0000000 | 10 | 2.0000000 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1 + 200 | 1401-04-01 | 200 | 3 | 3 | 600.0000000 | 40 | 3.0000000 | .0000000 | 3.0000000 | 1.0000000 | .3750000 | 1 + 100 | 1401-05-01 | 100 | 1 | 1 | 675.0000000 | 20 | 4.0000000 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1 + 300 | 1401-05-02 | 300 | 1 | 1 | 680.0000000 | 30 | 5.0000000 | .0000000 | 4.0000000 | 1.0000000 | 1.0000000 | 1 + 400 | 1401-06-01 | 400 | 1 | 1 | 1083.3333333 | 50 | 6.0000000 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1 + 400 | 1401-06-01 | 400 | 2 | 2 | 1371.4285714 | 50 | 7.0000000 | .0000000 | 1.0000000 | 1.0000000 | .5000000 | 1 + 500 | 1401-06-01 | 500 | 1 | 1 | 1387.5000000 | 30 | 8.0000000 | .0000000 | 2.0000000 | 12.0000000 | 1.0000000 | 12 + 500 | 1401-06-01 | 500 | 3 | 3 | 1400.0000000 | 30 | 9.0000000 | .0000000 | 2.0000000 | 12.0000000 | .6666667 | 12 + 600 | 1401-06-01 | 600 | 3 | 3 | 1410.0000000 | 30 | 10.0000000 | .0000000 | 1.0000000 | 12.0000000 | .6666667 | 12 + 700 | 1401-06-01 | 700 | 4 | 4 | 1454.5454545 | 40 | 11.0000000 | .0000000 | 2.0000000 | 1.0000000 | .2500000 | 1 + 800 | 1401-06-01 | 800 | 4 | 4 | 1491.6666667 | 40 | 12.0000000 | .0000000 | 1.0000000 | 1.0000000 | .2500000 | 1 +(12 rows) + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.vn) following ); -- mvd 2,1,7->6; + vn | cn | cn | qty | dt | to_char | pn +----+----+----+------+------------+-------------------+----- + 40 | 2 | 2 | 1100 | 1401-01-01 | 580000.0000000 | 100 + 10 | 1 | 1 | 1 | 1401-03-01 | 580000.0000000 | 200 + 40 | 3 | 3 | 1 | 1401-04-01 | 580000.0000000 | 200 + 20 | 1 | 1 | 1 | 1401-05-01 | 580000.0000000 | 100 + 30 | 1 | 1 | 1 | 1401-05-02 | 580000.0000000 | 300 + 50 | 1 | 1 | 1 | 1401-06-01 | 580000.0000000 | 400 + 50 | 2 | 2 | 1 | 1401-06-01 | 580000.0000000 | 400 + 30 | 1 | 1 | 12 | 1401-06-01 | 580000.0000000 | 500 + 30 | 3 | 3 | 12 | 1401-06-01 | 580000.0000000 | 500 + 30 | 3 | 3 | 12 | 1401-06-01 | 580000.0000000 | 600 + 40 | 4 | 4 | 1 | 1401-06-01 | 580000.0000000 | 700 + 40 | 4 | 4 | 1 | 1401-06-01 | 580000.0000000 | 800 +(12 rows) + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn*ow_sale.pn),floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and 2 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and 2 following ), +win2 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->2; 3->4; 6,1,7->5; + vn | to_char | pn | to_char | to_char | cn | qty +----+-------------------+-----+-------------------+-------------------+----+------ + 40 | 662.0000000 | 100 | 3.0000000 | .0000000 | 2 | 1100 + 10 | 752.7500000 | 200 | 4.0000000 | 1.0000000 | 1 | 1 + 40 | 755.2000000 | 200 | 5.0000000 | 3.0000000 | 3 | 1 + 20 | 1136.8333333 | 100 | 6.0000000 | 1.0000000 | 1 | 1 + 30 | 1440.8571429 | 300 | 7.0000000 | 1.0000000 | 1 | 1 + 50 | 1461.5000000 | 400 | 8.0000000 | 1.0000000 | 1 | 1 + 50 | 1466.0000000 | 400 | 9.0000000 | 2.0000000 | 2 | 1 + 30 | 1469.6000000 | 500 | 10.0000000 | .0000000 | 1 | 12 + 30 | 1546.5454545 | 500 | 11.0000000 | .0000000 | 3 | 12 + 30 | 1610.6666667 | 600 | 12.0000000 | .0000000 | 3 | 12 + 40 | 1610.6666667 | 700 | 12.0000000 | 4.0000000 | 4 | 1 + 40 | 1610.6666667 | 800 | 12.0000000 | .0000000 | 4 | 1 +(12 rows) + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.pn asc rows between unbounded preceding and unbounded following ); -- mvd 8,2,6->7; + dt | vn | qty | prc | qty | pn | to_char | cn +------------+----+------+------+------+-----+-------------------+---- + 1401-01-01 | 40 | 1100 | 2400 | 1100 | 100 | 5274056.2500000 | 2 + 1401-03-01 | 10 | 1 | 0 | 1 | 200 | 5274056.2500000 | 1 + 1401-04-01 | 40 | 1 | 0 | 1 | 200 | 5274056.2500000 | 3 + 1401-05-01 | 20 | 1 | 0 | 1 | 100 | 5274056.2500000 | 1 + 1401-05-02 | 30 | 1 | 0 | 1 | 300 | 5274056.2500000 | 1 + 1401-06-01 | 50 | 1 | 0 | 1 | 400 | 5274056.2500000 | 1 + 1401-06-01 | 50 | 1 | 0 | 1 | 400 | 5274056.2500000 | 2 + 1401-06-01 | 30 | 12 | 5 | 12 | 500 | 5274056.2500000 | 1 + 1401-06-01 | 30 | 12 | 5 | 12 | 500 | 5274056.2500000 | 3 + 1401-06-01 | 30 | 12 | 5 | 12 | 600 | 5274056.2500000 | 3 + 1401-06-01 | 40 | 1 | 1 | 1 | 700 | 5274056.2500000 | 4 + 1401-06-01 | 40 | 1 | 1 | 1 | 800 | 5274056.2500000 | 4 +(12 rows) + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.cn order by ow_sale.cn asc); -- mvd 8->7; 8->9; 4->10; + pn | prc | dt | cn | cn | pn | to_char | vn | to_char | to_char +-----+------+------------+----+----+-----+-------------+----+-------------------+------------------- + 100 | 2400 | 1401-01-01 | 2 | 2 | 100 | ########.# | 40 | 2400.0000000 | 1.0000000 + 200 | 0 | 1401-03-01 | 1 | 1 | 200 | ########.# | 10 | 2400.0000000 | 1.0000000 + 200 | 0 | 1401-04-01 | 3 | 3 | 200 | ########.# | 40 | 2400.0000000 | 1.0000000 + 100 | 0 | 1401-05-01 | 1 | 1 | 100 | ########.# | 20 | 2400.0000000 | 1.0000000 + 300 | 0 | 1401-05-02 | 1 | 1 | 300 | ########.# | 30 | 2400.0000000 | 1.0000000 + 400 | 0 | 1401-06-01 | 1 | 1 | 400 | ########.# | 50 | 2400.0000000 | 1.0000000 + 400 | 0 | 1401-06-01 | 2 | 2 | 400 | ########.# | 50 | 2400.0000000 | 1.0000000 + 500 | 5 | 1401-06-01 | 1 | 1 | 500 | ########.# | 30 | 2400.0000000 | 1.0000000 + 500 | 5 | 1401-06-01 | 3 | 3 | 500 | ########.# | 30 | 2400.0000000 | 1.0000000 + 600 | 5 | 1401-06-01 | 3 | 3 | 600 | ########.# | 30 | 2400.0000000 | 1.0000000 + 700 | 1 | 1401-06-01 | 4 | 4 | 700 | ########.# | 40 | 2400.0000000 | 1.0000000 + 800 | 1 | 1401-06-01 | 4 | 4 | 800 | ########.# | 40 | 2400.0000000 | 1.0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn+ow_sale.cn),floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between 9 preceding and 8 preceding ); -- mvd 2->5; + cn | pn | qty | dt | to_char +----+-----+------+------------+------------------- + 2 | 100 | 1100 | 1401-01-01 | .0000000 + 1 | 200 | 1 | 1401-03-01 | .0000000 + 3 | 200 | 1 | 1401-04-01 | .0000000 + 1 | 100 | 1 | 1401-05-01 | .0000000 + 1 | 300 | 1 | 1401-05-02 | .0000000 + 1 | 400 | 1 | 1401-06-01 | .0000000 + 2 | 400 | 1 | 1401-06-01 | .0000000 + 1 | 500 | 12 | 1401-06-01 | .0000000 + 3 | 500 | 12 | 1401-06-01 | .0000000 + 3 | 600 | 12 | 1401-06-01 | 2415602.0000000 + 4 | 700 | 1 | 1401-06-01 | .0000000 + 4 | 800 | 1 | 1401-06-01 | .0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn*ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn asc rows between 0 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.vn asc rows between 0 preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between 0 preceding and current row ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.qty order by ow_sale.cn asc); -- mvd 1->6; 1->7; 1->8; 10,11,3->9; 1->12; + vn | vn | qty | prc | qty | to_char | to_char | to_char | to_char | dt | cn | to_char +----+----+------+------+------+-------------------+-------------------+-------------------+-------------------+------------+----+------------------- + 40 | 40 | 1100 | 2400 | 1100 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1401-01-01 | 2 | 1.0000000 + 10 | 10 | 1 | 0 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1401-03-01 | 1 | 1.0000000 + 40 | 40 | 1 | 0 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1401-04-01 | 3 | 1.0000000 + 20 | 20 | 1 | 0 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1401-05-01 | 1 | 1.0000000 + 30 | 30 | 1 | 0 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1401-05-02 | 1 | 1.0000000 + 50 | 50 | 1 | 0 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1401-06-01 | 1 | 1.0000000 + 50 | 50 | 1 | 0 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1401-06-01 | 2 | 1.0000000 + 30 | 30 | 12 | 5 | 12 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1401-06-01 | 1 | 1.0000000 + 30 | 30 | 12 | 5 | 12 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1401-06-01 | 3 | 1.0000000 + 30 | 30 | 12 | 5 | 12 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1401-06-01 | 3 | 1.0000000 + 40 | 40 | 1 | 1 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1401-06-01 | 4 | 1.0000000 + 40 | 40 | 1 | 1 | 1 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1401-06-01 | 4 | 1.0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn*ow_sale.prc),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.cn asc rows between 8 preceding and 7 following ); -- mvd 2,6->5; + qty | cn | vn | cn | to_char | pn +------+----+----+----+-------------------+----- + 1100 | 2 | 40 | 2 | 144887.5000000 | 100 + 1 | 1 | 10 | 1 | 191400.0000000 | 200 + 1 | 3 | 40 | 3 | 274210.0000000 | 200 + 1 | 1 | 20 | 1 | 394000.0000000 | 100 + 1 | 1 | 30 | 1 | 563491.6666667 | 300 + 1 | 1 | 50 | 1 | 563491.6666667 | 400 + 1 | 2 | 50 | 2 | 563491.6666667 | 400 + 12 | 1 | 30 | 1 | 563491.6666667 | 500 + 12 | 3 | 30 | 3 | 563491.6666667 | 500 + 12 | 3 | 30 | 3 | 461454.5454545 | 600 + 1 | 4 | 40 | 4 | 415840.0000000 | 700 + 1 | 4 | 40 | 4 | 344155.5555556 | 800 +(12 rows) + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn+ow_sale.cn),floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between current row and current row ); -- mvd 2->4; + prc | pn | cn | to_char +------+-----+----+------------------- + 2400 | 100 | 2 | .0000000 + 0 | 200 | 1 | .0000000 + 0 | 200 | 3 | .0000000 + 0 | 100 | 1 | .0000000 + 0 | 300 | 1 | .0000000 + 0 | 400 | 1 | .0000000 + 0 | 400 | 2 | .0000000 + 5 | 500 | 1 | .0000000 + 5 | 500 | 3 | .0000000 + 5 | 600 | 3 | .0000000 + 1 | 700 | 4 | .0000000 + 1 | 800 | 4 | .0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty*ow_sale.prc),floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.cn asc rows between current row and 8 following ); -- mvd 4->5; + dt | dt | pn | cn | to_char +------------+------------+-----+----+------------------- + 1401-01-01 | 1401-01-01 | 100 | 2 | .0000000 + 1401-03-01 | 1401-03-01 | 200 | 1 | .0000000 + 1401-04-01 | 1401-04-01 | 200 | 3 | .0000000 + 1401-05-01 | 1401-05-01 | 100 | 1 | .0000000 + 1401-05-02 | 1401-05-02 | 300 | 1 | .0000000 + 1401-06-01 | 1401-06-01 | 400 | 1 | .0000000 + 1401-06-01 | 1401-06-01 | 400 | 2 | .0000000 + 1401-06-01 | 1401-06-01 | 500 | 1 | .0000000 + 1401-06-01 | 1401-06-01 | 500 | 3 | .0000000 + 1401-06-01 | 1401-06-01 | 600 | 3 | .0000000 + 1401-06-01 | 1401-06-01 | 700 | 4 | .0000000 + 1401-06-01 | 1401-06-01 | 800 | 4 | .0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.cn desc rows between current row and unbounded following ); -- mvd 3,4->2; + qty | to_char | cn | pn +------+-------------------+----+----- + 1100 | 1491.6666667 | 2 | 100 + 1 | 1454.5454545 | 1 | 200 + 1 | 840.0000000 | 3 | 200 + 1 | 822.2222222 | 1 | 100 + 1 | 550.0000000 | 1 | 300 + 1 | 485.7142857 | 1 | 400 + 1 | 333.3333333 | 2 | 400 + 12 | 120.0000000 | 1 | 500 + 12 | 100.0000000 | 3 | 500 + 12 | 66.6666667 | 3 | 600 + 1 | .0000000 | 4 | 700 + 1 | .0000000 | 4 | 800 +(12 rows) + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty),floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn+ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 1,2->7; 9->8; + vn | pn | vn | qty | pn | prc | to_char | to_char | cn +----+-----+----+------+-----+------+-------------------+-------------------+---- + 40 | 100 | 40 | 1100 | 100 | 2400 | 12346666.6666667 | .0000000 | 2 + 10 | 200 | 10 | 1 | 200 | 0 | 11589090.9090909 | .0000000 | 1 + 40 | 200 | 40 | 1 | 200 | 0 | 10680000.0000000 | .0000000 | 3 + 20 | 100 | 20 | 1 | 100 | 0 | 10280000.0000000 | .0000000 | 1 + 30 | 300 | 30 | 1 | 300 | 0 | 8748750.0000000 | .0000000 | 1 + 50 | 400 | 50 | 1 | 400 | 0 | 7334285.7142857 | .0000000 | 1 + 50 | 400 | 50 | 1 | 400 | 0 | 5733333.3333333 | .0000000 | 2 + 30 | 500 | 30 | 12 | 500 | 5 | 4612000.0000000 | .0000000 | 1 + 30 | 500 | 30 | 12 | 500 | 5 | 1947500.0000000 | .0000000 | 3 + 30 | 600 | 30 | 12 | 600 | 5 | 1040000.0000000 | .0000000 | 3 + 40 | 700 | 40 | 1 | 700 | 1 | 80000.0000000 | .0000000 | 4 + 40 | 800 | 40 | 1 | 800 | 1 | .0000000 | .0000000 | 4 +(12 rows) + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn+ow_sale.qty),floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.pn desc rows between floor(ow_sale.prc*ow_sale.pn) following and 1 following ); -- mvd 3,8->7; + qty | dt | cn | cn | cn | dt | to_char | pn +------+------------+----+----+----+------------+-------------------+----- + 1100 | 1401-01-01 | 2 | 2 | 2 | 1401-01-01 | .0000000 | 100 + 1 | 1401-03-01 | 1 | 1 | 1 | 1401-03-01 | 392.0000000 | 200 + 1 | 1401-04-01 | 3 | 3 | 3 | 1401-04-01 | 162.0000000 | 200 + 1 | 1401-05-01 | 1 | 1 | 1 | 1401-05-01 | 50.0000000 | 100 + 1 | 1401-05-02 | 1 | 1 | 1 | 1401-05-02 | 200.0000000 | 300 + 1 | 1401-06-01 | 1 | 1 | 1 | 1401-06-01 | .5000000 | 400 + 1 | 1401-06-01 | 2 | 2 | 2 | 1401-06-01 | 180.5000000 | 400 + 12 | 1401-06-01 | 1 | 1 | 1 | 1401-06-01 | .0000000 | 500 + 12 | 1401-06-01 | 3 | 3 | 3 | 1401-06-01 | .0000000 | 500 + 12 | 1401-06-01 | 3 | 3 | 3 | 1401-06-01 | .0000000 | 600 + 1 | 1401-06-01 | 4 | 4 | 4 | 1401-06-01 | .0000000 | 700 + 1 | 1401-06-01 | 4 | 4 | 4 | 1401-06-01 | .0000000 | 800 +(12 rows) + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.pn,ow_sale.prc,ow_sale.cn order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.prc,ow_sale.cn order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.qty-ow_sale.qty) following and floor(ow_sale.vn/ow_sale.cn) following ), +win2 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.vn desc), +win3 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.cn order by ow_sale.pn asc), +win4 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->6; 8,5,3->7; 2,4,3->9; 2,4,3->10; 2,4,3->11; 2,1,4->12; + dt | prc | pn | cn | qty | to_char | to_char | vn | to_char | to_char | to_char | to_char +------------+------+-----+----+------+-------------------+-------------------+----+-------------------+-------------------+-------------------+------------------- + 1401-01-01 | 2400 | 100 | 2 | 1100 | 1030778.6666667 | 1.0000000 | 40 | .0000000 | 1.0000000 | 550.0000000 | .0000000 + 1401-03-01 | 0 | 200 | 1 | 1 | 489082.1818182 | 2.0000000 | 10 | .0000000 | 1.0000000 | 1.0000000 | .0000000 + 1401-04-01 | 0 | 200 | 3 | 1 | 430754.1000000 | 1.0000000 | 40 | .0000000 | 1.0000000 | .0000000 | .0000000 + 1401-05-01 | 0 | 100 | 1 | 1 | 359464.2222222 | 1.0000000 | 20 | .0000000 | 1.0000000 | 1.0000000 | .0000000 + 1401-05-02 | 0 | 300 | 1 | 1 | 195776.8750000 | 1.0000000 | 30 | .0000000 | 1.0000000 | 1.0000000 | .0000000 + 1401-06-01 | 0 | 400 | 1 | 1 | 135778.8571429 | 2.0000000 | 50 | .0000000 | 1.0000000 | 1.0000000 | .0000000 + 1401-06-01 | 0 | 400 | 2 | 1 | 105214.8333333 | 1.0000000 | 50 | .0000000 | 1.0000000 | .0000000 | .0000000 + 1401-06-01 | 5 | 500 | 1 | 12 | 62425.2000000 | 1.0000000 | 30 | .0000000 | 1.0000000 | 12.0000000 | .0000000 + 1401-06-01 | 5 | 500 | 3 | 12 | 45721.0000000 | 2.0000000 | 30 | .0000000 | 1.0000000 | 4.0000000 | .0000000 + 1401-06-01 | 5 | 600 | 3 | 12 | 17880.6666667 | 1.0000000 | 30 | .0000000 | 1.0000000 | 4.0000000 | .0000000 + 1401-06-01 | 1 | 700 | 4 | 1 | 5000.0000000 | 1.0000000 | 40 | .0000000 | 1.0000000 | .0000000 | .0000000 + 1401-06-01 | 1 | 800 | 4 | 1 | .0000000 | 1.0000000 | 40 | .0000000 | 1.0000000 | .0000000 | .0000000 +(12 rows) + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty-ow_sale.cn),floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc,ow_sale.vn asc rows between 3 following and unbounded following ); -- mvd 3,4->2; + qty | to_char | cn | vn +------+-------------------+----+---- + 1100 | 248.2222222 | 2 | 40 + 1 | 241.5000000 | 1 | 10 + 1 | 232.8571429 | 3 | 40 + 1 | 221.3333333 | 1 | 20 + 1 | 195.2000000 | 1 | 30 + 1 | 144.0000000 | 1 | 50 + 1 | 96.0000000 | 2 | 50 + 12 | .0000000 | 1 | 30 + 12 | .0000000 | 3 | 30 + 12 | .0000000 | 3 | 30 + 1 | .0000000 | 4 | 40 + 1 | .0000000 | 4 | 40 +(12 rows) + +-- REGR_SXX() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.pn +, +TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.prc) as int),cast (floor(ow_sale.pn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.pn,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.pn,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc,ow_sale.cn desc,ow_sale.pn asc), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc); -- mvd 4,5,1,6,2,7->3; 4,5,1,6,2,7->8; 7->9; 4,2,7->10; 4,2,7->11; 4,2,7->12; + dt | qty | to_char | prc | cn | vn | pn | to_char | to_char | to_char | to_char | to_char +------------+------+-------------------+------+----+----+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 1401-01-01 | 1100 | .0000000 | 2400 | 2 | 40 | 100 | 1.0000000 | .0000000 | .0000000 | 1.0000000 | 1.0000000 + 1401-03-01 | 1 | .0000000 | 0 | 1 | 10 | 200 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1401-04-01 | 1 | .0000000 | 0 | 3 | 40 | 200 | 1.0000000 | .0000000 | .0000000 | 2.0000000 | 2.0000000 + 1401-05-01 | 1 | .0000000 | 0 | 1 | 20 | 100 | 1.0000000 | .0000000 | .0000000 | 1.0000000 | 1.0000000 + 1401-05-02 | 1 | .0000000 | 0 | 1 | 30 | 300 | 1.0000000 | .0000000 | .0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 1 | .0000000 | 0 | 1 | 50 | 400 | 1.0000000 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 1 | .0000000 | 0 | 2 | 50 | 400 | .5000000 | .0000000 | .0000000 | 2.0000000 | 2.0000000 + 1401-06-01 | 12 | 6666.6666667 | 5 | 1 | 30 | 500 | 1.0000000 | .0000000 | .0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 12 | .0000000 | 5 | 3 | 30 | 500 | .3333333 | .0000000 | .0000000 | 2.0000000 | 2.0000000 + 1401-06-01 | 12 | 5000.0000000 | 5 | 3 | 30 | 600 | .6666667 | .0000000 | .0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 1 | .0000000 | 1 | 4 | 40 | 700 | .5000000 | .0000000 | .0000000 | 1.0000000 | 1.0000000 + 1401-06-01 | 1 | 5000.0000000 | 1 | 4 | 40 | 800 | 1.0000000 | .0000000 | .0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn/ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.qty order by ow_sale.pn asc range unbounded preceding ); -- mvd 6,7,2,1->5; + pn | vn | pn | vn | to_char | prc | qty +-----+----+-----+----+-------------------+------+------ + 200 | 10 | 200 | 10 | .0000000 | 0 | 1 + 100 | 20 | 100 | 20 | .0000000 | 0 | 1 + 300 | 30 | 300 | 30 | .0000000 | 0 | 1 + 200 | 40 | 200 | 40 | .0000000 | 0 | 1 + 400 | 50 | 400 | 50 | .0000000 | 0 | 1 + 400 | 50 | 400 | 50 | .0000000 | 0 | 1 + 500 | 30 | 500 | 30 | .0000000 | 5 | 12 + 500 | 30 | 500 | 30 | .0000000 | 5 | 12 + 600 | 30 | 600 | 30 | .0000000 | 5 | 12 + 700 | 40 | 700 | 40 | .0000000 | 1 | 1 + 800 | 40 | 800 | 40 | .0000000 | 1 | 1 + 100 | 40 | 100 | 40 | .0000000 | 2400 | 1100 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.qty)) OVER(partition by ow_sale.vn,ow_sale.cn order by ow_sale.pn asc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.pn asc range unbounded preceding ), +win2 as (order by ow_sale.vn desc); -- mvd 4,5,2->3; 4,5,2->6; 5->7; 4,5,2->8; 5->9; + qty | pn | to_char | cn | vn | to_char | to_char | to_char | to_char +------+-----+-------------------+----+----+-------------------+-------------------+-------------------+------------------- + 1 | 400 | .0000000 | 1 | 50 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 400 | .0000000 | 2 | 50 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1100 | 100 | .0000000 | 2 | 40 | 1.0000000 | 3.0000000 | 1.0000000 | 2.0000000 + 1 | 700 | .0000000 | 4 | 40 | 1.0000000 | 3.0000000 | 1.0000000 | 2.0000000 + 1 | 800 | 5000.0000000 | 4 | 40 | 2.0000000 | 3.0000000 | 2.0000000 | 2.0000000 + 1 | 200 | .0000000 | 3 | 40 | 1.0000000 | 3.0000000 | 1.0000000 | 2.0000000 + 12 | 500 | 20000.0000000 | 1 | 30 | 2.0000000 | 7.0000000 | 2.0000000 | 3.0000000 + 12 | 600 | 5000.0000000 | 3 | 30 | 2.0000000 | 7.0000000 | 2.0000000 | 3.0000000 + 12 | 500 | .0000000 | 3 | 30 | 1.0000000 | 7.0000000 | 1.0000000 | 3.0000000 + 1 | 300 | .0000000 | 1 | 30 | 1.0000000 | 7.0000000 | 1.0000000 | 3.0000000 + 1 | 100 | .0000000 | 1 | 20 | 1.0000000 | 11.0000000 | 1.0000000 | 4.0000000 + 1 | 200 | .0000000 | 1 | 10 | 1.0000000 | 12.0000000 | 1.0000000 | 5.0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn/ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.qty)) OVER(partition by ow_sale.cn order by ow_sale.cn desc range floor(ow_sale.prc) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.cn desc range floor(ow_sale.prc) preceding ), +win2 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.pn order by ow_sale.cn asc), +win3 as (partition by ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc); -- mvd 7->6; 7->8; 7,1,3->9; 11,4,3->10; + qty | qty | pn | dt | vn | to_char | cn | to_char | to_char | to_char | prc +------+------+-----+------------+----+-------------------+----+-------------------+-------------------+-------------------+------ + 1 | 1 | 400 | 1401-06-01 | 50 | 603900.5000000 | 2 | .0000000 | 1.0000000 | .0000000 | 0 + 1100 | 1100 | 100 | 1401-01-01 | 40 | 603900.5000000 | 2 | .0000000 | 1.0000000 | .0000000 | 2400 + 1 | 1 | 700 | 1401-06-01 | 40 | .0000000 | 4 | .0000000 | 1.0000000 | .0000000 | 1 + 1 | 1 | 800 | 1401-06-01 | 40 | .0000000 | 4 | .0000000 | 1.0000000 | .0000000 | 1 + 1 | 1 | 300 | 1401-05-02 | 30 | 96.8000000 | 1 | .0000000 | 1.0000000 | .0000000 | 0 + 1 | 1 | 400 | 1401-06-01 | 50 | 96.8000000 | 1 | .0000000 | 1.0000000 | .0000000 | 0 + 1 | 1 | 100 | 1401-05-01 | 20 | 96.8000000 | 1 | .0000000 | 1.0000000 | .0000000 | 0 + 1 | 1 | 200 | 1401-03-01 | 10 | 96.8000000 | 1 | .0000000 | 1.0000000 | .0000000 | 0 + 12 | 12 | 500 | 1401-06-01 | 30 | 96.8000000 | 1 | .0000000 | 1.0000000 | .0000000 | 5 + 12 | 12 | 600 | 1401-06-01 | 30 | 80.6666667 | 3 | .0000000 | 1.0000000 | .0000000 | 5 + 12 | 12 | 500 | 1401-06-01 | 30 | 80.6666667 | 3 | .0000000 | 1.0000000 | .0000000 | 5 + 1 | 1 | 200 | 1401-04-01 | 40 | 80.6666667 | 3 | .0000000 | 1.0000000 | .0000000 | 0 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.prc order by ow_sale.cn asc range current row ); -- mvd 5,3,6->4; + qty | dt | cn | to_char | prc | pn +------+------------+----+-------------------+------+----- + 1 | 1401-05-01 | 1 | .0000000 | 0 | 100 + 1 | 1401-03-01 | 1 | .0000000 | 0 | 200 + 1 | 1401-06-01 | 2 | .0000000 | 0 | 400 + 1 | 1401-04-01 | 3 | .0000000 | 0 | 200 + 12 | 1401-06-01 | 3 | .0000000 | 5 | 600 + 1 | 1401-06-01 | 4 | .0000000 | 1 | 700 + 1 | 1401-05-02 | 1 | .0000000 | 0 | 300 + 1 | 1401-06-01 | 1 | .0000000 | 0 | 400 + 12 | 1401-06-01 | 1 | .0000000 | 5 | 500 + 1100 | 1401-01-01 | 2 | .0000000 | 2400 | 100 + 12 | 1401-06-01 | 3 | .0000000 | 5 | 500 + 1 | 1401-06-01 | 4 | .0000000 | 1 | 800 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.qty order by ow_sale.cn desc range current row ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc); -- mvd 5,1,2,6->4; 1,2->7; + dt | cn | dt | to_char | prc | qty | to_char +------------+----+------------+-------------------+------+------+------------------- + 1401-05-01 | 1 | 1401-05-01 | .0000000 | 0 | 1 | 1.0000000 + 1401-06-01 | 2 | 1401-06-01 | .0000000 | 0 | 1 | 1.0000000 + 1401-04-01 | 3 | 1401-04-01 | .0000000 | 0 | 1 | 1.0000000 + 1401-06-01 | 4 | 1401-06-01 | .0000000 | 1 | 1 | 1.0000000 + 1401-06-01 | 4 | 1401-06-01 | .0000000 | 1 | 1 | 1.0000000 + 1401-03-01 | 1 | 1401-03-01 | .0000000 | 0 | 1 | 1.0000000 + 1401-05-02 | 1 | 1401-05-02 | .0000000 | 0 | 1 | 1.0000000 + 1401-06-01 | 1 | 1401-06-01 | .0000000 | 0 | 1 | 1.0000000 + 1401-06-01 | 1 | 1401-06-01 | .0000000 | 5 | 12 | 1.0000000 + 1401-01-01 | 2 | 1401-01-01 | .0000000 | 2400 | 1100 | 1.0000000 + 1401-06-01 | 3 | 1401-06-01 | .0000000 | 5 | 12 | 1.0000000 + 1401-06-01 | 3 | 1401-06-01 | .0000000 | 5 | 12 | 1.0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc+ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc range between unbounded preceding and 2 preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 3,1,4,5->2; 1->6; + cn | to_char | prc | dt | vn | to_char +----+-------------------+------+------------+----+------------------- + 4 | .0000000 | 1 | 1401-06-01 | 40 | 1.0000000 + 4 | .0000000 | 1 | 1401-06-01 | 40 | 1.0000000 + 3 | .0000000 | 0 | 1401-04-01 | 40 | 2.0000000 + 3 | .0000000 | 5 | 1401-06-01 | 30 | 2.0000000 + 3 | .0000000 | 5 | 1401-06-01 | 30 | 2.0000000 + 2 | .0000000 | 0 | 1401-06-01 | 50 | 3.0000000 + 2 | .0000000 | 2400 | 1401-01-01 | 40 | 3.0000000 + 1 | .0000000 | 0 | 1401-05-01 | 20 | 4.0000000 + 1 | .0000000 | 5 | 1401-06-01 | 30 | 4.0000000 + 1 | .0000000 | 0 | 1401-03-01 | 10 | 4.0000000 + 1 | .0000000 | 0 | 1401-06-01 | 50 | 4.0000000 + 1 | .0000000 | 0 | 1401-05-02 | 30 | 4.0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.pn asc range between unbounded preceding and current row ); -- mvd 3,4->2; + qty | to_char | cn | pn +------+-------------------+----+----- + 1 | .0000000 | 1 | 100 + 1 | .0000000 | 1 | 200 + 1 | .0000000 | 3 | 200 + 1 | .0000000 | 2 | 400 + 12 | .0000000 | 3 | 600 + 1 | .0000000 | 4 | 800 + 1100 | .0000000 | 2 | 100 + 1 | .0000000 | 1 | 300 + 1 | .0000000 | 1 | 400 + 12 | .0000000 | 1 | 500 + 12 | .0000000 | 3 | 500 + 1 | .0000000 | 4 | 700 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty+ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc-ow_sale.vn)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.vn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.pn order by ow_sale.cn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.vn desc); -- mvd 3,4,5->2; 3->6; 4->7; 4->8; 3->9; 4->10; + dt | to_char | cn | vn | pn | to_char | to_char | to_char | to_char | to_char +------------+-------------------+----+----+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 1401-06-01 | .0000000 | 4 | 40 | 800 | .1666667 | 6.0000000 | 2360.0000000 | 1.0000000 | .0000000 + 1401-06-01 | .0000000 | 4 | 40 | 700 | .1666667 | 4.0000000 | 2360.0000000 | 1.0000000 | .0000000 + 1401-06-01 | .0000000 | 3 | 30 | 600 | .4166667 | 7.0000000 | 2360.0000000 | 5.0000000 | .0000000 + 1401-06-01 | .0000000 | 3 | 30 | 500 | .4166667 | 10.0000000 | 2360.0000000 | 5.0000000 | .0000000 + 1401-04-01 | .0000000 | 3 | 40 | 200 | .4166667 | 5.0000000 | 2360.0000000 | 5.0000000 | .0000000 + 1401-06-01 | .0000000 | 2 | 50 | 400 | .5833333 | 1.0000000 | -50.0000000 | 2400.0000000 | .0000000 + 1401-01-01 | .0000000 | 2 | 40 | 100 | .5833333 | 3.0000000 | 2360.0000000 | 2400.0000000 | .0000000 + 1401-05-02 | .0000000 | 1 | 30 | 300 | 1.0000000 | 8.0000000 | 2360.0000000 | 2400.0000000 | .0000000 + 1401-06-01 | .0000000 | 1 | 30 | 500 | 1.0000000 | 9.0000000 | 2360.0000000 | 2400.0000000 | .0000000 + 1401-06-01 | .0000000 | 1 | 50 | 400 | 1.0000000 | 2.0000000 | -50.0000000 | 2400.0000000 | .0000000 + 1401-05-01 | .0000000 | 1 | 20 | 100 | 1.0000000 | 11.0000000 | 2360.0000000 | 2400.0000000 | .0000000 + 1401-03-01 | .0000000 | 1 | 10 | 200 | 1.0000000 | 12.0000000 | 2360.0000000 | 2400.0000000 | .0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.cn desc range between unbounded preceding and 1 following ); -- mvd 4,5,6->3; + qty | pn | to_char | dt | cn | vn +------+-----+-------------------+------------+----+---- + 1 | 100 | .0000000 | 1401-05-01 | 1 | 20 + 1 | 400 | .0000000 | 1401-06-01 | 2 | 50 + 1 | 200 | .0000000 | 1401-04-01 | 3 | 40 + 1 | 800 | .0000000 | 1401-06-01 | 4 | 40 + 1 | 700 | .0000000 | 1401-06-01 | 4 | 40 + 1 | 200 | .0000000 | 1401-03-01 | 1 | 10 + 1 | 300 | .0000000 | 1401-05-02 | 1 | 30 + 12 | 500 | .0000000 | 1401-06-01 | 1 | 30 + 1 | 400 | .0000000 | 1401-06-01 | 1 | 50 + 1100 | 100 | .0000000 | 1401-01-01 | 2 | 40 + 12 | 600 | .0000000 | 1401-06-01 | 3 | 30 + 12 | 500 | .0000000 | 1401-06-01 | 3 | 30 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty),floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.prc,ow_sale.vn order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.vn/ow_sale.vn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.vn/ow_sale.vn) following ); -- mvd 6,1,7->5; 6,1,7->8; 6,1,7->9; + cn | qty | cn | qty | to_char | prc | vn | to_char | to_char +----+------+----+------+-------------------+------+----+-------------------+------------------- + 4 | 1 | 4 | 1 | .0000000 | 1 | 40 | 800.0000000 | 2.0000000 + 4 | 1 | 4 | 1 | .0000000 | 1 | 40 | 800.0000000 | 2.0000000 + 1 | 1 | 1 | 1 | .0000000 | 0 | 10 | 200.0000000 | 2.0000000 + 1 | 1 | 1 | 1 | .0000000 | 0 | 20 | 100.0000000 | 2.0000000 + 1 | 1 | 1 | 1 | .0000000 | 0 | 30 | 300.0000000 | 2.0000000 + 3 | 1 | 3 | 1 | .0000000 | 0 | 40 | 200.0000000 | 2.0000000 + 2 | 1 | 2 | 1 | .0000000 | 0 | 50 | 400.0000000 | 2.0000000 + 1 | 1 | 1 | 1 | .0000000 | 0 | 50 | 400.0000000 | 2.0000000 + 3 | 12 | 3 | 12 | .0000000 | 5 | 30 | 600.0000000 | 24.0000000 + 3 | 12 | 3 | 12 | .0000000 | 5 | 30 | 600.0000000 | 24.0000000 + 1 | 12 | 1 | 12 | .0000000 | 5 | 30 | 600.0000000 | 24.0000000 + 2 | 1100 | 2 | 1100 | .0000000 | 2400 | 40 | 100.0000000 | 2200.0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty),floor(ow_sale.vn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 4,5->3; + qty | qty | to_char | dt | vn +------+------+-------------------+------------+---- + 1 | 1 | .0000000 | 1401-03-01 | 10 + 1 | 1 | .0000000 | 1401-05-02 | 30 + 12 | 12 | .0000000 | 1401-06-01 | 30 + 12 | 12 | .0000000 | 1401-06-01 | 30 + 12 | 12 | .0000000 | 1401-06-01 | 30 + 1 | 1 | .0000000 | 1401-06-01 | 40 + 1 | 1 | .0000000 | 1401-06-01 | 40 + 1 | 1 | .0000000 | 1401-06-01 | 50 + 1 | 1 | .0000000 | 1401-06-01 | 50 + 1 | 1 | .0000000 | 1401-05-01 | 20 + 1100 | 1100 | .0000000 | 1401-01-01 | 40 + 1 | 1 | .0000000 | 1401-04-01 | 40 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(partition by ow_sale.dt order by ow_sale.cn desc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn desc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.dt order by ow_sale.cn desc); -- mvd 3,4->2; 3,4->5; 7->6; 7->8; 4,3,1,7->9; 4,3,1,7->10; + vn | to_char | cn | dt | to_char | to_char | pn | to_char | to_char | to_char +----+-------------------+----+------------+-------------------+-------------------+-----+-------------------+-------------------+------------------- + 40 | 9.7142857 | 4 | 1401-06-01 | 30.0000000 | 1.0000000 | 800 | .0000000 | 1.0000000 | .0000000 + 40 | 9.7142857 | 4 | 1401-06-01 | 30.0000000 | 2.0000000 | 700 | .0909091 | 1.0000000 | .0000000 + 30 | 9.7142857 | 3 | 1401-06-01 | 30.0000000 | 3.0000000 | 600 | .1818182 | 1.0000000 | .0000000 + 30 | 9.7142857 | 1 | 1401-06-01 | 30.0000000 | 4.0000000 | 500 | .2727273 | 1.0000000 | .0000000 + 30 | 9.7142857 | 3 | 1401-06-01 | 30.0000000 | 4.0000000 | 500 | .2727273 | 1.0000000 | .0000000 + 50 | 9.7142857 | 2 | 1401-06-01 | 30.0000000 | 6.0000000 | 400 | .4545455 | 1.0000000 | .0000000 + 50 | 9.7142857 | 1 | 1401-06-01 | 30.0000000 | 6.0000000 | 400 | .4545455 | 1.0000000 | .0000000 + 30 | .0000000 | 1 | 1401-05-02 | 30.0000000 | 8.0000000 | 300 | .6363636 | 1.0000000 | .0000000 + 10 | .0000000 | 1 | 1401-03-01 | 10.0000000 | 9.0000000 | 200 | .7272727 | 1.0000000 | .0000000 + 40 | .0000000 | 3 | 1401-04-01 | 40.0000000 | 9.0000000 | 200 | .7272727 | 1.0000000 | .0000000 + 40 | .0000000 | 2 | 1401-01-01 | 40.0000000 | 11.0000000 | 100 | .9090909 | 1.0000000 | .0000000 + 20 | .0000000 | 1 | 1401-05-01 | 20.0000000 | 11.0000000 | 100 | .9090909 | 1.0000000 | .0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty+ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.prc order by ow_sale.vn asc range between 0 preceding and 3 preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc); -- mvd 6,7,8,1,9->5; 9->10; 9->11; 6,1->12; + vn | vn | vn | vn | to_char | prc | dt | cn | pn | to_char | to_char | to_char +----+----+----+----+-------------------+------+------------+----+-----+-------------------+-------------------+------------------- + 40 | 40 | 40 | 40 | .0000000 | 1 | 1401-06-01 | 4 | 800 | 1.0000000 | 40.0000000 | .0000000 + 40 | 40 | 40 | 40 | .0000000 | 1 | 1401-06-01 | 4 | 700 | 2.0000000 | 40.0000000 | 5.0000000 + 30 | 30 | 30 | 30 | .0000000 | 5 | 1401-06-01 | 3 | 600 | 3.0000000 | 40.0000000 | .0000000 + 30 | 30 | 30 | 30 | .0000000 | 5 | 1401-06-01 | 1 | 500 | 4.0000000 | 40.0000000 | .0000000 + 30 | 30 | 30 | 30 | .0000000 | 5 | 1401-06-01 | 3 | 500 | 4.0000000 | 40.0000000 | .0000000 + 50 | 50 | 50 | 50 | .0000000 | 0 | 1401-06-01 | 1 | 400 | 5.0000000 | 40.0000000 | 3.0000000 + 50 | 50 | 50 | 50 | .0000000 | 0 | 1401-06-01 | 2 | 400 | 5.0000000 | 40.0000000 | .0000000 + 30 | 30 | 30 | 30 | .0000000 | 0 | 1401-05-02 | 1 | 300 | 6.0000000 | 30.0000000 | 2.0000000 + 10 | 10 | 10 | 10 | .0000000 | 0 | 1401-03-01 | 1 | 200 | 7.0000000 | 10.0000000 | 4.0000000 + 40 | 40 | 40 | 40 | .0000000 | 0 | 1401-04-01 | 3 | 200 | 7.0000000 | 10.0000000 | 2.0000000 + 20 | 20 | 20 | 20 | .0000000 | 0 | 1401-05-01 | 1 | 100 | 8.0000000 | 10.0000000 | 2.0000000 + 40 | 40 | 40 | 40 | .0000000 | 2400 | 1401-01-01 | 2 | 100 | 8.0000000 | 10.0000000 | .0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn/ow_sale.vn),floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn asc range between floor(ow_sale.pn) preceding and current row ); -- mvd 7,1->6; + vn | qty | pn | qty | pn | to_char | dt +----+------+-----+------+-----+-------------------+------------ + 40 | 1100 | 100 | 1100 | 100 | .0000000 | 1401-01-01 + 40 | 1 | 200 | 1 | 200 | .0000000 | 1401-04-01 + 20 | 1 | 100 | 1 | 100 | .0000000 | 1401-05-01 + 10 | 1 | 200 | 1 | 200 | .0000000 | 1401-03-01 + 30 | 1 | 300 | 1 | 300 | .0000000 | 1401-05-02 + 30 | 12 | 600 | 12 | 600 | .0000000 | 1401-06-01 + 30 | 12 | 500 | 12 | 500 | .0000000 | 1401-06-01 + 30 | 12 | 500 | 12 | 500 | .0000000 | 1401-06-01 + 40 | 1 | 700 | 1 | 700 | .0000000 | 1401-06-01 + 40 | 1 | 800 | 1 | 800 | .0000000 | 1401-06-01 + 50 | 1 | 400 | 1 | 400 | .0000000 | 1401-06-01 + 50 | 1 | 400 | 1 | 400 | .0000000 | 1401-06-01 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn-ow_sale.prc),floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.dt order by ow_sale.pn asc range between floor(ow_sale.vn+ow_sale.cn) preceding and 0 following ); -- mvd 6,8,9,10,3->7; + qty | qty | pn | pn | pn | prc | to_char | cn | dt | vn +------+------+-----+-----+-----+------+-------------------+----+------------+---- + 1 | 1 | 100 | 100 | 100 | 0 | .0000000 | 1 | 1401-05-01 | 20 + 1 | 1 | 200 | 200 | 200 | 0 | .0000000 | 3 | 1401-04-01 | 40 + 1 | 1 | 400 | 400 | 400 | 0 | .0000000 | 2 | 1401-06-01 | 50 + 1 | 1 | 200 | 200 | 200 | 0 | .0000000 | 1 | 1401-03-01 | 10 + 1 | 1 | 300 | 300 | 300 | 0 | .0000000 | 1 | 1401-05-02 | 30 + 12 | 12 | 500 | 500 | 500 | 5 | .0000000 | 1 | 1401-06-01 | 30 + 12 | 12 | 500 | 500 | 500 | 5 | .0000000 | 3 | 1401-06-01 | 30 + 12 | 12 | 600 | 600 | 600 | 5 | .0000000 | 3 | 1401-06-01 | 30 + 1100 | 1100 | 100 | 100 | 100 | 2400 | .0000000 | 2 | 1401-01-01 | 40 + 1 | 1 | 700 | 700 | 700 | 1 | .0000000 | 4 | 1401-06-01 | 40 + 1 | 1 | 800 | 800 | 800 | 1 | .0000000 | 4 | 1401-06-01 | 40 + 1 | 1 | 400 | 400 | 400 | 0 | .0000000 | 1 | 1401-06-01 | 50 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn*ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.cn desc range between floor(ow_sale.prc) preceding and 2 following ), +win2 as (order by ow_sale.pn desc); -- mvd 2,1->4; 3->5; + cn | prc | pn | to_char | to_char +----+------+-----+-------------------+------------------- + 4 | 1 | 800 | .0000000 | .0000000 + 4 | 1 | 700 | .0000000 | .0909091 + 3 | 5 | 600 | .0000000 | .1818182 + 3 | 5 | 500 | .0000000 | .2727273 + 1 | 5 | 500 | .0000000 | .2727273 + 1 | 0 | 400 | .0000000 | .4545455 + 2 | 0 | 400 | .0000000 | .4545455 + 1 | 0 | 300 | .0000000 | .6363636 + 3 | 0 | 200 | .0000000 | .7272727 + 1 | 0 | 200 | .0000000 | .7272727 + 1 | 0 | 100 | .0000000 | .9090909 + 2 | 2400 | 100 | .0000000 | .9090909 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn desc range between 1 preceding and unbounded following ); -- mvd 2,3->5; + vn | cn | pn | qty | to_char +----+----+-----+------+------------------- + 30 | 1 | 300 | 1 | .0000000 + 50 | 2 | 400 | 1 | .0000000 + 50 | 1 | 400 | 1 | .0000000 + 30 | 3 | 500 | 12 | .0000000 + 30 | 1 | 500 | 12 | .0000000 + 40 | 4 | 800 | 1 | .0000000 + 40 | 2 | 100 | 1100 | 200.0000000 + 20 | 1 | 100 | 1 | 200.0000000 + 40 | 3 | 200 | 1 | 450.0000000 + 10 | 1 | 200 | 1 | .0000000 + 30 | 3 | 600 | 12 | .0000000 + 40 | 4 | 700 | 1 | .0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc/ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.vn desc range between floor(ow_sale.cn) preceding and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.cn desc), +win3 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc); -- mvd 3,4->2; 1,6,4->5; 8,1,3,4->7; 8,1,3,4->9; 3,4->10; + cn | to_char | vn | pn | to_char | dt | to_char | prc | to_char | to_char +----+-------------------+----+-----+-------------------+------------+-------------------+------+-------------------+------------------- + 1 | .0000000 | 30 | 300 | .0000000 | 1401-05-02 | .0000000 | 0 | .0000000 | 1.0000000 + 1 | .5000000 | 50 | 400 | .0000000 | 1401-06-01 | .0000000 | 0 | .0000000 | 1.0000000 + 2 | .5000000 | 50 | 400 | .0000000 | 1401-06-01 | .0000000 | 0 | .0000000 | 1.0000000 + 1 | 2.0000000 | 30 | 500 | .0000000 | 1401-06-01 | .0000000 | 5 | 150.0000000 | 17.0000000 + 3 | 2.0000000 | 30 | 500 | .0000000 | 1401-06-01 | .0000000 | 5 | 150.0000000 | 17.0000000 + 4 | .0000000 | 40 | 800 | .0000000 | 1401-06-01 | .0000000 | 1 | 40.0000000 | 2.0000000 + 1 | .0000000 | 20 | 100 | .0000000 | 1401-05-01 | .0000000 | 0 | .0000000 | 1.0000000 + 2 | .0000000 | 40 | 100 | .0000000 | 1401-01-01 | .0000000 | 2400 | 96000.0000000 | 3500.0000000 + 1 | .0000000 | 10 | 200 | .0000000 | 1401-03-01 | .0000000 | 0 | .0000000 | 1.0000000 + 3 | .0000000 | 40 | 200 | .0000000 | 1401-04-01 | .0000000 | 0 | .0000000 | 1.0000000 + 3 | .0000000 | 30 | 600 | .0000000 | 1401-06-01 | .0000000 | 5 | 150.0000000 | 17.0000000 + 4 | .0000000 | 40 | 700 | .0000000 | 1401-06-01 | .0000000 | 1 | 40.0000000 | 2.0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn+ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.pn asc range between current row and current row ); -- mvd 5,1->4; + pn | pn | pn | to_char | cn +-----+-----+-----+-------------------+---- + 100 | 100 | 100 | .0000000 | 1 + 200 | 200 | 200 | .0000000 | 1 + 300 | 300 | 300 | .0000000 | 1 + 400 | 400 | 400 | .0000000 | 1 + 500 | 500 | 500 | .0000000 | 1 + 200 | 200 | 200 | .0000000 | 3 + 500 | 500 | 500 | .0000000 | 3 + 600 | 600 | 600 | .0000000 | 3 + 100 | 100 | 100 | .0000000 | 2 + 400 | 400 | 400 | .0000000 | 2 + 700 | 700 | 700 | .0000000 | 4 + 800 | 800 | 800 | .0000000 | 4 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.vn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn desc range between current row and current row ), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.cn order by ow_sale.pn desc), +win3 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.vn order by ow_sale.pn desc); -- mvd 5,2->4; 5,2,1,7->6; 2,1,9,7->8; 2,1,9,7->10; 5,2->11; + vn | dt | prc | to_char | cn | to_char | pn | to_char | qty | to_char | to_char +----+------------+------+-------------------+----+-------------------+-----+-------------------+------+-------------------+------------------- + 10 | 1401-03-01 | 0 | .0000000 | 1 | 1.0000000 | 200 | 1.0000000 | 1 | 1.0000000 | 10.0000000 + 30 | 1401-05-02 | 0 | .0000000 | 1 | 1.0000000 | 300 | 1.0000000 | 1 | 1.0000000 | 30.0000000 + 40 | 1401-06-01 | 1 | .0000000 | 4 | 1.0000000 | 800 | 1.0000000 | 1 | 1.0000000 | 40.0000000 + 40 | 1401-06-01 | 1 | .0000000 | 4 | 2.0000000 | 700 | 1.0000000 | 1 | 1.0000000 | 40.0000000 + 30 | 1401-06-01 | 5 | .0000000 | 3 | 2.0000000 | 500 | 1.0000000 | 12 | 1.0000000 | 30.0000000 + 30 | 1401-06-01 | 5 | .0000000 | 3 | 1.0000000 | 600 | 1.0000000 | 12 | 1.0000000 | 30.0000000 + 50 | 1401-06-01 | 0 | .0000000 | 2 | 1.0000000 | 400 | 1.0000000 | 1 | 1.0000000 | 50.0000000 + 50 | 1401-06-01 | 0 | .0000000 | 1 | 1.0000000 | 400 | 1.0000000 | 1 | 1.0000000 | 50.0000000 + 30 | 1401-06-01 | 5 | .0000000 | 1 | 1.0000000 | 500 | 1.0000000 | 12 | 1.0000000 | 50.0000000 + 40 | 1401-01-01 | 2400 | .0000000 | 2 | 1.0000000 | 100 | 1.0000000 | 1100 | 1.0000000 | 40.0000000 + 40 | 1401-04-01 | 0 | .0000000 | 3 | 1.0000000 | 200 | 1.0000000 | 1 | 1.0000000 | 40.0000000 + 20 | 1401-05-01 | 0 | .0000000 | 1 | 1.0000000 | 100 | 1.0000000 | 1 | 1.0000000 | 20.0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc*ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn desc range between current row and 4 following ); -- mvd 1->4; + vn | qty | qty | to_char +----+------+------+------------------- + 10 | 1 | 1 | .0000000 + 20 | 1 | 1 | .0000000 + 30 | 1 | 1 | 18.7500000 + 30 | 12 | 12 | 18.7500000 + 30 | 12 | 12 | 18.7500000 + 30 | 12 | 12 | 18.7500000 + 40 | 1 | 1 | 4317601.0000000 + 40 | 1 | 1 | 4317601.0000000 + 40 | 1 | 1 | 4317601.0000000 + 40 | 1100 | 1100 | 4317601.0000000 + 50 | 1 | 1 | .0000000 + 50 | 1 | 1 | .0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty),floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.vn asc range between current row and 2 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty-ow_sale.pn) as int),cast (floor(ow_sale.qty*ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn-ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.cn)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.vn asc range between current row and 2 following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc); -- mvd 2,3,1,6->5; 2,3,1,6->7; 2->8; 2,3,6->9; 2,3,6->10; 2->11; + qty | cn | vn | vn | to_char | pn | to_char | to_char | to_char | to_char | to_char +------+----+----+----+-------------------+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 1100 | 2 | 40 | 40 | .0000000 | 100 | 2.0000000 | .0000000 | .0000000 | 1.0000000 | 2400.0000000 + 1 | 1 | 10 | 10 | .0000000 | 200 | 1.0000000 | .0000000 | .0000000 | 1.0000000 | .0000000 + 1 | 3 | 40 | 40 | .0000000 | 200 | 3.0000000 | .0000000 | .0000000 | 1.0000000 | .0000000 + 1 | 1 | 20 | 20 | .0000000 | 100 | 1.0000000 | .0000000 | .0000000 | 1.0000000 | .0000000 + 1 | 1 | 30 | 30 | .0000000 | 300 | 1.0000000 | .0000000 | .0000000 | 1.0000000 | .0000000 + 1 | 1 | 50 | 50 | .0000000 | 400 | 1.0000000 | .0000000 | .0000000 | 1.0000000 | .0000000 + 1 | 2 | 50 | 50 | .0000000 | 400 | 2.0000000 | .0000000 | .0000000 | 1.0000000 | .0000000 + 12 | 1 | 30 | 30 | .0000000 | 500 | 1.0000000 | .0000000 | .0000000 | 1.0000000 | .0000000 + 12 | 3 | 30 | 30 | .0000000 | 500 | 3.0000000 | .0000000 | .0000000 | 1.0000000 | .0000000 + 12 | 3 | 30 | 30 | .0000000 | 600 | 3.0000000 | .0000000 | .0000000 | 1.0000000 | .0000000 + 1 | 4 | 40 | 40 | .0000000 | 700 | 4.0000000 | .0000000 | .0000000 | 1.0000000 | .0000000 + 1 | 4 | 40 | 40 | .0000000 | 800 | 4.0000000 | .0000000 | .0000000 | 1.0000000 | .0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn),floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.pn desc range between current row and unbounded following ); -- mvd 4,1->3; + pn | qty | to_char | dt +-----+------+-------------------+------------ + 200 | 1 | .0000000 | 1401-03-01 + 600 | 12 | .0000000 | 1401-06-01 + 700 | 1 | .0000000 | 1401-06-01 + 100 | 1100 | .0000000 | 1401-01-01 + 100 | 1 | .0000000 | 1401-05-01 + 200 | 1 | .0000000 | 1401-04-01 + 300 | 1 | .0000000 | 1401-05-02 + 400 | 1 | .0000000 | 1401-06-01 + 400 | 1 | .0000000 | 1401-06-01 + 500 | 12 | 50.0000000 | 1401-06-01 + 500 | 12 | 50.0000000 | 1401-06-01 + 800 | 1 | .0000000 | 1401-06-01 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.pn order by ow_sale.vn asc range between current row and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn order by ow_sale.vn desc); -- mvd 5,2,3,6,1->4; 5,2,3,6,1->7; 3,1->8; + pn | cn | vn | to_char | dt | qty | to_char | to_char +-----+----+----+-------------------+------------+------+-------------------+------------------- + 200 | 1 | 10 | .0000000 | 1401-03-01 | 1 | 100.0000000 | 1.0000000 + 500 | 1 | 30 | .0000000 | 1401-06-01 | 12 | 900.0000000 | 1.0000000 + 400 | 2 | 50 | .0000000 | 1401-06-01 | 1 | 2500.0000000 | 1.0000000 + 500 | 3 | 30 | .0000000 | 1401-06-01 | 12 | 900.0000000 | 1.0000000 + 800 | 4 | 40 | .0000000 | 1401-06-01 | 1 | 1600.0000000 | 1.0000000 + 100 | 1 | 20 | .0000000 | 1401-05-01 | 1 | 400.0000000 | 1.0000000 + 300 | 1 | 30 | .0000000 | 1401-05-02 | 1 | 900.0000000 | 1.0000000 + 400 | 1 | 50 | .0000000 | 1401-06-01 | 1 | 2500.0000000 | 1.0000000 + 100 | 2 | 40 | .0000000 | 1401-01-01 | 1100 | 1600.0000000 | 1.0000000 + 200 | 3 | 40 | .0000000 | 1401-04-01 | 1 | 1600.0000000 | 1.0000000 + 600 | 3 | 30 | .0000000 | 1401-06-01 | 12 | 900.0000000 | 1.0000000 + 700 | 4 | 40 | .0000000 | 1401-06-01 | 1 | 1600.0000000 | 1.0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty+ow_sale.pn),floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.cn desc range between floor(ow_sale.prc-ow_sale.prc) following and floor(ow_sale.pn) following ); -- mvd 8,9,1->7; + pn | pn | vn | pn | pn | qty | to_char | prc | cn +-----+-----+----+-----+-----+------+-------------------+------+---- + 100 | 100 | 20 | 100 | 100 | 1 | .0000000 | 0 | 1 + 200 | 200 | 10 | 200 | 200 | 1 | .0000000 | 0 | 1 + 400 | 400 | 50 | 400 | 400 | 1 | .0000000 | 0 | 2 + 200 | 200 | 40 | 200 | 200 | 1 | .0000000 | 0 | 3 + 600 | 600 | 30 | 600 | 600 | 12 | .0000000 | 5 | 3 + 700 | 700 | 40 | 700 | 700 | 1 | .0000000 | 1 | 4 + 300 | 300 | 30 | 300 | 300 | 1 | .0000000 | 0 | 1 + 400 | 400 | 50 | 400 | 400 | 1 | .0000000 | 0 | 1 + 500 | 500 | 30 | 500 | 500 | 12 | .0000000 | 5 | 1 + 100 | 100 | 40 | 100 | 100 | 1100 | .0000000 | 2400 | 2 + 500 | 500 | 30 | 500 | 500 | 12 | .0000000 | 5 | 3 + 800 | 800 | 40 | 800 | 800 | 1 | .0000000 | 1 | 4 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.qty order by ow_sale.cn asc range between floor(ow_sale.qty) following and unbounded following ); -- mvd 2,6,1,4->5; + qty | cn | qty | vn | to_char | dt +------+----+------+----+-------------------+------------ + 1 | 1 | 1 | 10 | .0000000 | 1401-03-01 + 1 | 1 | 1 | 30 | .0000000 | 1401-05-02 + 1 | 1 | 1 | 50 | .0000000 | 1401-06-01 + 1100 | 2 | 1100 | 40 | .0000000 | 1401-01-01 + 1 | 3 | 1 | 40 | .0000000 | 1401-04-01 + 1 | 1 | 1 | 20 | .0000000 | 1401-05-01 + 12 | 1 | 12 | 30 | .0000000 | 1401-06-01 + 1 | 2 | 1 | 50 | .0000000 | 1401-06-01 + 12 | 3 | 12 | 30 | .0000000 | 1401-06-01 + 12 | 3 | 12 | 30 | .0000000 | 1401-06-01 + 1 | 4 | 1 | 40 | .0000000 | 1401-06-01 + 1 | 4 | 1 | 40 | .0000000 | 1401-06-01 +(12 rows) + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc/ow_sale.qty),floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc-ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt order by ow_sale.vn desc range between 1 following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.cn asc), +win4 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc); -- mvd 4,5,6->3; 1->7; 1->8; 10,1,5,2->9; 1->11; + cn | pn | to_char | dt | vn | qty | to_char | to_char | to_char | prc | to_char +----+-----+-------------------+------------+----+------+-------------------+-------------------+-------------------+------+------------------- + 1 | 400 | .0000000 | 1401-06-01 | 50 | 1 | 1.0000000 | .0000000 | .0000000 | 0 | .5000000 + 1 | 200 | .0000000 | 1401-03-01 | 10 | 1 | 1.0000000 | .0000000 | .0000000 | 0 | .1666667 + 1 | 500 | .0000000 | 1401-06-01 | 30 | 12 | 1.0000000 | .0000000 | .0000000 | 5 | .6666667 + 1 | 100 | .0000000 | 1401-05-01 | 20 | 1 | 1.0000000 | .0000000 | .0000000 | 0 | .3333333 + 1 | 300 | .0000000 | 1401-05-02 | 30 | 1 | 1.0000000 | .0000000 | .0000000 | 0 | .4166667 + 2 | 100 | .0000000 | 1401-01-01 | 40 | 1100 | 2.0000000 | .4545455 | .0000000 | 2400 | .0833333 + 2 | 400 | .0000000 | 1401-06-01 | 50 | 1 | 2.0000000 | .4545455 | .0000000 | 0 | .5833333 + 3 | 200 | .0000000 | 1401-04-01 | 40 | 1 | 3.0000000 | .6363636 | .0000000 | 0 | .2500000 + 3 | 500 | .0000000 | 1401-06-01 | 30 | 12 | 3.0000000 | .6363636 | .0000000 | 5 | .7500000 + 3 | 600 | .0000000 | 1401-06-01 | 30 | 12 | 3.0000000 | .6363636 | .0000000 | 5 | .8333333 + 4 | 700 | .0000000 | 1401-06-01 | 40 | 1 | 4.0000000 | .9090909 | .0000000 | 1 | .9166667 + 4 | 800 | .0000000 | 1401-06-01 | 40 | 1 | 4.0000000 | .9090909 | .0000000 | 1 | 1.0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn*ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows unbounded preceding ); -- mvd 3,6,4,1->5; + pn | prc | cn | vn | to_char | dt +-----+------+----+----+-------------------+------------ + 200 | 0 | 1 | 10 | .0000000 | 1401-03-01 + 600 | 5 | 3 | 30 | .0000000 | 1401-06-01 + 700 | 1 | 4 | 40 | .0000000 | 1401-06-01 + 100 | 2400 | 2 | 40 | .0000000 | 1401-01-01 + 200 | 0 | 3 | 40 | .0000000 | 1401-04-01 + 100 | 0 | 1 | 20 | .0000000 | 1401-05-01 + 300 | 0 | 1 | 30 | .0000000 | 1401-05-02 + 500 | 5 | 1 | 30 | .0000000 | 1401-06-01 + 500 | 5 | 3 | 30 | .0000000 | 1401-06-01 + 800 | 1 | 4 | 40 | .0000000 | 1401-06-01 + 400 | 0 | 1 | 50 | .0000000 | 1401-06-01 + 400 | 0 | 2 | 50 | .0000000 | 1401-06-01 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc rows unbounded preceding ), +win2 as (partition by ow_sale.qty,ow_sale.dt order by ow_sale.cn desc); -- mvd 1,6->5; 8,2,9->7; 8,2,9->10; + vn | dt | vn | prc | to_char | pn | to_char | cn | qty | to_char +----+------------+----+------+-------------------+-----+-------------------+----+------+------------------- + 30 | 1401-05-02 | 30 | 0 | .0000000 | 300 | 1.0000000 | 1 | 1 | .0000000 + 50 | 1401-06-01 | 50 | 0 | .0000000 | 400 | 4.0000000 | 1 | 1 | 1.0000000 + 50 | 1401-06-01 | 50 | 0 | .0000000 | 400 | 3.0000000 | 2 | 1 | .6666667 + 30 | 1401-06-01 | 30 | 5 | .0000000 | 500 | 3.0000000 | 1 | 12 | 1.0000000 + 30 | 1401-06-01 | 30 | 5 | .0000000 | 500 | 1.0000000 | 3 | 12 | .0000000 + 40 | 1401-06-01 | 40 | 1 | .0000000 | 800 | 1.0000000 | 4 | 1 | .0000000 + 40 | 1401-01-01 | 40 | 2400 | .0000000 | 100 | 1.0000000 | 2 | 1100 | .0000000 + 20 | 1401-05-01 | 20 | 0 | 603900.5000000 | 100 | 1.0000000 | 1 | 1 | .0000000 + 10 | 1401-03-01 | 10 | 0 | .0000000 | 200 | 1.0000000 | 1 | 1 | .0000000 + 40 | 1401-04-01 | 40 | 0 | .0000000 | 200 | 1.0000000 | 3 | 1 | .0000000 + 30 | 1401-06-01 | 30 | 5 | .0000000 | 600 | 2.0000000 | 3 | 12 | .0000000 + 40 | 1401-06-01 | 40 | 1 | .0000000 | 700 | 2.0000000 | 4 | 1 | .0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn/ow_sale.pn),floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc*ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc rows 3 preceding ), +win2 as (order by ow_sale.ord, ow_sale.vn asc), +win3 as (order by ow_sale.pn desc); -- mvd 6,1,3->5; 1->7; 3->8; + vn | prc | pn | pn | to_char | cn | to_char | to_char +----+------+-----+-----+-------------------+----+-------------------+------------------- + 40 | 2400 | 100 | 100 | .0000000 | 2 | .0000000 | .9090909 + 10 | 0 | 200 | 200 | .0000000 | 1 | 10.0000000 | .7272727 + 40 | 0 | 200 | 200 | .0000000 | 3 | 40.0000000 | .7272727 + 20 | 0 | 100 | 100 | .0000000 | 1 | 20.0000000 | .9090909 + 30 | 0 | 300 | 300 | .0000000 | 1 | 30.0000000 | .6363636 + 50 | 0 | 400 | 400 | .0000000 | 1 | 50.0000000 | .4545455 + 50 | 0 | 400 | 400 | .0000000 | 2 | 50.0000000 | .4545455 + 30 | 5 | 500 | 500 | .0000000 | 1 | .0000000 | .2727273 + 30 | 5 | 500 | 500 | .0000000 | 3 | .0000000 | .2727273 + 30 | 5 | 600 | 600 | .0000000 | 3 | .0000000 | .1818182 + 40 | 1 | 700 | 700 | .0000000 | 4 | .0000000 | .0909091 + 40 | 1 | 800 | 800 | .0000000 | 4 | .0000000 | .0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc rows current row ); -- mvd 4->3; + qty | pn | to_char | cn +------+-----+-------------------+---- + 1 | 200 | .0000000 | 1 + 1 | 100 | .0000000 | 1 + 1 | 300 | .0000000 | 1 + 1 | 400 | .0000000 | 1 + 12 | 500 | .0000000 | 1 + 1 | 200 | .0000000 | 3 + 12 | 500 | .0000000 | 3 + 12 | 600 | .0000000 | 3 + 1100 | 100 | .0000000 | 2 + 1 | 400 | .0000000 | 2 + 1 | 700 | .0000000 | 4 + 1 | 800 | .0000000 | 4 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty),floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.prc) preceding ); -- mvd 4,5->3; + vn | qty | to_char | cn | pn +----+------+-------------------+----+----- + 40 | 1100 | .0000000 | 2 | 100 + 20 | 1 | 2417800.5000000 | 1 | 100 + 10 | 1 | .0000000 | 1 | 200 + 40 | 1 | 2.0000000 | 3 | 200 + 30 | 12 | .0000000 | 3 | 600 + 40 | 1 | .0000000 | 4 | 700 + 30 | 1 | .0000000 | 1 | 300 + 50 | 1 | .0000000 | 1 | 400 + 50 | 1 | .5000000 | 2 | 400 + 30 | 12 | .0000000 | 1 | 500 + 30 | 12 | .0000000 | 3 | 500 + 40 | 1 | .0000000 | 4 | 800 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc/ow_sale.pn),floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc,ow_sale.pn asc rows between unbounded preceding and 4 preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.vn order by ow_sale.cn asc); -- mvd 1,6,2,7,8->5; 6->9; 6,2->10; + prc | vn | vn | vn | to_char | cn | qty | pn | to_char | to_char +------+----+----+----+-------------------+----+------+-----+-------------------+------------------- + 2400 | 40 | 40 | 40 | .0000000 | 2 | 1100 | 100 | .0000000 | 1.0000000 + 0 | 10 | 10 | 10 | .0000000 | 1 | 1 | 200 | .0000000 | 1.0000000 + 0 | 40 | 40 | 40 | .0000000 | 3 | 1 | 200 | .0000000 | 2.0000000 + 0 | 20 | 20 | 20 | .0000000 | 1 | 1 | 100 | .0000000 | 1.0000000 + 0 | 30 | 30 | 30 | .0000000 | 1 | 1 | 300 | .0000000 | 1.0000000 + 0 | 50 | 50 | 50 | .0000000 | 1 | 1 | 400 | .0000000 | 1.0000000 + 0 | 50 | 50 | 50 | .0000000 | 2 | 1 | 400 | .0000000 | 2.0000000 + 5 | 30 | 30 | 30 | .0000000 | 1 | 12 | 500 | .0000000 | 2.0000000 + 5 | 30 | 30 | 30 | .0000000 | 3 | 12 | 500 | .0000000 | 3.0000000 + 5 | 30 | 30 | 30 | .0000000 | 3 | 12 | 600 | .0000000 | 4.0000000 + 1 | 40 | 40 | 40 | .0000000 | 4 | 1 | 700 | .0000000 | 3.0000000 + 1 | 40 | 40 | 40 | .0000000 | 4 | 1 | 800 | .0000000 | 4.0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between unbounded preceding and current row ); -- mvd 5,3,2,6->4; + qty | vn | dt | to_char | cn | pn +------+----+------------+-------------------+----+----- + 1 | 10 | 1401-03-01 | .0000000 | 1 | 200 + 1 | 40 | 1401-04-01 | .0000000 | 3 | 200 + 1 | 20 | 1401-05-01 | .0000000 | 1 | 100 + 12 | 30 | 1401-06-01 | .0000000 | 3 | 600 + 1 | 40 | 1401-06-01 | .0000000 | 4 | 800 + 1 | 50 | 1401-06-01 | .0000000 | 2 | 400 + 1100 | 40 | 1401-01-01 | .0000000 | 2 | 100 + 1 | 30 | 1401-05-02 | .0000000 | 1 | 300 + 12 | 30 | 1401-06-01 | .0000000 | 1 | 500 + 12 | 30 | 1401-06-01 | .0000000 | 3 | 500 + 1 | 40 | 1401-06-01 | .0000000 | 4 | 700 + 1 | 50 | 1401-06-01 | .0000000 | 1 | 400 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn/ow_sale.cn)) OVER(partition by ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.prc order by ow_sale.vn desc); -- mvd 4,5,1,6,7->3; 4,5,1,6,7->8; 2,1,7->9; + vn | prc | to_char | dt | cn | qty | pn | to_char | to_char +----+------+-------------------+------------+----+------+-----+-------------------+------------------- + 10 | 0 | .0000000 | 1401-03-01 | 1 | 1 | 200 | 10.0000000 | .0000000 + 30 | 0 | .0000000 | 1401-05-02 | 1 | 1 | 300 | 30.0000000 | .0000000 + 50 | 0 | .0000000 | 1401-06-01 | 1 | 1 | 400 | 50.0000000 | .0000000 + 20 | 0 | .0000000 | 1401-05-01 | 1 | 1 | 100 | 20.0000000 | .0000000 + 50 | 0 | .0000000 | 1401-06-01 | 2 | 1 | 400 | 25.0000000 | .0000000 + 40 | 0 | .0000000 | 1401-04-01 | 3 | 1 | 200 | 13.0000000 | .0000000 + 40 | 1 | .0000000 | 1401-06-01 | 4 | 1 | 700 | 10.0000000 | .0000000 + 40 | 1 | 5000.0000000 | 1401-06-01 | 4 | 1 | 800 | 10.0000000 | .0000000 + 30 | 5 | .0000000 | 1401-06-01 | 1 | 12 | 500 | 30.0000000 | .0000000 + 30 | 5 | .0000000 | 1401-06-01 | 3 | 12 | 500 | 10.0000000 | .0000000 + 30 | 5 | 5000.0000000 | 1401-06-01 | 3 | 12 | 600 | 10.0000000 | .0000000 + 40 | 2400 | .0000000 | 1401-01-01 | 2 | 1100 | 100 | 20.0000000 | .0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty*ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.vn desc rows between unbounded preceding and 3 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.vn desc rows between unbounded preceding and 3 following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc); -- mvd 8,9,2,3->7; 8,2,3->10; 8,2,3->11; 8,9,2,3->12; + qty | vn | pn | vn | qty | pn | to_char | cn | dt | to_char | to_char | to_char +------+----+-----+----+------+-----+-------------------+----+------------+-------------------+-------------------+------------------- + 1 | 10 | 200 | 10 | 1 | 200 | .0000000 | 1 | 1401-03-01 | 1.0000000 | 1.0000000 | 1.0000000 + 12 | 30 | 600 | 30 | 12 | 600 | .0000000 | 3 | 1401-06-01 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 40 | 700 | 40 | 1 | 700 | .0000000 | 4 | 1401-06-01 | 1.0000000 | 1.0000000 | 1.0000000 + 1100 | 40 | 100 | 40 | 1100 | 100 | .0000000 | 2 | 1401-01-01 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 40 | 200 | 40 | 1 | 200 | .0000000 | 3 | 1401-04-01 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 20 | 100 | 20 | 1 | 100 | .0000000 | 1 | 1401-05-01 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 30 | 300 | 30 | 1 | 300 | .0000000 | 1 | 1401-05-02 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 50 | 400 | 50 | 1 | 400 | .0000000 | 1 | 1401-06-01 | 1.0000000 | 1.0000000 | 2.0000000 + 1 | 50 | 400 | 50 | 1 | 400 | .0000000 | 2 | 1401-06-01 | 1.0000000 | 1.0000000 | 2.0000000 + 12 | 30 | 500 | 30 | 12 | 500 | .0000000 | 1 | 1401-06-01 | 1.0000000 | 1.0000000 | 2.0000000 + 12 | 30 | 500 | 30 | 12 | 500 | .0000000 | 3 | 1401-06-01 | 1.0000000 | 1.0000000 | 2.0000000 + 1 | 40 | 800 | 40 | 1 | 800 | .0000000 | 4 | 1401-06-01 | 1.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn+ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between unbounded preceding and unbounded following ); -- mvd 4,2,1,5,6->3; + cn | dt | to_char | prc | vn | pn +----+------------+-------------------+------+----+----- + 1 | 1401-05-01 | .0000000 | 0 | 20 | 100 + 1 | 1401-03-01 | .0000000 | 0 | 10 | 200 + 3 | 1401-04-01 | .0000000 | 0 | 40 | 200 + 2 | 1401-06-01 | .0000000 | 0 | 50 | 400 + 3 | 1401-06-01 | .0000000 | 5 | 30 | 600 + 4 | 1401-06-01 | .0000000 | 1 | 40 | 800 + 2 | 1401-01-01 | .0000000 | 2400 | 40 | 100 + 1 | 1401-05-02 | .0000000 | 0 | 30 | 300 + 1 | 1401-06-01 | .0000000 | 0 | 50 | 400 + 1 | 1401-06-01 | .0000000 | 5 | 30 | 500 + 3 | 1401-06-01 | .0000000 | 5 | 30 | 500 + 4 | 1401-06-01 | .0000000 | 1 | 40 | 700 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.vn asc); -- mvd 5,2,6,3->4; 6->7; 6->8; 5,2,6,3->9; + qty | dt | pn | to_char | cn | vn | to_char | to_char | to_char +------+------------+-----+-------------------+----+----+-------------------+-------------------+------------------- + 1 | 1401-06-01 | 400 | .0000000 | 1 | 50 | .0000000 | .1666667 | 1.0000000 + 1 | 1401-06-01 | 400 | .0000000 | 2 | 50 | .0000000 | .1666667 | 1.0000000 + 1100 | 1401-01-01 | 100 | .0000000 | 2 | 40 | .1818182 | .5000000 | 1.0000000 + 1 | 1401-04-01 | 200 | .0000000 | 3 | 40 | .1818182 | .5000000 | 1.0000000 + 1 | 1401-06-01 | 800 | .0000000 | 4 | 40 | .1818182 | .5000000 | 1.0000000 + 1 | 1401-06-01 | 700 | .0000000 | 4 | 40 | .1818182 | .5000000 | 1.0000000 + 12 | 1401-06-01 | 600 | .0000000 | 3 | 30 | .5454545 | .8333333 | 1.0000000 + 12 | 1401-06-01 | 500 | .0000000 | 1 | 30 | .5454545 | .8333333 | 1.0000000 + 1 | 1401-05-02 | 300 | .0000000 | 1 | 30 | .5454545 | .8333333 | 1.0000000 + 12 | 1401-06-01 | 500 | .0000000 | 3 | 30 | .5454545 | .8333333 | 1.0000000 + 1 | 1401-05-01 | 100 | .0000000 | 1 | 20 | .9090909 | .9166667 | 1.0000000 + 1 | 1401-03-01 | 200 | .0000000 | 1 | 10 | 1.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn),floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc rows between 8 preceding and floor(ow_sale.qty+ow_sale.vn) preceding ); -- mvd 3,4,5,6->2; + pn | to_char | prc | cn | vn | qty +-----+-------------------+------+----+----+------ + 500 | .0000000 | 5 | 1 | 30 | 12 + 400 | .0000000 | 0 | 2 | 50 | 1 + 500 | .0000000 | 5 | 3 | 30 | 12 + 600 | .0000000 | 5 | 3 | 30 | 12 + 200 | .0000000 | 0 | 1 | 10 | 1 + 100 | .0000000 | 0 | 1 | 20 | 1 + 300 | .0000000 | 0 | 1 | 30 | 1 + 400 | .0000000 | 0 | 1 | 50 | 1 + 100 | .0000000 | 2400 | 2 | 40 | 1100 + 200 | .0000000 | 0 | 3 | 40 | 1 + 700 | .0000000 | 1 | 4 | 40 | 1 + 800 | .0000000 | 1 | 4 | 40 | 1 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.qty) preceding and 3 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.prc) as int),cast (floor(ow_sale.qty+ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.qty) preceding and 3 preceding ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc), +win4 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc), +win5 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.cn asc); -- mvd 1,3,4->2; 1,3,4->5; 3,4->6; 8->7; 8,10->9; 4,3,10->11; + prc | to_char | dt | cn | to_char | to_char | to_char | vn | to_char | pn | to_char +------+-------------------+------------+----+-------------------+-------------------+-------------------+----+-------------------+-----+------------------- + 2400 | .0000000 | 1401-01-01 | 2 | .0000000 | 1.0000000 | .0000000 | 40 | .0000000 | 100 | 1.0000000 + 0 | .0000000 | 1401-03-01 | 1 | .0000000 | 1.0000000 | .0000000 | 10 | .0000000 | 200 | 1.0000000 + 0 | .0000000 | 1401-04-01 | 3 | .0000000 | 1.0000000 | .0000000 | 40 | .0000000 | 200 | 1.0000000 + 0 | .0000000 | 1401-05-01 | 1 | .0000000 | 1.0000000 | .0000000 | 20 | .0000000 | 100 | 1.0000000 + 0 | .0000000 | 1401-05-02 | 1 | .0000000 | 1.0000000 | .0000000 | 30 | .0000000 | 300 | 1.0000000 + 0 | .0000000 | 1401-06-01 | 1 | .0000000 | 1.0000000 | .0000000 | 50 | 50.0000000 | 400 | .5000000 + 0 | .0000000 | 1401-06-01 | 2 | .0000000 | 1.0000000 | .0000000 | 50 | .0000000 | 400 | 1.0000000 + 5 | .0000000 | 1401-06-01 | 1 | .0000000 | 1.0000000 | .0000000 | 30 | 30.0000000 | 500 | .5000000 + 5 | .0000000 | 1401-06-01 | 3 | .0000000 | 1.0000000 | .0000000 | 30 | .0000000 | 500 | 1.0000000 + 5 | .0000000 | 1401-06-01 | 3 | .0000000 | 1.0000000 | .0000000 | 30 | .0000000 | 600 | 1.0000000 + 1 | .0000000 | 1401-06-01 | 4 | .0000000 | 1.0000000 | .0000000 | 40 | .0000000 | 700 | 1.0000000 + 1 | .0000000 | 1401-06-01 | 4 | .0000000 | 1.0000000 | .0000000 | 40 | .0000000 | 800 | 1.0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between 0 preceding and current row ); -- mvd 6,7,4,1,8->5; + qty | vn | vn | dt | to_char | prc | cn | pn +------+----+----+------------+-------------------+------+----+----- + 1100 | 40 | 40 | 1401-01-01 | .0000000 | 2400 | 2 | 100 + 1 | 10 | 10 | 1401-03-01 | .0000000 | 0 | 1 | 200 + 12 | 30 | 30 | 1401-06-01 | .0000000 | 5 | 1 | 500 + 12 | 30 | 30 | 1401-06-01 | .0000000 | 5 | 3 | 500 + 1 | 40 | 40 | 1401-06-01 | .0000000 | 1 | 4 | 800 + 1 | 20 | 20 | 1401-05-01 | .0000000 | 0 | 1 | 100 + 1 | 40 | 40 | 1401-04-01 | .0000000 | 0 | 3 | 200 + 1 | 30 | 30 | 1401-05-02 | .0000000 | 0 | 1 | 300 + 1 | 50 | 50 | 1401-06-01 | .0000000 | 0 | 1 | 400 + 1 | 50 | 50 | 1401-06-01 | .0000000 | 0 | 2 | 400 + 12 | 30 | 30 | 1401-06-01 | .0000000 | 5 | 3 | 600 + 1 | 40 | 40 | 1401-06-01 | .0000000 | 1 | 4 | 700 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn/ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc,ow_sale.vn asc rows between 5 preceding and 4 following ); -- mvd 5,6,7->4; + pn | dt | prc | to_char | cn | vn | qty +-----+------------+------+-------------------+----+----+------ + 400 | 1401-06-01 | 0 | .0000000 | 2 | 50 | 1 + 700 | 1401-06-01 | 1 | .0000000 | 4 | 40 | 1 + 800 | 1401-06-01 | 1 | .0000000 | 4 | 40 | 1 + 500 | 1401-06-01 | 5 | .0000000 | 1 | 30 | 12 + 500 | 1401-06-01 | 5 | .0000000 | 3 | 30 | 12 + 600 | 1401-06-01 | 5 | .0000000 | 3 | 30 | 12 + 200 | 1401-03-01 | 0 | 875.0000000 | 1 | 10 | 1 + 100 | 1401-05-01 | 0 | 875.0000000 | 1 | 20 | 1 + 300 | 1401-05-02 | 0 | 875.0000000 | 1 | 30 | 1 + 400 | 1401-06-01 | 0 | 875.0000000 | 1 | 50 | 1 + 200 | 1401-04-01 | 0 | .0000000 | 3 | 40 | 1 + 100 | 1401-01-01 | 2400 | .0000000 | 2 | 40 | 1100 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc+ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc/ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows between floor(ow_sale.vn) preceding and floor(ow_sale.prc*ow_sale.qty) following ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.prc,ow_sale.vn order by ow_sale.vn desc), +win4 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,4,1,5->2; 3,4,1,5->6; 5->7; 5->8; 10,1->9; 4,3->11; + vn | to_char | dt | cn | pn | to_char | to_char | to_char | to_char | prc | to_char +----+-------------------+------------+----+-----+-------------------+-------------------+-------------------+-------------------+------+------------------- + 40 | .0000000 | 1401-01-01 | 2 | 100 | 1.0000000 | .0000000 | 24.0000000 | 1.0000000 | 2400 | .0000000 + 10 | .0000000 | 1401-03-01 | 1 | 200 | 1.0000000 | .0000000 | .0000000 | 1.0000000 | 0 | .0000000 + 40 | .0000000 | 1401-04-01 | 3 | 200 | 1.0000000 | .0000000 | .0000000 | 1.0000000 | 0 | .0000000 + 20 | .0000000 | 1401-05-01 | 1 | 100 | 1.0000000 | .0000000 | .0000000 | 1.0000000 | 0 | .0000000 + 30 | .0000000 | 1401-05-02 | 1 | 300 | 1.0000000 | .0000000 | .0000000 | 1.0000000 | 0 | .0000000 + 50 | .0000000 | 1401-06-01 | 1 | 400 | 1.0000000 | .0000000 | .0000000 | 1.0000000 | 0 | .0000000 + 50 | .0000000 | 1401-06-01 | 2 | 400 | 1.0000000 | .0000000 | .0000000 | 1.0000000 | 0 | .0000000 + 30 | .0000000 | 1401-06-01 | 1 | 500 | 2.0000000 | .0000000 | .0000000 | 1.0000000 | 5 | .0000000 + 30 | .0000000 | 1401-06-01 | 3 | 500 | 2.0000000 | .0000000 | .0000000 | 1.0000000 | 5 | .0000000 + 30 | .0000000 | 1401-06-01 | 3 | 600 | 2.0000000 | .0000000 | .0000000 | 1.0000000 | 5 | .0000000 + 40 | .0000000 | 1401-06-01 | 4 | 700 | 2.0000000 | .0000000 | .0000000 | 1.0000000 | 1 | .0000000 + 40 | .0000000 | 1401-06-01 | 4 | 800 | 2.0000000 | .0000000 | .0000000 | 1.0000000 | 1 | .0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.qty) preceding and unbounded following ); -- mvd 3,5,6,7,8->4; + pn | pn | prc | to_char | cn | dt | vn | qty +-----+-----+------+-------------------+----+------------+----+------ + 100 | 100 | 0 | .0000000 | 1 | 1401-05-01 | 20 | 1 + 200 | 200 | 0 | .0000000 | 3 | 1401-04-01 | 40 | 1 + 700 | 700 | 1 | 5000.0000000 | 4 | 1401-06-01 | 40 | 1 + 800 | 800 | 1 | 5000.0000000 | 4 | 1401-06-01 | 40 | 1 + 500 | 500 | 5 | 6666.6666667 | 1 | 1401-06-01 | 30 | 12 + 500 | 500 | 5 | 6666.6666667 | 3 | 1401-06-01 | 30 | 12 + 600 | 600 | 5 | 6666.6666667 | 3 | 1401-06-01 | 30 | 12 + 200 | 200 | 0 | .0000000 | 1 | 1401-03-01 | 10 | 1 + 300 | 300 | 0 | .0000000 | 1 | 1401-05-02 | 30 | 1 + 400 | 400 | 0 | .0000000 | 1 | 1401-06-01 | 50 | 1 + 400 | 400 | 0 | .0000000 | 2 | 1401-06-01 | 50 | 1 + 100 | 100 | 2400 | .0000000 | 2 | 1401-01-01 | 40 | 1100 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn-ow_sale.prc),floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.qty)) OVER(partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.pn) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.pn) preceding and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.vn asc), +win3 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc), +win4 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.cn asc); -- mvd 1,3->2; 1,3->4; 1,3,6->5; 8,3,6->7; 1,3->9; 8,1,11,3,6->10; + cn | to_char | vn | to_char | to_char | pn | to_char | prc | to_char | to_char | dt +----+-------------------+----+-------------------+-------------------+-----+-------------------+------+-------------------+-------------------+------------ + 1 | .0000000 | 10 | -1.0000000 | .0000000 | 200 | .0000000 | 0 | 10.0000000 | 1.0000000 | 1401-03-01 + 1 | .0000000 | 20 | -1.0000000 | .0000000 | 100 | .0000000 | 0 | 20.0000000 | 1.0000000 | 1401-05-01 + 1 | 16.0000000 | 30 | -7.0000000 | .0000000 | 300 | .0000000 | 0 | 30.0000000 | 1.0000000 | 1401-05-02 + 1 | 16.0000000 | 30 | -7.0000000 | .0000000 | 500 | .0000000 | 5 | 30.0000000 | 1.0000000 | 1401-06-01 + 3 | 16.0000000 | 30 | -7.0000000 | .0000000 | 500 | .0000000 | 5 | 30.0000000 | 2.0000000 | 1401-06-01 + 3 | 16.0000000 | 30 | -7.0000000 | .0000000 | 600 | .0000000 | 5 | 30.0000000 | 1.0000000 | 1401-06-01 + 2 | 11.0000000 | 40 | -1.0000000 | .0000000 | 100 | .0000000 | 2400 | 40.0000000 | 1.0000000 | 1401-01-01 + 3 | 11.0000000 | 40 | -1.0000000 | .0000000 | 200 | .0000000 | 0 | 40.0000000 | 1.0000000 | 1401-04-01 + 4 | 11.0000000 | 40 | -1.0000000 | .0000000 | 700 | .0000000 | 1 | 40.0000000 | 1.0000000 | 1401-06-01 + 4 | 11.0000000 | 40 | -1.0000000 | .0000000 | 800 | .0000000 | 1 | 40.0000000 | 1.0000000 | 1401-06-01 + 1 | 2.0000000 | 50 | -1.0000000 | .0000000 | 400 | .0000000 | 0 | 50.0000000 | 1.0000000 | 1401-06-01 + 2 | 2.0000000 | 50 | -1.0000000 | .0000000 | 400 | .0000000 | 0 | 50.0000000 | 2.0000000 | 1401-06-01 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn+ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn asc rows between current row and current row ); -- mvd 1,6->5; + cn | qty | qty | prc | to_char | pn +----+------+------+------+-------------------+----- + 1 | 1 | 1 | 0 | .0000000 | 300 + 1 | 1 | 1 | 0 | .0000000 | 400 + 2 | 1 | 1 | 0 | .0000000 | 400 + 1 | 12 | 12 | 5 | .0000000 | 500 + 3 | 12 | 12 | 5 | .0000000 | 500 + 4 | 1 | 1 | 1 | .0000000 | 800 + 2 | 1100 | 1100 | 2400 | .0000000 | 100 + 1 | 1 | 1 | 0 | .0000000 | 100 + 1 | 1 | 1 | 0 | .0000000 | 200 + 3 | 1 | 1 | 0 | .0000000 | 200 + 3 | 12 | 12 | 5 | .0000000 | 600 + 4 | 1 | 1 | 1 | .0000000 | 700 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.qty)) OVER(partition by ow_sale.prc,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc rows between current row and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc rows between current row and current row ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.dt order by ow_sale.cn desc); -- mvd 6,7,8->5; 7,10,1,8->9; 7,10,1,8->11; 6,7,8->12; 6,7,8->13; + vn | vn | qty | vn | to_char | prc | cn | pn | to_char | dt | to_char | to_char | to_char +----+----+------+----+-------------------+------+----+-----+-------------------+------------+-------------------+-------------------+------------------- + 10 | 10 | 1 | 10 | .0000000 | 0 | 1 | 200 | 1.0000000 | 1401-03-01 | 1.0000000 | 210.0000000 | 199.0000000 + 20 | 20 | 1 | 20 | .0000000 | 0 | 1 | 100 | 1.0000000 | 1401-05-01 | 1.0000000 | 120.0000000 | 99.0000000 + 30 | 30 | 1 | 30 | .0000000 | 0 | 1 | 300 | 1.0000000 | 1401-05-02 | 1.0000000 | 330.0000000 | 299.0000000 + 50 | 50 | 1 | 50 | .0000000 | 0 | 1 | 400 | 1.0000000 | 1401-06-01 | 1.0000000 | 450.0000000 | 399.0000000 + 40 | 40 | 1 | 40 | .0000000 | 0 | 3 | 200 | 1.0000000 | 1401-04-01 | 1.0000000 | 240.0000000 | 199.0000000 + 40 | 40 | 1 | 40 | .0000000 | 1 | 4 | 700 | 1.0000000 | 1401-06-01 | 1.0000000 | 740.0000000 | 699.0000000 + 40 | 40 | 1 | 40 | .0000000 | 1 | 4 | 800 | 1.0000000 | 1401-06-01 | 1.0000000 | 840.0000000 | 799.0000000 + 30 | 30 | 12 | 30 | .0000000 | 5 | 1 | 500 | 1.0000000 | 1401-06-01 | 1.0000000 | 530.0000000 | 488.0000000 + 30 | 30 | 12 | 30 | .0000000 | 5 | 3 | 500 | 1.0000000 | 1401-06-01 | 1.0000000 | 530.0000000 | 488.0000000 + 30 | 30 | 12 | 30 | .0000000 | 5 | 3 | 600 | 1.0000000 | 1401-06-01 | 1.0000000 | 630.0000000 | 588.0000000 + 50 | 50 | 1 | 50 | .0000000 | 0 | 2 | 400 | 1.0000000 | 1401-06-01 | 1.0000000 | 450.0000000 | 399.0000000 + 40 | 40 | 1100 | 40 | .0000000 | 2400 | 2 | 100 | 1.0000000 | 1401-01-01 | 1.0000000 | 140.0000000 | -1000.0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn/ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty-ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.cn asc rows between current row and 1 following ), +win2 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.pn desc), +win4 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.pn asc), +win5 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn desc); -- mvd 5,6,7,1->4; 9,5,6,7,3,1->8; 1->10; 6,5,1->11; 6,3->12; + pn | pn | vn | to_char | cn | dt | qty | to_char | prc | to_char | to_char | to_char +-----+-----+----+-------------------+----+------------+------+-------------------+------+-------------------+-------------------+------------------- + 800 | 800 | 40 | .0000000 | 4 | 1401-06-01 | 1 | .0000000 | 1 | .0833333 | 2.0000000 | .0000000 + 700 | 700 | 40 | .0000000 | 4 | 1401-06-01 | 1 | .0000000 | 1 | .1666667 | 1.0000000 | 40.0000000 + 600 | 600 | 30 | .0000000 | 3 | 1401-06-01 | 12 | .0000000 | 5 | .2500000 | 2.0000000 | .0000000 + 500 | 500 | 30 | .0000000 | 1 | 1401-06-01 | 12 | .0000000 | 5 | .4166667 | 2.0000000 | .0000000 + 500 | 500 | 30 | .0000000 | 3 | 1401-06-01 | 12 | .0000000 | 5 | .4166667 | 1.0000000 | .0000000 + 400 | 400 | 50 | .0000000 | 2 | 1401-06-01 | 1 | .0000000 | 0 | .5833333 | 1.0000000 | 30.0000000 + 400 | 400 | 50 | .0000000 | 1 | 1401-06-01 | 1 | .0000000 | 0 | .5833333 | 1.0000000 | 50.0000000 + 300 | 300 | 30 | .0000000 | 1 | 1401-05-02 | 1 | .0000000 | 0 | .6666667 | 1.0000000 | .0000000 + 200 | 200 | 10 | .0000000 | 1 | 1401-03-01 | 1 | .0000000 | 0 | .8333333 | 1.0000000 | .0000000 + 200 | 200 | 40 | .0000000 | 3 | 1401-04-01 | 1 | .0000000 | 0 | .8333333 | 1.0000000 | .0000000 + 100 | 100 | 40 | .0000000 | 2 | 1401-01-01 | 1100 | .0000000 | 2400 | 1.0000000 | 1.0000000 | .0000000 + 100 | 100 | 20 | .0000000 | 1 | 1401-05-01 | 1 | .0000000 | 0 | 1.0000000 | 1.0000000 | .0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between current row and unbounded following ); -- mvd 5,2,1->4; + pn | dt | qty | to_char | cn +-----+------------+------+-------------------+---- + 200 | 1401-03-01 | 1 | .0000000 | 1 + 300 | 1401-05-02 | 1 | .0000000 | 1 + 400 | 1401-06-01 | 1 | 9.7142857 | 1 + 400 | 1401-06-01 | 1 | 6.8333333 | 2 + 500 | 1401-06-01 | 12 | 6.0000000 | 1 + 500 | 1401-06-01 | 12 | 1.0000000 | 3 + 600 | 1401-06-01 | 12 | .6666667 | 3 + 700 | 1401-06-01 | 1 | .0000000 | 4 + 800 | 1401-06-01 | 1 | .0000000 | 4 + 100 | 1401-01-01 | 1100 | .0000000 | 2 + 200 | 1401-04-01 | 1 | .0000000 | 3 + 100 | 1401-05-01 | 1 | .0000000 | 1 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn*ow_sale.cn)) OVER(partition by ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.pn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.pn asc rows between current row and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.cn desc); -- mvd 1,3->5; 1,3->6; 8,2,9->7; + qty | dt | pn | dt | to_char | to_char | to_char | cn | vn +------+------------+-----+------------+-------------------+-------------------+-------------------+----+---- + 1 | 1401-05-01 | 100 | 1401-05-01 | .0000000 | 1.0000000 | 1.0000000 | 1 | 20 + 1 | 1401-03-01 | 200 | 1401-03-01 | 2.0000000 | 2.0000000 | 1.0000000 | 1 | 10 + 1 | 1401-04-01 | 200 | 1401-04-01 | .0000000 | 1.0000000 | 1.0000000 | 3 | 40 + 1 | 1401-06-01 | 700 | 1401-06-01 | .0000000 | 1.0000000 | 1.0000000 | 4 | 40 + 12 | 1401-06-01 | 500 | 1401-06-01 | 2.0000000 | 2.0000000 | 2.0000000 | 1 | 30 + 12 | 1401-06-01 | 500 | 1401-06-01 | .0000000 | 1.0000000 | 1.0000000 | 3 | 30 + 1 | 1401-05-02 | 300 | 1401-05-02 | .0000000 | 1.0000000 | 1.0000000 | 1 | 30 + 1 | 1401-06-01 | 400 | 1401-06-01 | .5000000 | 2.0000000 | 2.0000000 | 1 | 50 + 1 | 1401-06-01 | 400 | 1401-06-01 | .0000000 | 1.0000000 | 1.0000000 | 2 | 50 + 1 | 1401-06-01 | 800 | 1401-06-01 | .0000000 | 1.0000000 | 1.0000000 | 4 | 40 + 12 | 1401-06-01 | 600 | 1401-06-01 | .0000000 | 1.0000000 | 1.0000000 | 3 | 30 + 1100 | 1401-01-01 | 100 | 1401-01-01 | .0000000 | 1.0000000 | 1.0000000 | 2 | 40 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn*ow_sale.cn)) OVER(partition by ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows between 0 following and 0 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows between 0 following and 0 following ); -- mvd 3,1->6; 3,1->7; + qty | cn | vn | vn | vn | to_char | to_char +------+----+----+----+----+-------------------+------------------- + 1 | 1 | 10 | 10 | 10 | .0000000 | 1.0000000 + 1 | 3 | 40 | 40 | 40 | .0000000 | 1.0000000 + 1 | 1 | 20 | 20 | 20 | .0000000 | 1.0000000 + 1 | 1 | 30 | 30 | 30 | .0000000 | 1.0000000 + 1 | 1 | 50 | 50 | 50 | .0000000 | 1.0000000 + 1 | 2 | 50 | 50 | 50 | .0000000 | 1.0000000 + 1 | 4 | 40 | 40 | 40 | .0000000 | 1.0000000 + 1 | 4 | 40 | 40 | 40 | .0000000 | 1.0000000 + 12 | 1 | 30 | 30 | 30 | .0000000 | 1.0000000 + 12 | 3 | 30 | 30 | 30 | .0000000 | 1.0000000 + 12 | 3 | 30 | 30 | 30 | .0000000 | 1.0000000 + 1100 | 2 | 40 | 40 | 40 | .0000000 | 1.0000000 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty+ow_sale.vn),floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.vn-ow_sale.vn) following and unbounded following ); -- mvd 1,7,8->6; + cn | cn | pn | prc | cn | to_char | qty | vn +----+----+-----+------+----+-------------------+------+---- + 1 | 1 | 200 | 0 | 1 | .0000000 | 1 | 10 + 1 | 1 | 100 | 0 | 1 | .0000000 | 1 | 20 + 1 | 1 | 300 | 0 | 1 | .0000000 | 1 | 30 + 3 | 3 | 200 | 0 | 3 | .6666667 | 1 | 40 + 4 | 4 | 700 | 1 | 4 | .0000000 | 1 | 40 + 4 | 4 | 800 | 1 | 4 | .0000000 | 1 | 40 + 1 | 1 | 400 | 0 | 1 | .0000000 | 1 | 50 + 2 | 2 | 400 | 0 | 2 | .0000000 | 1 | 50 + 1 | 1 | 500 | 5 | 1 | .0000000 | 12 | 30 + 3 | 3 | 500 | 5 | 3 | .0000000 | 12 | 30 + 3 | 3 | 600 | 5 | 3 | .0000000 | 12 | 30 + 2 | 2 | 100 | 2400 | 2 | .0000000 | 1100 | 40 +(12 rows) + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc rows between floor(ow_sale.cn) following and unbounded following ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,4->2; 1->5; 4->6; + cn | to_char | vn | pn | to_char | to_char +----+-------------------+----+-----+-------------------+------------------- + 1 | .0000000 | 50 | 400 | 1.0000000 | 1.0000000 + 1 | .0000000 | 10 | 200 | 1.0000000 | 2.0000000 + 1 | .0000000 | 30 | 500 | 1.0000000 | 2.0000000 + 1 | .0000000 | 20 | 100 | 1.0000000 | 3.0000000 + 1 | .0000000 | 30 | 300 | 1.0000000 | 1.0000000 + 2 | .0000000 | 40 | 100 | 6.0000000 | .0000000 + 2 | .0000000 | 50 | 400 | 6.0000000 | 1.0000000 + 3 | .0000000 | 40 | 200 | 8.0000000 | .0000000 + 3 | .0000000 | 30 | 500 | 8.0000000 | 1.0000000 + 3 | .0000000 | 30 | 600 | 8.0000000 | 2.0000000 + 4 | .0000000 | 40 | 700 | 11.0000000 | 2.0000000 + 4 | .0000000 | 40 | 800 | 11.0000000 | 1.0000000 +(12 rows) + +-- REGR_SXY() function with NULL OVER() clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn/ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (); -- mvd 2->2; + pn | to_char +-----+------------------- + 400 | -390317.4166667 + 800 | -390317.4166667 + 100 | -390317.4166667 + 200 | -390317.4166667 + 200 | -390317.4166667 + 600 | -390317.4166667 + 300 | -390317.4166667 + 400 | -390317.4166667 + 500 | -390317.4166667 + 500 | -390317.4166667 + 100 | -390317.4166667 + 700 | -390317.4166667 +(12 rows) + +-- REGR_SXY() function with NULL OVER() clause in combination with other window functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (), +win2 as (partition by ow_sale.dt,ow_sale.qty order by ow_sale.pn asc), +win3 as (partition by ow_sale.pn order by ow_sale.vn asc); -- mvd 4->4; 6,7,2->5; 9,2->8; + cn | pn | prc | to_char | to_char | dt | qty | to_char | vn +----+-----+------+-------------------+-------------------+------------+------+-------------------+---- + 3 | 200 | 0 | 3883.3333333 | .0000000 | 1401-04-01 | 1 | 1.0000000 | 40 + 1 | 100 | 0 | 3883.3333333 | .0000000 | 1401-05-01 | 1 | .5000000 | 20 + 1 | 500 | 5 | 3883.3333333 | .0000000 | 1401-06-01 | 12 | 1.0000000 | 30 + 3 | 500 | 5 | 3883.3333333 | .0000000 | 1401-06-01 | 12 | 1.0000000 | 30 + 3 | 600 | 5 | 3883.3333333 | 1.0000000 | 1401-06-01 | 12 | 1.0000000 | 30 + 2 | 100 | 2400 | 3883.3333333 | .0000000 | 1401-01-01 | 1100 | 1.0000000 | 40 + 1 | 200 | 0 | 3883.3333333 | .0000000 | 1401-03-01 | 1 | .5000000 | 10 + 1 | 300 | 0 | 3883.3333333 | .0000000 | 1401-05-02 | 1 | 1.0000000 | 30 + 2 | 400 | 0 | 3883.3333333 | .0000000 | 1401-06-01 | 1 | 1.0000000 | 50 + 1 | 400 | 0 | 3883.3333333 | .0000000 | 1401-06-01 | 1 | 1.0000000 | 50 + 4 | 700 | 1 | 3883.3333333 | .6666667 | 1401-06-01 | 1 | 1.0000000 | 40 + 4 | 800 | 1 | 3883.3333333 | 1.0000000 | 1401-06-01 | 1 | 1.0000000 | 40 +(12 rows) + +-- REGR_SXY() function with OVER() clause having ONLY PARTITION BY -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn); -- mvd 1->4; + cn | prc | cn | to_char +----+------+----+------------------- + 1 | 0 | 1 | 96.8000000 + 1 | 0 | 1 | 96.8000000 + 1 | 0 | 1 | 96.8000000 + 1 | 5 | 1 | 96.8000000 + 1 | 0 | 1 | 96.8000000 + 3 | 5 | 3 | 80.6666667 + 3 | 0 | 3 | 80.6666667 + 3 | 5 | 3 | 80.6666667 + 2 | 0 | 2 | 603900.5000000 + 2 | 2400 | 2 | 603900.5000000 + 4 | 1 | 4 | .0000000 + 4 | 1 | 4 | .0000000 +(12 rows) + +-- REGR_SXY() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.qty/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc); -- mvd 2->4; + cn | pn | pn | to_char +----+-----+-----+------------------- + 4 | 800 | 800 | .0000000 + 4 | 700 | 700 | .0000000 + 3 | 600 | 600 | .0000000 + 1 | 500 | 500 | .0000000 + 3 | 500 | 500 | .0000000 + 1 | 400 | 400 | .0000000 + 2 | 400 | 400 | .0000000 + 1 | 300 | 300 | .0000000 + 1 | 200 | 200 | .0000000 + 3 | 200 | 200 | .0000000 + 1 | 100 | 100 | -8100.0000000 + 2 | 100 | 100 | -8100.0000000 +(12 rows) + +-- REGR_SXY() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn*ow_sale.qty),floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn*ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn/ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc); -- mvd 1->5; 1->6; 1->7; 2,3,1,4,9->8; 2,3,1,4,9->10; 2,3,1,4,9->11; + cn | prc | dt | vn | to_char | to_char | to_char | to_char | pn | to_char | to_char +----+------+------------+----+-------------------+-------------------+-------------------+-------------------+-----+-------------------+------------------- + 2 | 2400 | 1401-01-01 | 40 | 3136.5714286 | .0000000 | 1.0000000 | .0000000 | 100 | 1.0000000 | 2300.0000000 + 1 | 0 | 1401-03-01 | 10 | .0000000 | 200.0000000 | 2.0000000 | .0000000 | 200 | 1.0000000 | -200.0000000 + 3 | 0 | 1401-04-01 | 40 | 1035.2000000 | .0000000 | 3.0000000 | .0000000 | 200 | 1.0000000 | -200.0000000 + 1 | 0 | 1401-05-01 | 20 | .0000000 | 600.0000000 | 4.0000000 | .0000000 | 100 | 1.0000000 | -100.0000000 + 1 | 0 | 1401-05-02 | 30 | .0000000 | 100.0000000 | 5.0000000 | .0000000 | 300 | 1.0000000 | -300.0000000 + 1 | 0 | 1401-06-01 | 50 | .0000000 | 300.0000000 | 6.0000000 | .0000000 | 400 | 1.0000000 | -400.0000000 + 2 | 0 | 1401-06-01 | 50 | 3136.5714286 | 300.0000000 | 7.0000000 | .0000000 | 400 | 1.0000000 | -400.0000000 + 1 | 5 | 1401-06-01 | 30 | .0000000 | 800.0000000 | 8.0000000 | .0000000 | 500 | 1.0000000 | -495.0000000 + 3 | 5 | 1401-06-01 | 30 | 1035.2000000 | 400.0000000 | 9.0000000 | .0000000 | 500 | 1.0000000 | -495.0000000 + 3 | 5 | 1401-06-01 | 30 | 1035.2000000 | 800.0000000 | 10.0000000 | .0000000 | 600 | 2.0000000 | -595.0000000 + 4 | 1 | 1401-06-01 | 40 | -617.0000000 | 800.0000000 | 11.0000000 | .0000000 | 700 | 1.0000000 | -699.0000000 + 4 | 1 | 1401-06-01 | 40 | -617.0000000 | 500.0000000 | 12.0000000 | .0000000 | 800 | 2.0000000 | -799.0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty+ow_sale.qty),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range unbounded preceding ); -- mvd 4->3; + cn | prc | to_char | pn +----+------+-------------------+----- + 1 | 0 | .0000000 | 100 + 2 | 2400 | .0000000 | 100 + 1 | 0 | .0000000 | 200 + 3 | 0 | .0000000 | 200 + 1 | 0 | .0000000 | 300 + 1 | 0 | .0000000 | 400 + 2 | 0 | .0000000 | 400 + 1 | 5 | .0000000 | 500 + 3 | 5 | .0000000 | 500 + 3 | 5 | .0000000 | 600 + 4 | 1 | .0000000 | 700 + 4 | 1 | .0000000 | 800 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn+ow_sale.pn) as int),cast (floor(ow_sale.pn+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range unbounded preceding ), +win2 as (partition by ow_sale.prc,ow_sale.cn order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 1->2; 4,5,1->3; 5->6; 4,5,1->7; 5->8; + vn | to_char | to_char | prc | cn | to_char | to_char | to_char +----+-------------------+-------------------+------+----+-------------------+-------------------+------------------- + 40 | -325300.0000000 | 1.0000000 | 2400 | 2 | .0000000 | 1.0000000 | 1.0000000 + 10 | .0000000 | 4.0000000 | 0 | 1 | .0000000 | 4.0000000 | 2.0000000 + 40 | -325300.0000000 | 1.0000000 | 0 | 3 | .0000000 | 1.0000000 | 3.0000000 + 20 | .0000000 | 3.0000000 | 0 | 1 | .0000000 | 3.0000000 | 4.0000000 + 30 | 5500.0000000 | 2.0000000 | 0 | 1 | .0000000 | 2.0000000 | 5.0000000 + 50 | -325300.0000000 | 1.0000000 | 0 | 1 | .0000000 | 1.0000000 | 6.0000000 + 50 | -325300.0000000 | 1.0000000 | 0 | 2 | .0000000 | 1.0000000 | 7.0000000 + 30 | 5500.0000000 | 1.0000000 | 5 | 1 | .0000000 | 1.0000000 | 8.0000000 + 30 | 5500.0000000 | 1.0000000 | 5 | 3 | .0000000 | 1.0000000 | 9.0000000 + 30 | 5500.0000000 | 2.0000000 | 5 | 3 | .0000000 | 1.0000000 | 10.0000000 + 40 | -325300.0000000 | 2.0000000 | 1 | 4 | .0000000 | 1.0000000 | 11.0000000 + 40 | -325300.0000000 | 1.0000000 | 1 | 4 | .0000000 | 1.0000000 | 12.0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc),floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range floor(ow_sale.pn+ow_sale.qty) preceding ); -- mvd 5->4; + vn | vn | qty | to_char | cn +----+----+------+-------------------+---- + 40 | 40 | 1 | .0000000 | 4 + 40 | 40 | 1 | .0000000 | 4 + 30 | 30 | 12 | 256.8000000 | 3 + 30 | 30 | 12 | 256.8000000 | 3 + 40 | 40 | 1 | 256.8000000 | 3 + 50 | 50 | 1 | -5819031.4285714 | 2 + 40 | 40 | 1100 | -5819031.4285714 | 2 + 30 | 30 | 1 | -5990552.9166667 | 1 + 30 | 30 | 12 | -5990552.9166667 | 1 + 50 | 50 | 1 | -5990552.9166667 | 1 + 10 | 10 | 1 | -5990552.9166667 | 1 + 20 | 20 | 1 | -5990552.9166667 | 1 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ); -- mvd 3->2; + vn | to_char | cn +----+-------------------+---- + 40 | .0000000 | 4 + 40 | .0000000 | 4 + 30 | -50.0000000 | 3 + 40 | -50.0000000 | 3 + 30 | -50.0000000 | 3 + 50 | -2892000.0000000 | 2 + 40 | -2892000.0000000 | 2 + 30 | -10.0000000 | 1 + 50 | -10.0000000 | 1 + 30 | -10.0000000 | 1 + 10 | -10.0000000 | 1 + 20 | -10.0000000 | 1 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and floor(ow_sale.cn+ow_sale.qty) preceding ); -- mvd 3->2; + qty | to_char | pn +------+-------------------+----- + 1 | .0000000 | 800 + 1 | .0000000 | 700 + 12 | .0000000 | 600 + 12 | -400.0000000 | 500 + 12 | -400.0000000 | 500 + 1 | -1040.0000000 | 400 + 1 | -1040.0000000 | 400 + 1 | 28.5714286 | 300 + 1 | 575.0000000 | 200 + 1 | 575.0000000 | 200 + 1 | 1680.0000000 | 100 + 1100 | .0000000 | 100 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.qty)) OVER(order by ow_sale.vn asc range between unbounded preceding and floor(ow_sale.cn*ow_sale.vn) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and floor(ow_sale.cn*ow_sale.vn) preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 1->6; 4->7; 1->8; + vn | qty | pn | cn | vn | to_char | to_char | to_char +----+------+-----+----+----+-------------------+-------------------+------------------- + 40 | 1 | 800 | 4 | 40 | .0000000 | 1.0000000 | .0000000 + 40 | 1 | 700 | 4 | 40 | .0000000 | 1.0000000 | .0000000 + 30 | 12 | 500 | 3 | 30 | .0000000 | 2.0000000 | .0000000 + 40 | 1 | 200 | 3 | 40 | .0000000 | 2.0000000 | .0000000 + 30 | 12 | 600 | 3 | 30 | .0000000 | 2.0000000 | .0000000 + 50 | 1 | 400 | 2 | 50 | .0000000 | 3.0000000 | .0000000 + 40 | 1100 | 100 | 2 | 40 | .0000000 | 3.0000000 | .0000000 + 50 | 1 | 400 | 1 | 50 | .0000000 | 4.0000000 | .0000000 + 20 | 1 | 100 | 1 | 20 | .0000000 | 4.0000000 | .0000000 + 30 | 1 | 300 | 1 | 30 | .0000000 | 4.0000000 | .0000000 + 30 | 12 | 500 | 1 | 30 | .0000000 | 4.0000000 | .0000000 + 10 | 1 | 200 | 1 | 10 | .0000000 | 4.0000000 | .0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and current row ); -- mvd 6->5; + cn | vn | vn | cn | to_char | pn +----+----+----+----+-------------------+----- + 4 | 40 | 40 | 4 | .0000000 | 800 + 4 | 40 | 40 | 4 | .0000000 | 700 + 3 | 30 | 30 | 3 | -26.6666667 | 600 + 1 | 30 | 30 | 1 | -48.0000000 | 500 + 3 | 30 | 30 | 3 | -48.0000000 | 500 + 1 | 50 | 50 | 1 | -125.7142857 | 400 + 2 | 50 | 50 | 2 | -125.7142857 | 400 + 1 | 30 | 30 | 1 | -107.5000000 | 300 + 1 | 10 | 10 | 1 | -65.0000000 | 200 + 3 | 40 | 40 | 3 | -65.0000000 | 200 + 1 | 20 | 20 | 1 | 13949.1666667 | 100 + 2 | 40 | 40 | 2 | 13949.1666667 | 100 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn*ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc-ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty+ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and current row ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.vn asc), +win4 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn desc); -- mvd 4->6; 1,3->7; 3->8; 3,4->9; 3->10; + cn | cn | vn | pn | qty | to_char | to_char | to_char | to_char | to_char +----+----+----+-----+------+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | 1 | 10 | 200 | 1 | 27525.0000000 | 1.0000000 | .0833333 | .0000000 | .0000000 + 1 | 1 | 20 | 100 | 1 | 54950.0000000 | 1.0000000 | .1666667 | .0000000 | .0909091 + 1 | 1 | 30 | 500 | 12 | 40400.0000000 | 1.0000000 | .5000000 | .0000000 | .1818182 + 3 | 3 | 30 | 500 | 12 | 40400.0000000 | 3.0000000 | .5000000 | .0000000 | .1818182 + 1 | 1 | 30 | 300 | 1 | 43920.0000000 | 1.0000000 | .5000000 | .0000000 | .1818182 + 3 | 3 | 30 | 600 | 12 | 32560.0000000 | 3.0000000 | .5000000 | .0000000 | .1818182 + 2 | 2 | 40 | 100 | 1100 | 54950.0000000 | 2.0000000 | .8333333 | .0000000 | .5454545 + 3 | 3 | 40 | 200 | 1 | 27525.0000000 | 3.0000000 | .8333333 | .0000000 | .5454545 + 4 | 4 | 40 | 700 | 1 | 7800.0000000 | 4.0000000 | .8333333 | .0000000 | .5454545 + 4 | 4 | 40 | 800 | 1 | -12650.0000000 | 4.0000000 | .8333333 | .0000000 | .5454545 + 1 | 1 | 50 | 400 | 1 | 47028.5714286 | 1.0000000 | 1.0000000 | .0000000 | .9090909 + 2 | 2 | 50 | 400 | 1 | 47028.5714286 | 2.0000000 | 1.0000000 | .0000000 | .9090909 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and 3 following ); -- mvd 3->4; + vn | cn | pn | to_char +----+----+-----+------------------- + 20 | 1 | 100 | .0000000 + 40 | 2 | 100 | .0000000 + 10 | 1 | 200 | 10000.0000000 + 40 | 3 | 200 | 10000.0000000 + 30 | 1 | 300 | 28000.0000000 + 50 | 1 | 400 | 97142.8571429 + 50 | 2 | 400 | 97142.8571429 + 30 | 1 | 500 | 200000.0000000 + 30 | 3 | 500 | 200000.0000000 + 30 | 3 | 600 | 281000.0000000 + 40 | 4 | 700 | 405454.5454545 + 40 | 4 | 800 | 580000.0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.qty,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and 1 following ), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.prc,ow_sale.prc,ow_sale.qty order by ow_sale.cn desc); -- mvd 5->4; 2,5,3,7,8->6; + pn | prc | dt | to_char | cn | to_char | qty | vn +-----+------+------------+-------------------+----+-------------------+------+---- + 500 | 5 | 1401-06-01 | 17128.5714286 | 1 | 3.0000000 | 12 | 30 + 100 | 0 | 1401-05-01 | 17128.5714286 | 1 | 1.0000000 | 1 | 20 + 200 | 0 | 1401-03-01 | 17128.5714286 | 1 | 1.0000000 | 1 | 10 + 300 | 0 | 1401-05-02 | 17128.5714286 | 1 | 1.0000000 | 1 | 30 + 400 | 0 | 1401-06-01 | 17128.5714286 | 1 | 2.0000000 | 1 | 50 + 100 | 2400 | 1401-01-01 | 16755.0000000 | 2 | 1.0000000 | 1100 | 40 + 400 | 0 | 1401-06-01 | 16755.0000000 | 2 | 1.0000000 | 1 | 50 + 600 | 5 | 1401-06-01 | 13949.1666667 | 3 | 2.0000000 | 12 | 30 + 200 | 0 | 1401-04-01 | 13949.1666667 | 3 | 1.0000000 | 1 | 40 + 500 | 5 | 1401-06-01 | 13949.1666667 | 3 | 1.0000000 | 12 | 30 + 700 | 1 | 1401-06-01 | 13949.1666667 | 4 | 2.0000000 | 1 | 40 + 800 | 1 | 1401-06-01 | 13949.1666667 | 4 | 1.0000000 | 1 | 40 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn+ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 3->2; + dt | to_char | vn +------------+-------------------+---- + 1401-03-01 | -708300.0000000 | 10 + 1401-05-01 | -708300.0000000 | 20 + 1401-06-01 | -708300.0000000 | 30 + 1401-05-02 | -708300.0000000 | 30 + 1401-06-01 | -708300.0000000 | 30 + 1401-06-01 | -708300.0000000 | 30 + 1401-01-01 | -708300.0000000 | 40 + 1401-06-01 | -708300.0000000 | 40 + 1401-06-01 | -708300.0000000 | 40 + 1401-04-01 | -708300.0000000 | 40 + 1401-06-01 | -708300.0000000 | 50 + 1401-06-01 | -708300.0000000 | 50 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.vn desc); -- mvd 5->4; 5->6; 5,2->7; 5->8; 5->9; 5,2->10; + dt | vn | qty | to_char | cn | to_char | to_char | to_char | to_char | to_char +------------+----+------+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 1401-06-01 | 40 | 1 | -445.5000000 | 4 | 1.0000000 | 1.0000000 | -696.0000000 | 2.0000000 | 4.0000000 + 1401-06-01 | 40 | 1 | -445.5000000 | 4 | 1.0000000 | 1.0000000 | -696.0000000 | 2.0000000 | 4.0000000 + 1401-06-01 | 30 | 12 | -445.5000000 | 3 | 2.0000000 | 1.0000000 | -197.0000000 | 5.0000000 | 3.0000000 + 1401-06-01 | 30 | 12 | -445.5000000 | 3 | 2.0000000 | 1.0000000 | -197.0000000 | 5.0000000 | 3.0000000 + 1401-04-01 | 40 | 1 | -445.5000000 | 3 | 2.0000000 | 1.0000000 | -197.0000000 | 5.0000000 | 3.0000000 + 1401-01-01 | 40 | 1100 | -445.5000000 | 2 | 3.0000000 | 1.0000000 | -98.0000000 | 7.0000000 | 2.0000000 + 1401-06-01 | 50 | 1 | -445.5000000 | 2 | 3.0000000 | 1.0000000 | -98.0000000 | 7.0000000 | 2.0000000 + 1401-06-01 | 30 | 12 | -445.5000000 | 1 | 4.0000000 | 1.0000000 | -98.0000000 | 12.0000000 | 1.0000000 + 1401-03-01 | 10 | 1 | -445.5000000 | 1 | 4.0000000 | 1.0000000 | -98.0000000 | 12.0000000 | 1.0000000 + 1401-06-01 | 50 | 1 | -445.5000000 | 1 | 4.0000000 | 1.0000000 | -98.0000000 | 12.0000000 | 1.0000000 + 1401-05-01 | 20 | 1 | -445.5000000 | 1 | 4.0000000 | 1.0000000 | -98.0000000 | 12.0000000 | 1.0000000 + 1401-05-02 | 30 | 1 | -445.5000000 | 1 | 4.0000000 | 1.0000000 | -98.0000000 | 12.0000000 | 1.0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 0 preceding and floor(ow_sale.vn+ow_sale.prc) preceding ), +win2 as (order by ow_sale.pn desc); -- mvd 4->3; 6->5; + prc | cn | to_char | vn | to_char | pn +------+----+-------------------+----+-------------------+----- + 1 | 4 | .0000000 | 40 | .0000000 | 800 + 1 | 4 | .0000000 | 40 | .0909091 | 700 + 5 | 3 | .0000000 | 30 | .1818182 | 600 + 5 | 1 | .0000000 | 30 | .2727273 | 500 + 5 | 3 | .0000000 | 30 | .2727273 | 500 + 0 | 2 | .0000000 | 50 | .4545455 | 400 + 0 | 1 | .0000000 | 50 | .4545455 | 400 + 0 | 1 | .0000000 | 30 | .6363636 | 300 + 0 | 1 | .0000000 | 10 | .7272727 | 200 + 0 | 3 | .0000000 | 40 | .7272727 | 200 + 2400 | 2 | .0000000 | 40 | .9090909 | 100 + 0 | 1 | .0000000 | 20 | .9090909 | 100 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 4 preceding and current row ); -- mvd 5->4; + qty | qty | pn | to_char | vn +------+------+-----+-------------------+---- + 1 | 1 | 400 | .0000000 | 50 + 1 | 1 | 400 | .0000000 | 50 + 1100 | 1100 | 100 | .0000000 | 40 + 1 | 1 | 700 | .0000000 | 40 + 1 | 1 | 800 | .0000000 | 40 + 1 | 1 | 200 | .0000000 | 40 + 12 | 12 | 600 | .0000000 | 30 + 1 | 1 | 300 | .0000000 | 30 + 12 | 12 | 500 | .0000000 | 30 + 12 | 12 | 500 | .0000000 | 30 + 1 | 1 | 100 | .0000000 | 20 + 1 | 1 | 200 | .0000000 | 10 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc*ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 1 preceding and current row ), +win2 as (partition by ow_sale.pn order by ow_sale.vn desc); -- mvd 2->7; 1,3->8; 1,3->9; + vn | cn | pn | vn | qty | pn | to_char | to_char | to_char +----+----+-----+----+------+-----+-------------------+-------------------+------------------- + 30 | 1 | 300 | 30 | 1 | 300 | .0000000 | 1.0000000 | 1.0000000 + 50 | 1 | 400 | 50 | 1 | 400 | .0000000 | 2.0000000 | 1.0000000 + 30 | 1 | 500 | 30 | 12 | 500 | .0000000 | 1.0000000 | 1.0000000 + 20 | 1 | 100 | 20 | 1 | 100 | .0000000 | 2.0000000 | 2.0000000 + 10 | 1 | 200 | 10 | 1 | 200 | .0000000 | 2.0000000 | 2.0000000 + 40 | 2 | 100 | 40 | 1100 | 100 | 3427.1428571 | 1.0000000 | 1.0000000 + 50 | 2 | 400 | 50 | 1 | 400 | 3427.1428571 | 1.0000000 | 1.0000000 + 30 | 3 | 500 | 30 | 12 | 500 | -2868.0000000 | 2.0000000 | 1.0000000 + 40 | 3 | 200 | 40 | 1 | 200 | -2868.0000000 | 1.0000000 | 1.0000000 + 30 | 3 | 600 | 30 | 12 | 600 | -2868.0000000 | 1.0000000 | 1.0000000 + 40 | 4 | 700 | 40 | 1 | 700 | -7.2000000 | 1.0000000 | 1.0000000 + 40 | 4 | 800 | 40 | 1 | 800 | -7.2000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 3 preceding and 0 following ); -- mvd 3->2; + pn | to_char | cn +-----+-------------------+---- + 800 | .0000000 | 4 + 700 | .0000000 | 4 + 500 | .0000000 | 3 + 600 | .0000000 | 3 + 200 | .0000000 | 3 + 400 | .0000000 | 2 + 100 | .0000000 | 2 + 300 | .0000000 | 1 + 500 | .0000000 | 1 + 400 | .0000000 | 1 + 200 | .0000000 | 1 + 100 | .0000000 | 1 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc/ow_sale.qty)) OVER(order by ow_sale.vn desc range between floor(ow_sale.pn/ow_sale.vn) preceding and 2 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.pn/ow_sale.vn) preceding and 2 following ), +win2 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.cn desc); -- mvd 3->2; 3->4; 6,7,1,3->5; 6,7,1,3->8; + qty | to_char | vn | to_char | to_char | prc | cn | to_char +------+-------------------+----+-------------------+-------------------+------+----+------------------- + 1 | .5000000 | 50 | .0000000 | 1.0000000 | 0 | 2 | 52.0000000 + 1 | .5000000 | 50 | .0000000 | 2.0000000 | 0 | 1 | 52.0000000 + 1 | 2.7500000 | 40 | 2.0000000 | 1.0000000 | 0 | 3 | 43.0000000 + 1 | 7.3333333 | 40 | 2.0000000 | 1.0000000 | 1 | 4 | 44.0000000 + 1 | 7.3333333 | 40 | 2.0000000 | 1.0000000 | 1 | 4 | 44.0000000 + 1100 | 2.7500000 | 40 | 2.0000000 | 1.0000000 | 2400 | 2 | 42.0000000 + 12 | 12.4000000 | 30 | 2.0000000 | 1.0000000 | 5 | 3 | 33.0000000 + 12 | 9.8750000 | 30 | 2.0000000 | 1.0000000 | 5 | 3 | 33.0000000 + 12 | 9.8750000 | 30 | 2.0000000 | 2.0000000 | 5 | 1 | 33.0000000 + 1 | 9.8750000 | 30 | 2.0000000 | 1.0000000 | 0 | 1 | 31.0000000 + 1 | .0000000 | 20 | .0000000 | 1.0000000 | 0 | 1 | 21.0000000 + 1 | 5.3333333 | 10 | .0000000 | 1.0000000 | 0 | 1 | 11.0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.qty-ow_sale.qty) preceding and unbounded following ); -- mvd 6->5; + pn | vn | qty | qty | to_char | cn +-----+----+------+------+-------------------+---- + 800 | 40 | 1 | 1 | -393.8333333 | 4 + 700 | 40 | 1 | 1 | -393.8333333 | 4 + 500 | 30 | 12 | 12 | 488.0000000 | 3 + 200 | 40 | 1 | 1 | 488.0000000 | 3 + 600 | 30 | 12 | 12 | 488.0000000 | 3 + 400 | 50 | 1 | 1 | 1712.8571429 | 2 + 100 | 40 | 1100 | 1100 | 1712.8571429 | 2 + 300 | 30 | 1 | 1 | .0000000 | 1 + 400 | 50 | 1 | 1 | .0000000 | 1 + 500 | 30 | 12 | 12 | .0000000 | 1 + 200 | 10 | 1 | 1 | .0000000 | 1 + 100 | 20 | 1 | 1 | .0000000 | 1 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn+ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.prc)) OVER(partition by ow_sale.vn order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.vn order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.vn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 0 preceding and unbounded following ), +win2 as (partition by ow_sale.vn order by ow_sale.vn desc), +win3 as (partition by ow_sale.vn order by ow_sale.cn asc); -- mvd 2->5; 7->6; 7->8; 7->9; 2,7->10; 2,7->11; + qty | cn | dt | pn | to_char | to_char | vn | to_char | to_char | to_char | to_char +------+----+------------+-----+-------------------+-------------------+----+-------------------+-------------------+-------------------+------------------- + 1 | 4 | 1401-06-01 | 800 | -708300.0000000 | .0000000 | 40 | 4.0000000 | .0000000 | 1.0000000 | 760.0000000 + 1 | 4 | 1401-06-01 | 700 | -708300.0000000 | .0000000 | 40 | 4.0000000 | .0000000 | 1.0000000 | 760.0000000 + 12 | 3 | 1401-06-01 | 600 | -544850.0000000 | .0000000 | 30 | 4.0000000 | .0000000 | 1.0000000 | 570.0000000 + 1 | 3 | 1401-04-01 | 200 | -544850.0000000 | .0000000 | 40 | 4.0000000 | .0000000 | .5000000 | 160.0000000 + 12 | 3 | 1401-06-01 | 500 | -544850.0000000 | .0000000 | 30 | 4.0000000 | .0000000 | 1.0000000 | 570.0000000 + 1 | 2 | 1401-06-01 | 400 | -438357.1428571 | .0000000 | 50 | 2.0000000 | .0000000 | 1.0000000 | 350.0000000 + 1100 | 2 | 1401-01-01 | 100 | -438357.1428571 | .0000000 | 40 | 4.0000000 | .0000000 | .2500000 | 60.0000000 + 12 | 1 | 1401-06-01 | 500 | 7000.0000000 | .0000000 | 30 | 4.0000000 | .0000000 | .5000000 | 470.0000000 + 1 | 1 | 1401-05-02 | 300 | 7000.0000000 | .0000000 | 30 | 4.0000000 | .0000000 | .5000000 | 470.0000000 + 1 | 1 | 1401-05-01 | 100 | 7000.0000000 | .0000000 | 20 | 1.0000000 | .0000000 | 1.0000000 | 80.0000000 + 1 | 1 | 1401-06-01 | 400 | 7000.0000000 | .0000000 | 50 | 2.0000000 | .0000000 | .5000000 | 350.0000000 + 1 | 1 | 1401-03-01 | 200 | 7000.0000000 | .0000000 | 10 | 1.0000000 | .0000000 | 1.0000000 | 190.0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn-ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and current row ); -- mvd 1->5; + cn | pn | cn | dt | to_char +----+-----+----+------------+------------------- + 4 | 800 | 4 | 1401-06-01 | .0000000 + 4 | 700 | 4 | 1401-06-01 | .0000000 + 3 | 500 | 3 | 1401-06-01 | 73.3333333 + 3 | 200 | 3 | 1401-04-01 | 73.3333333 + 3 | 600 | 3 | 1401-06-01 | 73.3333333 + 2 | 400 | 2 | 1401-06-01 | 5495.0000000 + 2 | 100 | 2 | 1401-01-01 | 5495.0000000 + 1 | 300 | 1 | 1401-05-02 | -22.0000000 + 1 | 400 | 1 | 1401-06-01 | -22.0000000 + 1 | 500 | 1 | 1401-06-01 | -22.0000000 + 1 | 100 | 1 | 1401-05-01 | -22.0000000 + 1 | 200 | 1 | 1401-03-01 | -22.0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.prc)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.qty order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn/ow_sale.qty)) OVER(order by ow_sale.pn desc range between current row and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and current row ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.qty order by ow_sale.cn desc), +win3 as (order by ow_sale.cn asc); -- mvd 5->4; 7,8,1,5->6; 7->9; 7->10; 7,8,1,5->11; 5->12; + qty | prc | vn | to_char | pn | to_char | cn | dt | to_char | to_char | to_char | to_char +------+------+----+-------------------+-----+-------------------+----+------------+-------------------+-------------------+-------------------+------------------- + 1 | 0 | 20 | .0000000 | 100 | 1.0000000 | 1 | 1401-05-01 | .0000000 | 5.0000000 | 1.0000000 | 100.0000000 + 12 | 5 | 30 | .0000000 | 500 | 1.0000000 | 1 | 1401-06-01 | .0000000 | 5.0000000 | 2.0000000 | 41.0000000 + 1 | 0 | 50 | .0000000 | 400 | 1.0000000 | 1 | 1401-06-01 | .0000000 | 5.0000000 | 2.0000000 | 400.0000000 + 1 | 0 | 30 | .0000000 | 300 | 1.0000000 | 1 | 1401-05-02 | .0000000 | 5.0000000 | 1.0000000 | 300.0000000 + 1 | 0 | 10 | .0000000 | 200 | 1.0000000 | 1 | 1401-03-01 | .0000000 | 5.0000000 | 1.0000000 | 200.0000000 + 1100 | 2400 | 40 | .0000000 | 100 | 1.0000000 | 2 | 1401-01-01 | .4545455 | 7.0000000 | 1.0000000 | 100.0000000 + 1 | 0 | 50 | .0000000 | 400 | .5000000 | 2 | 1401-06-01 | .4545455 | 7.0000000 | 1.0000000 | 400.0000000 + 12 | 5 | 30 | .0000000 | 500 | .5000000 | 3 | 1401-06-01 | .6363636 | 10.0000000 | 1.0000000 | 41.0000000 + 1 | 0 | 40 | .0000000 | 200 | 1.0000000 | 3 | 1401-04-01 | .6363636 | 10.0000000 | 1.0000000 | 200.0000000 + 12 | 5 | 30 | .0000000 | 600 | 1.0000000 | 3 | 1401-06-01 | .6363636 | 10.0000000 | 1.0000000 | 50.0000000 + 1 | 1 | 40 | .0000000 | 700 | 1.0000000 | 4 | 1401-06-01 | .9090909 | 12.0000000 | 1.0000000 | 700.0000000 + 1 | 1 | 40 | .0000000 | 800 | 1.0000000 | 4 | 1401-06-01 | .9090909 | 12.0000000 | 1.0000000 | 800.0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.qty*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and floor(ow_sale.vn+ow_sale.cn) following ); -- mvd 3->2; + cn | to_char | pn +----+-------------------+----- + 1 | 1320000.0000000 | 100 + 2 | 1320000.0000000 | 100 + 1 | .0000000 | 200 + 3 | .0000000 | 200 + 1 | .0000000 | 300 + 1 | .0000000 | 400 + 2 | .0000000 | 400 + 1 | .0000000 | 500 + 3 | .0000000 | 500 + 3 | .0000000 | 600 + 4 | .0000000 | 700 + 4 | .0000000 | 800 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn+ow_sale.vn),floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and unbounded following ); -- mvd 5->4; + vn | dt | dt | to_char | pn +----+------------+------------+-------------------+----- + 40 | 1401-06-01 | 1401-06-01 | 19651.0000000 | 800 + 40 | 1401-06-01 | 1401-06-01 | 22116.1818182 | 700 + 30 | 1401-06-01 | 1401-06-01 | 25074.4000000 | 600 + 30 | 1401-06-01 | 1401-06-01 | 24397.0000000 | 500 + 30 | 1401-06-01 | 1401-06-01 | 24397.0000000 | 500 + 50 | 1401-06-01 | 1401-06-01 | 21493.8571429 | 400 + 50 | 1401-06-01 | 1401-06-01 | 21493.8571429 | 400 + 30 | 1401-05-02 | 1401-05-02 | 43387.6000000 | 300 + 10 | 1401-03-01 | 1401-03-01 | 44612.2500000 | 200 + 40 | 1401-04-01 | 1401-04-01 | 44612.2500000 | 200 + 20 | 1401-05-01 | 1401-05-01 | 36739.5000000 | 100 + 40 | 1401-01-01 | 1401-01-01 | 36739.5000000 | 100 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn+ow_sale.qty),floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.pn-ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(order by ow_sale.cn asc range between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 1->5; 7->6; 7->8; 7->9; 7->10; 1->11; + cn | dt | vn | cn | to_char | to_char | pn | to_char | to_char | to_char | to_char +----+------------+----+----+-------------------+-------------------+-----+-------------------+-------------------+-------------------+------------------- + 2 | 1401-01-01 | 40 | 2 | 1846034.0000000 | .0000000 | 100 | 1.0000000 | 1.0000000 | .0000000 | 2.0000000 + 1 | 1401-03-01 | 10 | 1 | 2107410.5000000 | .0000000 | 200 | 2.0000000 | 2.0000000 | .0909091 | 1.0000000 + 3 | 1401-04-01 | 40 | 3 | -14.8000000 | .0000000 | 200 | 3.0000000 | 3.0000000 | .1818182 | 3.0000000 + 1 | 1401-05-01 | 20 | 1 | 2107410.5000000 | .0000000 | 100 | 4.0000000 | 4.0000000 | .2727273 | 1.0000000 + 1 | 1401-05-02 | 30 | 1 | 2107410.5000000 | .0000000 | 300 | 5.0000000 | 5.0000000 | .3636364 | 1.0000000 + 1 | 1401-06-01 | 50 | 1 | 2107410.5000000 | .0000000 | 400 | 6.0000000 | 6.0000000 | .4545455 | 1.0000000 + 2 | 1401-06-01 | 50 | 2 | 1846034.0000000 | .0000000 | 400 | 7.0000000 | 7.0000000 | .5454545 | 2.0000000 + 1 | 1401-06-01 | 30 | 1 | 2107410.5000000 | .0000000 | 500 | 8.0000000 | 8.0000000 | .6363636 | 1.0000000 + 3 | 1401-06-01 | 30 | 3 | -14.8000000 | .0000000 | 500 | 9.0000000 | 9.0000000 | .7272727 | 3.0000000 + 3 | 1401-06-01 | 30 | 3 | -14.8000000 | .0000000 | 600 | 10.0000000 | 10.0000000 | .8181818 | 3.0000000 + 4 | 1401-06-01 | 40 | 4 | .0000000 | .0000000 | 700 | 11.0000000 | 11.0000000 | .9090909 | 4.0000000 + 4 | 1401-06-01 | 40 | 4 | .0000000 | .0000000 | 800 | 12.0000000 | 12.0000000 | 1.0000000 | 4.0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 1 following and 3 following ); -- mvd 1->5; + pn | dt | pn | prc | to_char +-----+------------+-----+------+------------------- + 100 | 1401-05-01 | 100 | 0 | .0000000 + 100 | 1401-01-01 | 100 | 2400 | .0000000 + 200 | 1401-03-01 | 200 | 0 | .0000000 + 200 | 1401-04-01 | 200 | 0 | .0000000 + 300 | 1401-05-02 | 300 | 0 | .0000000 + 400 | 1401-06-01 | 400 | 0 | .0000000 + 400 | 1401-06-01 | 400 | 0 | .0000000 + 500 | 1401-06-01 | 500 | 5 | .0000000 + 500 | 1401-06-01 | 500 | 5 | .0000000 + 600 | 1401-06-01 | 600 | 5 | .0000000 + 700 | 1401-06-01 | 700 | 1 | .0000000 + 800 | 1401-06-01 | 800 | 1 | .0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn+ow_sale.cn),floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn/ow_sale.pn)) OVER(order by ow_sale.pn asc range between 4 following and 2 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 4 following and 2 following ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.pn asc), +win4 as (partition by ow_sale.pn order by ow_sale.cn asc); -- mvd 1->5; 7->6; 1->8; 1->9; 11,1->10; 1->12; + pn | prc | pn | qty | to_char | to_char | vn | to_char | to_char | to_char | cn | to_char +-----+------+-----+------+-------------------+-------------------+----+-------------------+-------------------+-------------------+----+------------------- + 400 | 0 | 400 | 1 | .0000000 | .0000000 | 50 | .0000000 | .5833333 | 1.0000000 | 2 | .0000000 + 400 | 0 | 400 | 1 | .0000000 | .0000000 | 50 | .0000000 | .5833333 | .5000000 | 1 | .0000000 + 200 | 0 | 200 | 1 | .0000000 | .1818182 | 40 | .0000000 | .3333333 | 1.0000000 | 3 | .0000000 + 800 | 1 | 800 | 1 | .0000000 | .1818182 | 40 | .0000000 | 1.0000000 | 1.0000000 | 4 | .0000000 + 100 | 2400 | 100 | 1100 | .0000000 | .1818182 | 40 | .0000000 | .1666667 | 1.0000000 | 2 | .0000000 + 700 | 1 | 700 | 1 | .0000000 | .1818182 | 40 | .0000000 | .9166667 | 1.0000000 | 4 | .0000000 + 500 | 5 | 500 | 12 | .0000000 | .5454545 | 30 | .0000000 | .7500000 | .5000000 | 1 | .0000000 + 500 | 5 | 500 | 12 | .0000000 | .5454545 | 30 | .0000000 | .7500000 | 1.0000000 | 3 | .0000000 + 600 | 5 | 600 | 12 | .0000000 | .5454545 | 30 | .0000000 | .8333333 | 1.0000000 | 3 | .0000000 + 300 | 0 | 300 | 1 | .0000000 | .5454545 | 30 | .0000000 | .4166667 | 1.0000000 | 1 | .0000000 + 100 | 0 | 100 | 1 | .0000000 | .9090909 | 20 | .0000000 | .1666667 | .5000000 | 1 | .0000000 + 200 | 0 | 200 | 1 | .0000000 | 1.0000000 | 10 | .0000000 | .3333333 | .5000000 | 1 | .0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 0 following and unbounded following ); -- mvd 3->4; + vn | qty | cn | to_char +----+------+----+------------------- + 40 | 1 | 4 | -216.1666667 + 40 | 1 | 4 | -216.1666667 + 30 | 12 | 3 | 250.6000000 + 30 | 12 | 3 | 250.6000000 + 40 | 1 | 3 | 250.6000000 + 50 | 1 | 2 | 931.0000000 + 40 | 1100 | 2 | 931.0000000 + 30 | 1 | 1 | .0000000 + 30 | 12 | 1 | .0000000 + 50 | 1 | 1 | .0000000 + 10 | 1 | 1 | .0000000 + 20 | 1 | 1 | .0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn-ow_sale.qty),floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.prc/ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.pn) following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.dt order by ow_sale.cn asc); -- mvd 1->4; 6->5; 6->7; 2,9,6->8; 6->10; + vn | prc | prc | to_char | to_char | cn | to_char | to_char | dt | to_char +----+------+------+-------------------+-------------------+----+-------------------+-------------------+------------+------------------- + 40 | 2400 | 2400 | .0000000 | .0000000 | 2 | 1.0000000 | 1.0000000 | 1401-01-01 | 1.0000000 + 10 | 0 | 0 | .0000000 | .0000000 | 1 | 2.0000000 | 1.0000000 | 1401-03-01 | 2.0000000 + 40 | 0 | 0 | .0000000 | .0000000 | 3 | 3.0000000 | 1.0000000 | 1401-04-01 | 3.0000000 + 20 | 0 | 0 | .0000000 | .0000000 | 1 | 4.0000000 | 1.0000000 | 1401-05-01 | 4.0000000 + 30 | 0 | 0 | .0000000 | .0000000 | 1 | 5.0000000 | 1.0000000 | 1401-05-02 | 5.0000000 + 50 | 0 | 0 | .0000000 | .0000000 | 1 | 6.0000000 | 1.0000000 | 1401-06-01 | 6.0000000 + 50 | 0 | 0 | .0000000 | .0000000 | 2 | 7.0000000 | 1.0000000 | 1401-06-01 | 7.0000000 + 30 | 5 | 5 | .0000000 | .0000000 | 1 | 8.0000000 | 1.0000000 | 1401-06-01 | 8.0000000 + 30 | 5 | 5 | .0000000 | 5.0000000 | 3 | 9.0000000 | 1.0000000 | 1401-06-01 | 9.0000000 + 30 | 5 | 5 | .0000000 | 5.0000000 | 3 | 10.0000000 | 1.0000000 | 1401-06-01 | 10.0000000 + 40 | 1 | 1 | .0000000 | 1.0000000 | 4 | 11.0000000 | 1.0000000 | 1401-06-01 | 11.0000000 + 40 | 1 | 1 | .0000000 | 1.0000000 | 4 | 12.0000000 | 1.0000000 | 1401-06-01 | 12.0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty),floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.pn desc rows 9 preceding ); -- mvd 5,1,6->4; + vn | qty | qty | to_char | cn | pn +----+------+------+-------------------+----+----- + 40 | 1100 | 1100 | .0000000 | 2 | 100 + 10 | 1 | 1 | 1373750.0000000 | 1 | 200 + 40 | 1 | 1 | 1831666.6666667 | 3 | 200 + 20 | 1 | 1 | 2033150.0000000 | 1 | 100 + 30 | 1 | 1 | 2198000.0000000 | 1 | 300 + 50 | 1 | 1 | 2326216.6666667 | 1 | 400 + 50 | 1 | 1 | 2417800.0000000 | 2 | 400 + 30 | 12 | 12 | 2493811.2500000 | 1 | 500 + 30 | 12 | 12 | 2552931.1111111 | 3 | 500 + 30 | 12 | 12 | 2610447.0000000 | 3 | 600 + 40 | 1 | 1 | -4617.8000000 | 4 | 700 + 40 | 1 | 1 | -2641.1000000 | 4 | 800 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn/ow_sale.cn),floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows current row ); -- mvd 1->6; + vn | pn | prc | pn | prc | to_char +----+-----+------+-----+------+------------------- + 40 | 100 | 2400 | 100 | 2400 | .0000000 + 10 | 200 | 0 | 200 | 0 | .0000000 + 40 | 200 | 0 | 200 | 0 | .0000000 + 20 | 100 | 0 | 100 | 0 | .0000000 + 30 | 300 | 0 | 300 | 0 | .0000000 + 50 | 400 | 0 | 400 | 0 | .0000000 + 50 | 400 | 0 | 400 | 0 | .0000000 + 30 | 500 | 5 | 500 | 5 | .0000000 + 30 | 500 | 5 | 500 | 5 | .0000000 + 30 | 600 | 5 | 600 | 5 | .0000000 + 40 | 700 | 1 | 700 | 1 | .0000000 + 40 | 800 | 1 | 800 | 1 | .0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.prc) as int),cast (floor(ow_sale.prc+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.vn desc rows current row ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.cn asc), +win3 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,4->2; 3,4,6->5; 3,4,6->7; 3,4,6->8; 3,4->9; 3,4->10; + prc | to_char | cn | vn | to_char | pn | to_char | to_char | to_char | to_char +------+-------------------+----+----+-------------------+-----+-------------------+-------------------+-------------------+------------------- + 2400 | .0000000 | 2 | 40 | 1.0000000 | 100 | 1.0000000 | 98.0000000 | 1.0000000 | .0000000 + 0 | .0000000 | 1 | 10 | 1.0000000 | 200 | 1.0000000 | 199.0000000 | 1.0000000 | .0000000 + 0 | .0000000 | 3 | 40 | 1.0000000 | 200 | 1.0000000 | 197.0000000 | 1.0000000 | .0000000 + 0 | .0000000 | 1 | 20 | 1.0000000 | 100 | 1.0000000 | 99.0000000 | 1.0000000 | .0000000 + 0 | .0000000 | 1 | 30 | 1.0000000 | 300 | 1.0000000 | 299.0000000 | 1.0000000 | .0000000 + 0 | .0000000 | 1 | 50 | 1.0000000 | 400 | 1.0000000 | 399.0000000 | 1.0000000 | .0000000 + 0 | .0000000 | 2 | 50 | 2.0000000 | 400 | 2.0000000 | 398.0000000 | 1.0000000 | .0000000 + 5 | .0000000 | 1 | 30 | 1.0000000 | 500 | 1.0000000 | 499.0000000 | 1.0000000 | .0000000 + 5 | .0000000 | 3 | 30 | 2.0000000 | 500 | 2.0000000 | 497.0000000 | 1.0000000 | .0000000 + 5 | .0000000 | 3 | 30 | 1.0000000 | 600 | 1.0000000 | 597.0000000 | 1.0000000 | .0000000 + 1 | .0000000 | 4 | 40 | 1.0000000 | 700 | 1.0000000 | 696.0000000 | 1.0000000 | .0000000 + 1 | .0000000 | 4 | 40 | 1.0000000 | 800 | 1.0000000 | 796.0000000 | 1.0000000 | .0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn-ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 6 preceding ); -- mvd 3->7; + prc | cn | vn | qty | qty | qty | to_char +------+----+----+------+------+------+------------------- + 2400 | 2 | 40 | 1100 | 1100 | 1100 | .0000000 + 0 | 1 | 10 | 1 | 1 | 1 | .0000000 + 0 | 3 | 40 | 1 | 1 | 1 | .0000000 + 0 | 1 | 20 | 1 | 1 | 1 | .0000000 + 0 | 1 | 30 | 1 | 1 | 1 | .0000000 + 0 | 1 | 50 | 1 | 1 | 1 | .0000000 + 0 | 2 | 50 | 1 | 1 | 1 | .0000000 + 5 | 1 | 30 | 12 | 12 | 12 | 71435.0000000 + 5 | 3 | 30 | 12 | 12 | 12 | 84256.6666667 + 5 | 3 | 30 | 12 | 12 | 12 | 68687.5000000 + 1 | 4 | 40 | 1 | 1 | 1 | 101108.0000000 + 1 | 4 | 40 | 1 | 1 | 1 | 137375.0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty*ow_sale.vn),floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn-ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc,ow_sale.pn desc rows between unbounded preceding and 4 preceding ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (partition by ow_sale.dt order by ow_sale.cn desc); -- mvd 6,1->5; 3->7; 6,4->8; + pn | pn | vn | dt | to_char | cn | to_char | to_char +-----+-----+----+------------+-------------------+----+-------------------+------------------- + 100 | 100 | 40 | 1401-01-01 | .0000000 | 2 | .0000000 | 1.0000000 + 200 | 200 | 10 | 1401-03-01 | .0000000 | 1 | .0000000 | 1.0000000 + 200 | 200 | 40 | 1401-04-01 | .0000000 | 3 | .0000000 | 1.0000000 + 100 | 100 | 20 | 1401-05-01 | .0000000 | 1 | .0000000 | 1.0000000 + 300 | 300 | 30 | 1401-05-02 | .0000000 | 1 | .0000000 | 1.0000000 + 400 | 400 | 50 | 1401-06-01 | -54987500.0000000 | 1 | .0000000 | 1.0000000 + 400 | 400 | 50 | 1401-06-01 | -73291666.6666667 | 2 | .0000000 | .7142857 + 500 | 500 | 30 | 1401-06-01 | -81356500.0000000 | 1 | .0000000 | 1.0000000 + 500 | 500 | 30 | 1401-06-01 | -87949000.0000000 | 3 | .0000000 | .5714286 + 600 | 600 | 30 | 1401-06-01 | -93064833.3333333 | 3 | .0000000 | .5714286 + 700 | 700 | 40 | 1401-06-01 | -96719000.0000000 | 4 | .0000000 | .2857143 + 800 | 800 | 40 | 1401-06-01 | -99818950.0000000 | 4 | .0000000 | .2857143 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.pn desc), +win3 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.cn asc); -- mvd 3->5; 3,1->6; 8,3,1->7; 3,1->9; 8,3,1->10; 8,3,1->11; + pn | pn | vn | qty | to_char | to_char | to_char | cn | to_char | to_char | to_char +-----+-----+----+------+-------------------+-------------------+-------------------+----+-------------------+-------------------+------------------- + 100 | 100 | 40 | 1100 | .0000000 | 1.0000000 | 1.0000000 | 2 | 1.0000000 | 1.0000000 | 1.0000000 + 200 | 200 | 10 | 1 | -55000.0000000 | 1.0000000 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1.0000000 + 200 | 200 | 40 | 1 | -73266.6666667 | 1.0000000 | 1.0000000 | 3 | 1.0000000 | 1.0000000 | 1.0000000 + 100 | 100 | 20 | 1 | -54900.0000000 | 1.0000000 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1.0000000 + 300 | 300 | 30 | 1 | -87960.0000000 | 1.0000000 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1.0000000 + 400 | 400 | 50 | 1 | -128366.6666667 | 1.0000000 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1.0000000 + 400 | 400 | 50 | 1 | -157071.4285714 | 1.0000000 | 1.0000000 | 2 | 1.0000000 | 1.0000000 | 1.0000000 + 500 | 500 | 30 | 12 | -190050.0000000 | 1.0000000 | 1.0000000 | 1 | 1.0000000 | 1.0000000 | 1.0000000 + 500 | 500 | 30 | 12 | -215300.0000000 | 1.0000000 | 1.0000000 | 3 | 1.0000000 | 1.0000000 | 1.0000000 + 600 | 600 | 30 | 12 | -245600.0000000 | 1.0000000 | 1.0000000 | 3 | 1.0000000 | 1.0000000 | 1.0000000 + 700 | 700 | 40 | 1 | -282936.3636364 | 1.0000000 | 1.0000000 | 4 | 1.0000000 | 1.0000000 | 1.0000000 + 800 | 800 | 40 | 1 | -323300.0000000 | 1.0000000 | 1.0000000 | 4 | 1.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn+ow_sale.vn),floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between unbounded preceding and 9 following ); -- mvd 6->5; + dt | pn | dt | pn | to_char | cn +------------+-----+------------+-----+-------------------+---- + 1401-01-01 | 100 | 1401-01-01 | 100 | -6988.0000000 | 2 + 1401-03-01 | 200 | 1401-03-01 | 200 | -838.1818182 | 1 + 1401-04-01 | 200 | 1401-04-01 | 200 | 5453.3333333 | 3 + 1401-05-01 | 100 | 1401-05-01 | 100 | 5453.3333333 | 1 + 1401-05-02 | 300 | 1401-05-02 | 300 | 5453.3333333 | 1 + 1401-06-01 | 400 | 1401-06-01 | 400 | 5453.3333333 | 1 + 1401-06-01 | 400 | 1401-06-01 | 400 | 5453.3333333 | 2 + 1401-06-01 | 500 | 1401-06-01 | 500 | 5453.3333333 | 1 + 1401-06-01 | 500 | 1401-06-01 | 500 | 5453.3333333 | 3 + 1401-06-01 | 600 | 1401-06-01 | 600 | 5453.3333333 | 3 + 1401-06-01 | 700 | 1401-06-01 | 700 | 5453.3333333 | 4 + 1401-06-01 | 800 | 1401-06-01 | 800 | 5453.3333333 | 4 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty+ow_sale.prc),floor(ow_sale.pn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn asc rows between unbounded preceding and 0 following ), +win2 as (partition by ow_sale.pn order by ow_sale.vn asc); -- mvd 1,2,4->3; 2,4->5; + cn | vn | to_char | pn | to_char +----+----+-------------------+-----+------------------- + 2 | 40 | .0000000 | 100 | 2.0000000 + 1 | 10 | -349900.0000000 | 200 | 1.0000000 + 3 | 40 | -466533.3333333 | 200 | 2.0000000 + 1 | 20 | -349900.0000000 | 100 | 1.0000000 + 1 | 30 | -559840.0000000 | 300 | 1.0000000 + 1 | 50 | -816433.3333333 | 400 | 2.0000000 + 2 | 50 | -999714.2857143 | 400 | 1.0000000 + 1 | 30 | -1217450.0000000 | 500 | 1.0000000 + 3 | 30 | -1386800.0000000 | 500 | 2.0000000 + 3 | 30 | -1590020.0000000 | 600 | 1.0000000 + 4 | 40 | -1827963.6363636 | 700 | 1.0000000 + 4 | 40 | -2085200.0000000 | 800 | 1.0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 4->7; + qty | vn | pn | cn | dt | qty | to_char +------+----+-----+----+------------+------+------------------- + 1100 | 40 | 100 | 2 | 1401-01-01 | 1100 | 2409939.0000000 + 1 | 10 | 200 | 1 | 1401-03-01 | 1 | 2409939.0000000 + 1 | 40 | 200 | 3 | 1401-04-01 | 1 | 2409939.0000000 + 1 | 20 | 100 | 1 | 1401-05-01 | 1 | 2409939.0000000 + 1 | 30 | 300 | 1 | 1401-05-02 | 1 | 2409939.0000000 + 1 | 50 | 400 | 1 | 1401-06-01 | 1 | 2409939.0000000 + 1 | 50 | 400 | 2 | 1401-06-01 | 1 | 2409939.0000000 + 12 | 30 | 500 | 1 | 1401-06-01 | 12 | 2409939.0000000 + 12 | 30 | 500 | 3 | 1401-06-01 | 12 | 2409939.0000000 + 12 | 30 | 600 | 3 | 1401-06-01 | 12 | 2409939.0000000 + 1 | 40 | 700 | 4 | 1401-06-01 | 1 | 2409939.0000000 + 1 | 40 | 800 | 4 | 1401-06-01 | 1 | 2409939.0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty-ow_sale.pn),floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.pn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.cn order by ow_sale.cn desc), +win3 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,4,1->2; 6,3,1->5; 8,3->7; + pn | to_char | cn | vn | to_char | prc | to_char | dt +-----+-------------------+----+----+-------------------+------+-------------------+------------ + 100 | 1423952.0000000 | 2 | 40 | 1.0000000 | 2400 | .0000000 | 1401-01-01 + 200 | 1423952.0000000 | 1 | 10 | 1.0000000 | 0 | .0000000 | 1401-03-01 + 200 | 1423952.0000000 | 3 | 40 | 1.0000000 | 0 | .0000000 | 1401-04-01 + 100 | 1423952.0000000 | 1 | 20 | 1.0000000 | 0 | .0000000 | 1401-05-01 + 300 | 1423952.0000000 | 1 | 30 | 1.0000000 | 0 | .0000000 | 1401-05-02 + 400 | 1423952.0000000 | 1 | 50 | 1.0000000 | 0 | .0000000 | 1401-06-01 + 400 | 1423952.0000000 | 2 | 50 | 1.0000000 | 0 | .0000000 | 1401-06-01 + 500 | 1423952.0000000 | 1 | 30 | 1.0000000 | 5 | .0000000 | 1401-06-01 + 500 | 1423952.0000000 | 3 | 30 | 1.0000000 | 5 | .0000000 | 1401-06-01 + 600 | 1423952.0000000 | 3 | 30 | 1.0000000 | 5 | .0000000 | 1401-06-01 + 700 | 1423952.0000000 | 4 | 40 | 1.0000000 | 1 | .0000000 | 1401-06-01 + 800 | 1423952.0000000 | 4 | 40 | 1.0000000 | 1 | .0000000 | 1401-06-01 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.qty) preceding and floor(ow_sale.pn*ow_sale.cn) preceding ); -- mvd 1->2; + vn | to_char +----+------------------- + 40 | .0000000 + 10 | .0000000 + 40 | .0000000 + 20 | .0000000 + 30 | .0000000 + 50 | .0000000 + 50 | .0000000 + 30 | .0000000 + 30 | .0000000 + 30 | .0000000 + 40 | .0000000 + 40 | .0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn+ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 1 preceding and floor(ow_sale.vn) preceding ), +win2 as (order by ow_sale.pn asc); -- mvd 3->2; 5->4; + dt | to_char | cn | to_char | pn +------------+-------------------+----+-------------------+----- + 1401-01-01 | .0000000 | 2 | .1666667 | 100 + 1401-05-01 | .0000000 | 1 | .1666667 | 100 + 1401-03-01 | .0000000 | 1 | .3333333 | 200 + 1401-04-01 | .0000000 | 3 | .3333333 | 200 + 1401-05-02 | .0000000 | 1 | .4166667 | 300 + 1401-06-01 | .0000000 | 2 | .5833333 | 400 + 1401-06-01 | .0000000 | 1 | .5833333 | 400 + 1401-06-01 | .0000000 | 1 | .7500000 | 500 + 1401-06-01 | .0000000 | 3 | .7500000 | 500 + 1401-06-01 | .0000000 | 3 | .8333333 | 600 + 1401-06-01 | .0000000 | 4 | .9166667 | 700 + 1401-06-01 | .0000000 | 4 | 1.0000000 | 800 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.pn+ow_sale.prc) preceding and current row ); -- mvd 5->4; + cn | pn | qty | to_char | vn +----+-----+------+-------------------+---- + 2 | 100 | 1100 | .0000000 | 40 + 1 | 200 | 1 | 36000.0000000 | 10 + 3 | 200 | 1 | 24000.0000000 | 40 + 1 | 100 | 1 | 30000.0000000 | 20 + 1 | 300 | 1 | 28800.0000000 | 30 + 1 | 400 | 1 | 20000.0000000 | 50 + 2 | 400 | 1 | 13714.2857143 | 50 + 1 | 500 | 12 | 14981.2500000 | 30 + 3 | 500 | 12 | 15966.6666667 | 30 + 3 | 600 | 12 | 16755.0000000 | 30 + 4 | 700 | 1 | 15224.5454545 | 40 + 4 | 800 | 1 | 13949.1666667 | 40 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty-ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.cn*ow_sale.cn) preceding and current row ), +win2 as (partition by ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc); -- mvd 2->7; 9,5->8; 2->10; 9,5->11; 9,5->12; + pn | cn | cn | dt | vn | pn | to_char | to_char | prc | to_char | to_char | to_char +-----+----+----+------------+----+-----+-------------------+-------------------+------+-------------------+-------------------+------------------- + 100 | 2 | 2 | 1401-01-01 | 40 | 100 | .0000000 | .0000000 | 2400 | 2360.0000000 | 1.0000000 | 100.0000000 + 200 | 1 | 1 | 1401-03-01 | 10 | 200 | 587415.5000000 | 1.0000000 | 0 | -10.0000000 | 1.0000000 | 200.0000000 + 200 | 3 | 3 | 1401-04-01 | 40 | 200 | 794210.6666667 | 1.0000000 | 0 | -40.0000000 | 2.0000000 | 200.0000000 + 100 | 1 | 1 | 1401-05-01 | 20 | 100 | .0000000 | 1.0000000 | 0 | -40.0000000 | 3.0000000 | 200.0000000 + 300 | 1 | 1 | 1401-05-02 | 30 | 300 | .0000000 | 1.0000000 | 0 | -30.0000000 | 4.0000000 | 300.0000000 + 400 | 1 | 1 | 1401-06-01 | 50 | 400 | .0000000 | 1.0000000 | 0 | -50.0000000 | 5.0000000 | 400.0000000 + 400 | 2 | 2 | 1401-06-01 | 50 | 400 | .0000000 | 1.0000000 | 0 | -50.0000000 | 6.0000000 | 400.0000000 + 500 | 1 | 1 | 1401-06-01 | 30 | 500 | 170.5000000 | .0000000 | 5 | -50.0000000 | 1.0000000 | 500.0000000 + 500 | 3 | 3 | 1401-06-01 | 30 | 500 | 1061162.8888889 | .0000000 | 5 | -50.0000000 | 2.0000000 | 500.0000000 + 600 | 3 | 3 | 1401-06-01 | 30 | 600 | 1072427.6000000 | .0000000 | 5 | -50.0000000 | 3.0000000 | 600.0000000 + 700 | 4 | 4 | 1401-06-01 | 40 | 700 | 1084797.2727273 | .0000000 | 1 | -50.0000000 | 1.0000000 | 700.0000000 + 800 | 4 | 4 | 1401-06-01 | 40 | 800 | 1095105.3333333 | 1.0000000 | 1 | -50.0000000 | 2.0000000 | 800.0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty-ow_sale.cn),floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.cn asc rows between floor(ow_sale.prc*ow_sale.pn) preceding and floor(ow_sale.cn+ow_sale.pn) following ); -- mvd 4->3; + vn | vn | to_char | cn +----+----+-------------------+---- + 40 | 40 | 12443.3333333 | 2 + 10 | 10 | -345.4545455 | 1 + 40 | 40 | -440.0000000 | 3 + 20 | 20 | -404.4444444 | 1 + 30 | 30 | -490.0000000 | 1 + 50 | 50 | -537.1428571 | 1 + 50 | 50 | -453.3333333 | 2 + 30 | 30 | 12443.3333333 | 1 + 30 | 30 | 12443.3333333 | 3 + 30 | 30 | 12443.3333333 | 3 + 40 | 40 | 12443.3333333 | 4 + 40 | 40 | 12443.3333333 | 4 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc+ow_sale.qty),floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc rows between floor(ow_sale.qty/ow_sale.pn) preceding and floor(ow_sale.pn) following ), +win2 as (order by ow_sale.vn desc); -- mvd 3,1->2; 5->4; + pn | to_char | cn | to_char | vn +-----+-------------------+----+-------------------+---- + 400 | .0000000 | 2 | 1.0000000 | 50 + 400 | .0000000 | 1 | 1.0000000 | 50 + 800 | .0000000 | 4 | 2.0000000 | 40 + 200 | .0000000 | 3 | 2.0000000 | 40 + 700 | .0000000 | 4 | 2.0000000 | 40 + 100 | .0000000 | 2 | 2.0000000 | 40 + 500 | .0000000 | 1 | 3.0000000 | 30 + 500 | .0000000 | 3 | 3.0000000 | 30 + 600 | .0000000 | 3 | 3.0000000 | 30 + 300 | .0000000 | 1 | 3.0000000 | 30 + 100 | .0000000 | 1 | 4.0000000 | 20 + 200 | .0000000 | 1 | 5.0000000 | 10 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between floor(ow_sale.cn) preceding and unbounded following ); -- mvd 2->5; + vn | cn | dt | cn | to_char +----+----+------------+----+------------------- + 40 | 2 | 1401-01-01 | 2 | -445.5000000 + 10 | 1 | 1401-03-01 | 1 | -445.5000000 + 40 | 3 | 1401-04-01 | 3 | -445.5000000 + 20 | 1 | 1401-05-01 | 1 | -18.1000000 + 30 | 1 | 1401-05-02 | 1 | -13.6666667 + 50 | 1 | 1401-06-01 | 1 | 5.1250000 + 50 | 2 | 1401-06-01 | 2 | 5.1250000 + 30 | 1 | 1401-06-01 | 1 | -11.8333333 + 30 | 3 | 1401-06-01 | 3 | 13.5714286 + 30 | 3 | 1401-06-01 | 3 | -11.8333333 + 40 | 4 | 1401-06-01 | 4 | -11.8333333 + 40 | 4 | 1401-06-01 | 4 | -28.0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn asc rows between floor(ow_sale.pn+ow_sale.vn) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.cn,ow_sale.prc order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn asc rows between floor(ow_sale.pn+ow_sale.vn) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn asc rows between floor(ow_sale.pn+ow_sale.vn) preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.prc order by ow_sale.vn desc), +win3 as (partition by ow_sale.prc,ow_sale.dt order by ow_sale.pn asc); -- mvd 2,5,6->4; 2,5,6->7; 9,2,5->8; 9,2,5->10; 2,5,6->11; 9,1,6->12; + dt | cn | cn | to_char | vn | pn | to_char | to_char | prc | to_char | to_char | to_char +------------+----+----+-------------------+----+-----+-------------------+-------------------+------+-------------------+-------------------+------------------- + 1401-01-01 | 2 | 2 | 18000.0000000 | 40 | 100 | 100.0000000 | 1.0000000 | 2400 | .0000000 | 100.0000000 | 1.0000000 + 1401-03-01 | 1 | 1 | 18000.0000000 | 10 | 200 | 100.0000000 | 4.0000000 | 0 | 1.0000000 | 100.0000000 | 1.0000000 + 1401-04-01 | 3 | 3 | 18000.0000000 | 40 | 200 | 100.0000000 | 1.0000000 | 0 | .0000000 | 100.0000000 | 1.0000000 + 1401-05-01 | 1 | 1 | 18000.0000000 | 20 | 100 | 100.0000000 | 3.0000000 | 0 | .6666667 | 100.0000000 | 1.0000000 + 1401-05-02 | 1 | 1 | 18000.0000000 | 30 | 300 | 100.0000000 | 2.0000000 | 0 | .3333333 | 100.0000000 | 1.0000000 + 1401-06-01 | 1 | 1 | 18000.0000000 | 50 | 400 | 100.0000000 | 1.0000000 | 0 | .0000000 | 100.0000000 | 1.0000000 + 1401-06-01 | 2 | 2 | 18000.0000000 | 50 | 400 | 100.0000000 | 1.0000000 | 0 | .0000000 | 100.0000000 | 1.0000000 + 1401-06-01 | 1 | 1 | 18000.0000000 | 30 | 500 | 100.0000000 | 1.0000000 | 5 | .0000000 | 100.0000000 | 1.0000000 + 1401-06-01 | 3 | 3 | 18000.0000000 | 30 | 500 | 100.0000000 | 1.0000000 | 5 | .0000000 | 100.0000000 | 1.0000000 + 1401-06-01 | 3 | 3 | 18000.0000000 | 30 | 600 | 100.0000000 | 1.0000000 | 5 | .0000000 | 100.0000000 | 2.0000000 + 1401-06-01 | 4 | 4 | 18000.0000000 | 40 | 700 | 100.0000000 | 1.0000000 | 1 | .0000000 | 100.0000000 | 1.0000000 + 1401-06-01 | 4 | 4 | 18000.0000000 | 40 | 800 | 100.0000000 | 1.0000000 | 1 | .0000000 | 100.0000000 | 2.0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc rows between current row and current row ); -- mvd 1->6; + cn | qty | pn | pn | cn | to_char +----+------+-----+-----+----+------------------- + 2 | 1100 | 100 | 100 | 2 | .0000000 + 1 | 1 | 200 | 200 | 1 | .0000000 + 3 | 1 | 200 | 200 | 3 | .0000000 + 1 | 1 | 100 | 100 | 1 | .0000000 + 1 | 1 | 300 | 300 | 1 | .0000000 + 1 | 1 | 400 | 400 | 1 | .0000000 + 2 | 1 | 400 | 400 | 2 | .0000000 + 1 | 12 | 500 | 500 | 1 | .0000000 + 3 | 12 | 500 | 500 | 3 | .0000000 + 3 | 12 | 600 | 600 | 3 | .0000000 + 4 | 1 | 700 | 700 | 4 | .0000000 + 4 | 1 | 800 | 800 | 4 | .0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows between current row and current row ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.cn asc), +win3 as (order by ow_sale.pn desc); -- mvd 6,8->7; 10,11,8->9; 10,11,8->12; 10,11,8->13; 8->14; + qty | qty | prc | qty | qty | vn | to_char | pn | to_char | cn | dt | to_char | to_char | to_char +------+------+------+------+------+----+-------------------+-----+-------------------+----+------------+-------------------+-------------------+------------------- + 1 | 1 | 1 | 1 | 1 | 40 | .0000000 | 800 | 1.0000000 | 4 | 1401-06-01 | 1.0000000 | 1.0000000 | .0000000 + 1 | 1 | 1 | 1 | 1 | 40 | .0000000 | 700 | 1.0000000 | 4 | 1401-06-01 | 1.0000000 | 1.0000000 | .0909091 + 12 | 12 | 5 | 12 | 12 | 30 | .0000000 | 600 | 1.0000000 | 3 | 1401-06-01 | 1.0000000 | 1.0000000 | .1818182 + 12 | 12 | 5 | 12 | 12 | 30 | .0000000 | 500 | 1.0000000 | 1 | 1401-06-01 | 1.0000000 | 1.0000000 | .2727273 + 12 | 12 | 5 | 12 | 12 | 30 | .0000000 | 500 | 1.0000000 | 3 | 1401-06-01 | 1.0000000 | 1.0000000 | .2727273 + 1 | 1 | 0 | 1 | 1 | 50 | .0000000 | 400 | 1.0000000 | 2 | 1401-06-01 | 1.0000000 | 1.0000000 | .4545455 + 1 | 1 | 0 | 1 | 1 | 50 | .0000000 | 400 | 1.0000000 | 1 | 1401-06-01 | 1.0000000 | 1.0000000 | .4545455 + 1 | 1 | 0 | 1 | 1 | 30 | .0000000 | 300 | 1.0000000 | 1 | 1401-05-02 | 1.0000000 | 1.0000000 | .6363636 + 1 | 1 | 0 | 1 | 1 | 40 | .0000000 | 200 | 1.0000000 | 3 | 1401-04-01 | 1.0000000 | 1.0000000 | .7272727 + 1 | 1 | 0 | 1 | 1 | 10 | .0000000 | 200 | 1.0000000 | 1 | 1401-03-01 | 1.0000000 | 1.0000000 | .7272727 + 1100 | 1100 | 2400 | 1100 | 1100 | 40 | .0000000 | 100 | 1.0000000 | 2 | 1401-01-01 | 1.0000000 | 1.0000000 | .9090909 + 1 | 1 | 0 | 1 | 1 | 20 | .0000000 | 100 | 1.0000000 | 1 | 1401-05-01 | 1.0000000 | 1.0000000 | .9090909 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn+ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.prc order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty+ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between current row and 1 following ), +win2 as (partition by ow_sale.prc order by ow_sale.pn desc), +win3 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn asc); -- mvd 4->5; 7,8->6; 4->9; 7,8->10; 7,8->11; 4,2->12; + vn | qty | vn | cn | to_char | to_char | prc | pn | to_char | to_char | to_char | to_char +----+------+----+----+-------------------+-------------------+------+-----+-------------------+-------------------+-------------------+------------------- + 40 | 1100 | 40 | 2 | -100.0000000 | 1.0000000 | 2400 | 100 | 100.0000000 | 2.0000000 | 1.0000000 | .0000000 + 10 | 1 | 10 | 1 | .0000000 | 3.0000000 | 0 | 200 | 200.0000000 | 3.0000000 | .8333333 | .0000000 + 40 | 1 | 40 | 3 | 200.0000000 | 3.0000000 | 0 | 200 | 100.0000000 | 3.0000000 | .8333333 | .0000000 + 20 | 1 | 20 | 1 | .0000000 | 4.0000000 | 0 | 100 | 100.0000000 | 3.0000000 | 1.0000000 | .0000000 + 30 | 1 | 30 | 1 | .0000000 | 2.0000000 | 0 | 300 | 300.0000000 | 2.0000000 | .5000000 | .0000000 + 50 | 1 | 50 | 1 | .0000000 | 1.0000000 | 0 | 400 | 400.0000000 | 2.0000000 | .3333333 | .0000000 + 50 | 1 | 50 | 2 | -100.0000000 | 1.0000000 | 0 | 400 | 400.0000000 | 2.0000000 | .3333333 | .0000000 + 30 | 12 | 30 | 1 | .0000000 | 2.0000000 | 5 | 500 | 500.0000000 | 3.0000000 | 1.0000000 | .0000000 + 30 | 12 | 30 | 3 | .0000000 | 2.0000000 | 5 | 500 | 500.0000000 | 3.0000000 | 1.0000000 | .0000000 + 30 | 12 | 30 | 3 | 100.0000000 | 1.0000000 | 5 | 600 | 600.0000000 | 3.0000000 | .3333333 | .0000000 + 40 | 1 | 40 | 4 | .0000000 | 2.0000000 | 1 | 700 | 700.0000000 | 4.0000000 | 1.0000000 | .0000000 + 40 | 1 | 40 | 4 | .0000000 | 1.0000000 | 1 | 800 | 800.0000000 | 4.0000000 | .5000000 | .0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty*ow_sale.vn),floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.vn desc rows between current row and unbounded following ); -- mvd 3,1->2; + vn | to_char | cn +----+-------------------+---- + 40 | 44342720.0000000 | 2 + 10 | 5654.5454545 | 1 + 40 | 2325.0000000 | 3 + 20 | 2398.8888889 | 1 + 30 | -316.2500000 | 1 + 50 | -2060.0000000 | 1 + 50 | -1041.6666667 | 2 + 30 | 384.0000000 | 1 + 30 | 320.0000000 | 3 + 30 | 213.3333333 | 3 + 40 | .0000000 | 4 + 40 | .0000000 | 4 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ), +win2 as (order by ow_sale.pn desc); -- mvd 1->2; 1->3; 1->4; + pn | to_char | to_char | to_char +-----+-------------------+-------------------+------------------- + 800 | .0000000 | .0000000 | 1.0000000 + 700 | .0000000 | .0909091 | 2.0000000 + 600 | 107.3333333 | .1818182 | 3.0000000 + 500 | 522.0000000 | .2727273 | 5.0000000 + 500 | 211.0000000 | .2727273 | 5.0000000 + 400 | 699.8333333 | .4545455 | 7.0000000 + 400 | 979.2857143 | .4545455 | 7.0000000 + 300 | 1326.3750000 | .6363636 | 8.0000000 + 200 | 1648.9000000 | .7272727 | 10.0000000 + 200 | 1940.4545455 | .7272727 | 10.0000000 + 100 | 2177.6666667 | .9090909 | 12.0000000 + 100 | 1840.7777778 | .9090909 | 12.0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc+ow_sale.prc),floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 3 following and floor(ow_sale.prc) following ); -- mvd 2->3; + qty | cn | to_char +------+----+------------------- + 1100 | 2 | 100.2222222 + 1 | 1 | .0000000 + 1 | 3 | .0000000 + 1 | 1 | .0000000 + 1 | 1 | .0000000 + 1 | 1 | .0000000 + 1 | 2 | .0000000 + 12 | 1 | .0000000 + 12 | 3 | .0000000 + 12 | 3 | .0000000 + 1 | 4 | .0000000 + 1 | 4 | .0000000 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc/ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc*ow_sale.vn) as int),cast (floor(ow_sale.vn+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between 4 following and 3 following ), +win2 as (partition by ow_sale.prc,ow_sale.prc order by ow_sale.vn desc), +win3 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 3->2; 5,1->4; 5,1->6; 8,9,1,10->7; + vn | to_char | pn | to_char | prc | to_char | to_char | cn | dt | qty +----+-------------------+-----+-------------------+------+-------------------+-------------------+----+------------+------ + 40 | .0000000 | 100 | .0000000 | 2400 | .0000000 | .0000000 | 2 | 1401-01-01 | 1100 + 10 | .0000000 | 200 | 1.0000000 | 0 | .0000000 | .0000000 | 1 | 1401-03-01 | 1 + 40 | .0000000 | 200 | .4000000 | 0 | .0000000 | .0000000 | 3 | 1401-04-01 | 1 + 20 | .0000000 | 100 | .8000000 | 0 | .0000000 | .0000000 | 1 | 1401-05-01 | 1 + 30 | .0000000 | 300 | .6000000 | 0 | .0000000 | .0000000 | 1 | 1401-05-02 | 1 + 50 | .0000000 | 400 | .0000000 | 0 | .0000000 | .0000000 | 1 | 1401-06-01 | 1 + 50 | .0000000 | 400 | .0000000 | 0 | .0000000 | .0000000 | 2 | 1401-06-01 | 1 + 30 | .0000000 | 500 | .0000000 | 5 | .0000000 | .0000000 | 1 | 1401-06-01 | 12 + 30 | .0000000 | 500 | .0000000 | 5 | .0000000 | .0000000 | 3 | 1401-06-01 | 12 + 30 | .0000000 | 600 | .0000000 | 5 | .0000000 | .0000000 | 3 | 1401-06-01 | 12 + 40 | .0000000 | 700 | .0000000 | 1 | .0000000 | .0000000 | 4 | 1401-06-01 | 1 + 40 | .0000000 | 800 | .0000000 | 1 | .0000000 | .0000000 | 4 | 1401-06-01 | 1 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty+ow_sale.prc),floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between 6 following and unbounded following ); -- mvd 3->2; + vn | to_char | pn +----+-------------------+----- + 40 | -122.3333333 | 100 + 10 | -174.0000000 | 200 + 40 | -105.0000000 | 200 + 20 | -70.0000000 | 100 + 30 | .0000000 | 300 + 50 | .0000000 | 400 + 50 | .0000000 | 400 + 30 | .0000000 | 500 + 30 | .0000000 | 500 + 30 | .0000000 | 600 + 40 | .0000000 | 700 + 40 | .0000000 | 800 +(12 rows) + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc+ow_sale.pn),floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc rows between 3 following and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc), +win3 as (order by ow_sale.cn asc); -- mvd 4,5->3; 7,4,5->6; 7->8; + dt | prc | to_char | vn | pn | to_char | cn | to_char +------------+------+-------------------+----+-----+-------------------+----+------------------- + 1401-06-01 | 0 | -21560.0000000 | 50 | 400 | -49.0000000 | 1 | 1.0000000 + 1401-03-01 | 0 | 22953.7500000 | 10 | 200 | -9.0000000 | 1 | 1.0000000 + 1401-06-01 | 5 | .0000000 | 30 | 500 | .0000000 | 1 | 1.0000000 + 1401-05-01 | 0 | -8338.3333333 | 20 | 100 | -19.0000000 | 1 | 1.0000000 + 1401-05-02 | 0 | -28072.0000000 | 30 | 300 | -29.0000000 | 1 | 1.0000000 + 1401-01-01 | 2400 | 48106.6666667 | 40 | 100 | .0000000 | 2 | 6.0000000 + 1401-06-01 | 0 | -10706.6666667 | 50 | 400 | -48.0000000 | 2 | 6.0000000 + 1401-04-01 | 0 | 5757.1428571 | 40 | 200 | -37.0000000 | 3 | 8.0000000 + 1401-06-01 | 5 | .0000000 | 30 | 500 | .0000000 | 3 | 8.0000000 + 1401-06-01 | 5 | .0000000 | 30 | 600 | .0000000 | 3 | 8.0000000 + 1401-06-01 | 1 | .0000000 | 40 | 700 | .0000000 | 4 | 11.0000000 + 1401-06-01 | 1 | .0000000 | 40 | 800 | .0000000 | 4 | 11.0000000 +(12 rows) + +-- REGR_SXY() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.pn order by ow_sale.cn asc,ow_sale.cn desc,ow_sale.cn asc); -- mvd 6,7,2,3,1->5; + pn | qty | vn | qty | to_char | prc | cn +-----+------+----+------+-------------------+------+---- + 200 | 1 | 10 | 1 | .0000000 | 0 | 1 + 100 | 1 | 20 | 1 | .0000000 | 0 | 1 + 500 | 12 | 30 | 12 | .0000000 | 5 | 1 + 500 | 12 | 30 | 12 | .0000000 | 5 | 3 + 200 | 1 | 40 | 1 | .0000000 | 0 | 3 + 800 | 1 | 40 | 1 | .0000000 | 1 | 4 + 300 | 1 | 30 | 1 | .0000000 | 0 | 1 + 600 | 12 | 30 | 12 | .0000000 | 5 | 3 + 700 | 1 | 40 | 1 | .0000000 | 1 | 4 + 100 | 1100 | 40 | 1100 | .0000000 | 2400 | 2 + 400 | 1 | 50 | 1 | .0000000 | 0 | 1 + 400 | 1 | 50 | 1 | .0000000 | 0 | 2 +(12 rows) + +-- REGR_SXY() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn-ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn/ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn-ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.prc order by ow_sale.vn asc,ow_sale.cn desc), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,2,1,5->3; 2->6; 2,1->7; + vn | cn | to_char | prc | pn | to_char | to_char +----+----+-------------------+------+-----+-------------------+------------------- + 40 | 2 | .0000000 | 2400 | 100 | .0000000 | 2400.0000000 + 10 | 1 | .0000000 | 0 | 200 | .0000000 | .0000000 + 40 | 3 | .0000000 | 0 | 200 | .0000000 | .0000000 + 20 | 1 | .0000000 | 0 | 100 | .0000000 | .0000000 + 30 | 1 | .0000000 | 0 | 300 | .0000000 | .0000000 + 50 | 1 | .0000000 | 0 | 400 | .0000000 | .0000000 + 50 | 2 | .0000000 | 0 | 400 | .0000000 | .0000000 + 30 | 1 | .0000000 | 5 | 500 | .0000000 | 5.0000000 + 30 | 3 | .0000000 | 5 | 500 | .0000000 | 5.0000000 + 30 | 3 | .0000000 | 5 | 600 | .0000000 | 5.0000000 + 40 | 4 | .0000000 | 1 | 700 | .0000000 | 1.0000000 + 40 | 4 | .0000000 | 1 | 800 | .0000000 | 1.0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc+ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.pn asc range unbounded preceding ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc); -- mvd 4,2->3; 6,1,4->5; 4,2->7; 6,1,4->8; 6,1,4->9; 6,1,4->10; + cn | pn | to_char | vn | to_char | dt | to_char | to_char | to_char | to_char +----+-----+-------------------+----+-------------------+------------+-------------------+-------------------+-------------------+------------------- + 1 | 200 | .0000000 | 10 | 1.0000000 | 1401-03-01 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 100 | .0000000 | 20 | 1.0000000 | 1401-05-01 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 300 | .0000000 | 30 | 1.0000000 | 1401-05-02 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 3 | 500 | .0000000 | 30 | 1.0000000 | 1401-06-01 | 1.0000000 | 17.0000000 | 2.0000000 | 1.0000000 + 1 | 500 | .0000000 | 30 | 1.0000000 | 1401-06-01 | 1.0000000 | 17.0000000 | 1.0000000 | 1.0000000 + 3 | 600 | .0000000 | 30 | 1.0000000 | 1401-06-01 | 1.0000000 | 17.0000000 | 1.0000000 | 1.0000000 + 2 | 100 | .0000000 | 40 | 1.0000000 | 1401-01-01 | 2402.0000000 | 3500.0000000 | 1.0000000 | 1.0000000 + 3 | 200 | .0000000 | 40 | 1.0000000 | 1401-04-01 | 3.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 4 | 700 | .0000000 | 40 | 1.0000000 | 1401-06-01 | 3.0000000 | 2.0000000 | 2.0000000 | 1.0000000 + 4 | 800 | .0000000 | 40 | 1.0000000 | 1401-06-01 | 3.0000000 | 2.0000000 | 1.0000000 | 1.0000000 + 2 | 400 | .0000000 | 50 | 1.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 400 | .0000000 | 50 | 1.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.qty order by ow_sale.cn desc range floor(ow_sale.cn) preceding ); -- mvd 2,4,5->3; + vn | cn | to_char | qty | pn +----+----+-------------------+------+----- + 30 | 1 | .0000000 | 1 | 300 + 50 | 1 | .0000000 | 1 | 400 + 30 | 3 | .0000000 | 12 | 600 + 40 | 4 | .0000000 | 1 | 700 + 20 | 1 | .0000000 | 1 | 100 + 40 | 2 | .0000000 | 1100 | 100 + 10 | 1 | .0000000 | 1 | 200 + 40 | 3 | .0000000 | 1 | 200 + 50 | 2 | .0000000 | 1 | 400 + 30 | 1 | .0000000 | 12 | 500 + 30 | 3 | .0000000 | 12 | 500 + 40 | 4 | .0000000 | 1 | 800 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.cn order by ow_sale.pn desc range current row ); -- mvd 1,3,4->2; + cn | to_char | dt | pn +----+-------------------+------------+----- + 1 | .0000000 | 1401-05-01 | 100 + 3 | .0000000 | 1401-04-01 | 200 + 1 | .0000000 | 1401-05-02 | 300 + 1 | .0000000 | 1401-06-01 | 400 + 1 | .0000000 | 1401-06-01 | 500 + 3 | .0000000 | 1401-06-01 | 500 + 4 | .0000000 | 1401-06-01 | 700 + 2 | .0000000 | 1401-01-01 | 100 + 1 | .0000000 | 1401-03-01 | 200 + 2 | .0000000 | 1401-06-01 | 400 + 3 | .0000000 | 1401-06-01 | 600 + 4 | .0000000 | 1401-06-01 | 800 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.vn asc range current row ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.pn desc); -- mvd 6,4,2,1->5; 6->7; 1->8; 6->9; + pn | qty | dt | vn | to_char | cn | to_char | to_char | to_char +-----+------+------------+----+-------------------+----+-------------------+-------------------+------------------- + 400 | 1 | 1401-06-01 | 50 | .0000000 | 1 | 1.0000000 | 5.0000000 | 1.0000000 + 100 | 1 | 1401-05-01 | 20 | .0000000 | 1 | 2.0000000 | 8.0000000 | 2.0000000 + 200 | 1 | 1401-03-01 | 10 | .0000000 | 1 | 3.0000000 | 7.0000000 | 3.0000000 + 500 | 12 | 1401-06-01 | 30 | .0000000 | 1 | 4.0000000 | 4.0000000 | 4.0000000 + 300 | 1 | 1401-05-02 | 30 | .0000000 | 1 | 5.0000000 | 6.0000000 | 5.0000000 + 100 | 1100 | 1401-01-01 | 40 | .0000000 | 2 | 6.0000000 | 8.0000000 | 6.0000000 + 400 | 1 | 1401-06-01 | 50 | .0000000 | 2 | 7.0000000 | 5.0000000 | 7.0000000 + 500 | 12 | 1401-06-01 | 30 | .0000000 | 3 | 8.0000000 | 4.0000000 | 8.0000000 + 600 | 12 | 1401-06-01 | 30 | .0000000 | 3 | 9.0000000 | 3.0000000 | 9.0000000 + 200 | 1 | 1401-04-01 | 40 | .0000000 | 3 | 10.0000000 | 7.0000000 | 10.0000000 + 700 | 1 | 1401-06-01 | 40 | .0000000 | 4 | 11.0000000 | 2.0000000 | 11.0000000 + 800 | 1 | 1401-06-01 | 40 | .0000000 | 4 | 12.0000000 | 1.0000000 | 12.0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.prc order by ow_sale.pn asc range between unbounded preceding and floor(ow_sale.qty) preceding ); -- mvd 5,1,6,7->4; + cn | qty | vn | to_char | prc | dt | pn +----+------+----+-------------------+------+------------+----- + 1 | 1 | 20 | .0000000 | 0 | 1401-05-01 | 100 + 3 | 1 | 40 | .0000000 | 0 | 1401-04-01 | 200 + 1 | 1 | 30 | .0000000 | 0 | 1401-05-02 | 300 + 1 | 1 | 50 | .0000000 | 0 | 1401-06-01 | 400 + 1 | 12 | 30 | .0000000 | 5 | 1401-06-01 | 500 + 3 | 12 | 30 | .0000000 | 5 | 1401-06-01 | 500 + 4 | 1 | 40 | .0000000 | 1 | 1401-06-01 | 800 + 2 | 1100 | 40 | .0000000 | 2400 | 1401-01-01 | 100 + 1 | 1 | 10 | .0000000 | 0 | 1401-03-01 | 200 + 2 | 1 | 50 | .0000000 | 0 | 1401-06-01 | 400 + 3 | 12 | 30 | .0000000 | 5 | 1401-06-01 | 600 + 4 | 1 | 40 | .0000000 | 1 | 1401-06-01 | 700 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn*ow_sale.pn),floor(ow_sale.qty*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.vn*ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.vn order by ow_sale.cn desc range between unbounded preceding and 4 preceding ), +win2 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.prc order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc), +win4 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 2,5,1,6->4; 8,2,9,6->7; 1->10; 2,5,1,6->11; 1->12; + vn | cn | vn | to_char | dt | pn | to_char | prc | qty | to_char | to_char | to_char +----+----+----+-------------------+------------+-----+-------------------+------+------+-------------------+-------------------+------------------- + 40 | 2 | 40 | .0000000 | 1401-01-01 | 100 | 1.0000000 | 2400 | 1100 | .0000000 | .0000000 | .0000000 + 10 | 1 | 10 | .0000000 | 1401-03-01 | 200 | 3.0000000 | 0 | 1 | 10.0000000 | .0000000 | 1.0000000 + 40 | 3 | 40 | .0000000 | 1401-04-01 | 200 | 1.0000000 | 0 | 1 | 40.0000000 | .0000000 | 1.0000000 + 20 | 1 | 20 | .0000000 | 1401-05-01 | 100 | 4.0000000 | 0 | 1 | 20.0000000 | .0000000 | 1.0000000 + 30 | 1 | 30 | .0000000 | 1401-05-02 | 300 | 2.0000000 | 0 | 1 | 30.0000000 | .0000000 | 1.0000000 + 50 | 1 | 50 | .0000000 | 1401-06-01 | 400 | 1.0000000 | 0 | 1 | 50.0000000 | .0000000 | 1.0000000 + 50 | 2 | 50 | .0000000 | 1401-06-01 | 400 | 1.0000000 | 0 | 1 | 50.0000000 | .0000000 | 1.0000000 + 30 | 1 | 30 | .0000000 | 1401-06-01 | 500 | 1.0000000 | 5 | 12 | .0000000 | .0000000 | .0000000 + 30 | 3 | 30 | .0000000 | 1401-06-01 | 500 | 2.0000000 | 5 | 12 | .0000000 | .0000000 | .0000000 + 30 | 3 | 30 | .0000000 | 1401-06-01 | 600 | 1.0000000 | 5 | 12 | .0000000 | .0000000 | .0000000 + 40 | 4 | 40 | .0000000 | 1401-06-01 | 700 | 2.0000000 | 1 | 1 | 40.0000000 | .0000000 | .0000000 + 40 | 4 | 40 | .0000000 | 1401-06-01 | 800 | 1.0000000 | 1 | 1 | .0000000 | .0000000 | .0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty-ow_sale.qty),floor(ow_sale.prc*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.qty order by ow_sale.pn desc range between unbounded preceding and current row ); -- mvd 6,7,1,3->5; + vn | dt | pn | vn | to_char | cn | qty +----+------------+-----+----+-------------------+----+------ + 10 | 1401-03-01 | 200 | 10 | .0000000 | 1 | 1 + 20 | 1401-05-01 | 100 | 20 | .0000000 | 1 | 1 + 30 | 1401-06-01 | 600 | 30 | .0000000 | 3 | 12 + 40 | 1401-04-01 | 200 | 40 | .0000000 | 3 | 1 + 40 | 1401-06-01 | 800 | 40 | .0000000 | 4 | 1 + 50 | 1401-06-01 | 400 | 50 | .0000000 | 2 | 1 + 30 | 1401-05-02 | 300 | 30 | .0000000 | 1 | 1 + 30 | 1401-06-01 | 500 | 30 | .0000000 | 1 | 12 + 30 | 1401-06-01 | 500 | 30 | .0000000 | 3 | 12 + 40 | 1401-01-01 | 100 | 40 | .0000000 | 2 | 1100 + 40 | 1401-06-01 | 700 | 40 | .0000000 | 4 | 1 + 50 | 1401-06-01 | 400 | 50 | .0000000 | 1 | 1 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty),floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.prc order by ow_sale.vn asc range between unbounded preceding and 2 following ); -- mvd 2,5,6,3->4; + dt | prc | pn | to_char | cn | vn +------------+------+-----+-------------------+----+---- + 1401-01-01 | 2400 | 100 | .0000000 | 2 | 40 + 1401-05-02 | 0 | 300 | .0000000 | 1 | 30 + 1401-06-01 | 0 | 400 | .0000000 | 1 | 50 + 1401-06-01 | 5 | 500 | .0000000 | 1 | 30 + 1401-06-01 | 5 | 500 | .0000000 | 3 | 30 + 1401-06-01 | 1 | 800 | .0000000 | 4 | 40 + 1401-05-01 | 0 | 100 | .0000000 | 1 | 20 + 1401-03-01 | 0 | 200 | .0000000 | 1 | 10 + 1401-04-01 | 0 | 200 | .0000000 | 3 | 40 + 1401-06-01 | 0 | 400 | .0000000 | 2 | 50 + 1401-06-01 | 5 | 600 | .0000000 | 3 | 30 + 1401-06-01 | 1 | 700 | .0000000 | 4 | 40 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn+ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.prc) as int),cast (floor(ow_sale.qty/ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.prc order by ow_sale.cn desc range between unbounded preceding and 2 following ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 6,3,2,1->5; 1->7; 1->8; 1->9; 6,3,2,4,1->10; 2->11; + pn | vn | cn | qty | to_char | prc | to_char | to_char | to_char | to_char | to_char +-----+----+----+------+-------------------+------+-------------------+-------------------+-------------------+-------------------+------------------- + 100 | 40 | 2 | 1100 | .0000000 | 2400 | .0000000 | 100.0000000 | .0833333 | .0000000 | .0000000 + 200 | 10 | 1 | 1 | .0000000 | 0 | 800.0000000 | 200.0000000 | .1666667 | 10.0000000 | .0000000 + 200 | 40 | 3 | 1 | .0000000 | 0 | .0000000 | 200.0000000 | .2500000 | 40.0000000 | .0000000 + 100 | 20 | 1 | 1 | .0000000 | 0 | .0000000 | 200.0000000 | .3333333 | 20.0000000 | .0000000 + 300 | 30 | 1 | 1 | .0000000 | 0 | .0000000 | 300.0000000 | .4166667 | 30.0000000 | .0000000 + 400 | 50 | 1 | 1 | .0000000 | 0 | .0000000 | 400.0000000 | .5000000 | 50.0000000 | .0000000 + 400 | 50 | 2 | 1 | .0000000 | 0 | .0000000 | 400.0000000 | .5833333 | 50.0000000 | .0000000 + 500 | 30 | 1 | 12 | .0000000 | 5 | .0000000 | 500.0000000 | .6666667 | .0000000 | .0000000 + 500 | 30 | 3 | 12 | .0000000 | 5 | .0000000 | 500.0000000 | .7500000 | .0000000 | .0000000 + 600 | 30 | 3 | 12 | .0000000 | 5 | .0000000 | 600.0000000 | .8333333 | .0000000 | .0000000 + 700 | 40 | 4 | 1 | .0000000 | 1 | .0000000 | 700.0000000 | .9166667 | .0000000 | .0000000 + 800 | 40 | 4 | 1 | .0000000 | 1 | .0000000 | 800.0000000 | 1.0000000 | .0000000 | .0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.vn order by ow_sale.cn desc range between unbounded preceding and unbounded following ); -- mvd 3,1,4,5,6->2; + cn | to_char | prc | qty | vn | pn +----+-------------------+------+------+----+----- + 1 | .0000000 | 0 | 1 | 10 | 200 + 1 | .0000000 | 0 | 1 | 20 | 100 + 3 | .0000000 | 5 | 12 | 30 | 600 + 3 | .0000000 | 0 | 1 | 40 | 200 + 4 | .0000000 | 1 | 1 | 40 | 800 + 2 | .0000000 | 0 | 1 | 50 | 400 + 1 | .0000000 | 0 | 1 | 30 | 300 + 1 | .0000000 | 5 | 12 | 30 | 500 + 3 | .0000000 | 5 | 12 | 30 | 500 + 2 | .0000000 | 2400 | 1100 | 40 | 100 + 4 | .0000000 | 1 | 1 | 40 | 700 + 1 | .0000000 | 0 | 1 | 50 | 400 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.vn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.dt order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,4->2; 6,3,4->5; 8->7; + qty | to_char | dt | vn | to_char | prc | to_char | cn +------+-------------------+------------+----+-------------------+------+-------------------+---- + 1100 | .0000000 | 1401-01-01 | 40 | .0000000 | 2400 | .0000000 | 2 + 1 | .0000000 | 1401-03-01 | 10 | .0000000 | 0 | .0000000 | 1 + 1 | .0000000 | 1401-04-01 | 40 | .0000000 | 0 | .0000000 | 3 + 1 | .0000000 | 1401-05-01 | 20 | .0000000 | 0 | .0000000 | 1 + 1 | .0000000 | 1401-05-02 | 30 | .0000000 | 0 | .0000000 | 1 + 1 | 137171.4285714 | 1401-06-01 | 50 | .0000000 | 0 | .0000000 | 1 + 1 | 137171.4285714 | 1401-06-01 | 50 | .0000000 | 0 | .0000000 | 2 + 12 | 137171.4285714 | 1401-06-01 | 30 | .0000000 | 5 | .0000000 | 1 + 12 | 137171.4285714 | 1401-06-01 | 30 | .0000000 | 5 | .0000000 | 3 + 12 | 137171.4285714 | 1401-06-01 | 30 | .0000000 | 5 | .0000000 | 3 + 1 | 137171.4285714 | 1401-06-01 | 40 | .0000000 | 1 | .0000000 | 4 + 1 | 137171.4285714 | 1401-06-01 | 40 | .0000000 | 1 | .0000000 | 4 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.pn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.vn order by ow_sale.pn asc range between floor(ow_sale.pn/ow_sale.vn) preceding and floor(ow_sale.pn) preceding ); -- mvd 5,3,6,7,1->4; + pn | pn | cn | to_char | prc | qty | vn +-----+-----+----+-------------------+------+------+---- + 200 | 200 | 1 | .0000000 | 0 | 1 | 10 + 100 | 100 | 1 | .0000000 | 0 | 1 | 20 + 400 | 400 | 2 | .0000000 | 0 | 1 | 50 + 200 | 200 | 3 | .0000000 | 0 | 1 | 40 + 800 | 800 | 4 | .0000000 | 1 | 1 | 40 + 600 | 600 | 3 | .0000000 | 5 | 12 | 30 + 300 | 300 | 1 | .0000000 | 0 | 1 | 30 + 400 | 400 | 1 | .0000000 | 0 | 1 | 50 + 700 | 700 | 4 | .0000000 | 1 | 1 | 40 + 500 | 500 | 1 | .0000000 | 5 | 12 | 30 + 500 | 500 | 3 | .0000000 | 5 | 12 | 30 + 100 | 100 | 2 | .0000000 | 2400 | 1100 | 40 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.prc order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.dt order by ow_sale.cn asc range between floor(ow_sale.vn-ow_sale.vn) preceding and floor(ow_sale.vn) preceding ), +win2 as (partition by ow_sale.vn,ow_sale.prc order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 8,2,9,4,1->7; 8,2,9,4,1->10; 8,2,4->11; 8,2,4->12; 1->13; + pn | cn | qty | vn | pn | vn | to_char | prc | dt | to_char | to_char | to_char | to_char +-----+----+------+----+-----+----+-------------------+------+------------+-------------------+-------------------+-------------------+------------------- + 100 | 2 | 1100 | 40 | 100 | 40 | .0000000 | 2400 | 1401-01-01 | .0000000 | 1.0000000 | 1060.0000000 | .0000000 + 200 | 1 | 1 | 10 | 200 | 10 | .0000000 | 0 | 1401-03-01 | .0000000 | 1.0000000 | -9.0000000 | .0000000 + 200 | 3 | 1 | 40 | 200 | 40 | .0000000 | 0 | 1401-04-01 | .0000000 | 1.0000000 | -39.0000000 | .0000000 + 100 | 1 | 1 | 20 | 100 | 20 | .0000000 | 0 | 1401-05-01 | .0000000 | 1.0000000 | -19.0000000 | .0000000 + 300 | 1 | 1 | 30 | 300 | 30 | .0000000 | 0 | 1401-05-02 | .0000000 | 1.0000000 | -29.0000000 | .0000000 + 400 | 1 | 1 | 50 | 400 | 50 | .0000000 | 0 | 1401-06-01 | .0000000 | 2.0000000 | -49.0000000 | .0000000 + 400 | 2 | 1 | 50 | 400 | 50 | .0000000 | 0 | 1401-06-01 | .0000000 | 1.0000000 | -49.0000000 | .0000000 + 500 | 1 | 12 | 30 | 500 | 30 | .0000000 | 5 | 1401-06-01 | .0000000 | 2.0000000 | -18.0000000 | .0000000 + 500 | 3 | 12 | 30 | 500 | 30 | .0000000 | 5 | 1401-06-01 | .0000000 | 1.0000000 | -18.0000000 | .0000000 + 600 | 3 | 12 | 30 | 600 | 30 | .0000000 | 5 | 1401-06-01 | .0000000 | 1.0000000 | -18.0000000 | .0000000 + 700 | 4 | 1 | 40 | 700 | 40 | .0000000 | 1 | 1401-06-01 | .0000000 | 1.0000000 | -39.0000000 | .0000000 + 800 | 4 | 1 | 40 | 800 | 40 | .0000000 | 1 | 1401-06-01 | .0000000 | 1.0000000 | -39.0000000 | .0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.pn asc range between 2 preceding and current row ); -- mvd 1,7->6; + vn | cn | qty | cn | qty | to_char | pn +----+----+------+----+------+-------------------+----- + 30 | 1 | 1 | 1 | 1 | .0000000 | 300 + 50 | 2 | 1 | 2 | 1 | .0000000 | 400 + 50 | 1 | 1 | 1 | 1 | .0000000 | 400 + 30 | 1 | 12 | 1 | 12 | .0000000 | 500 + 30 | 3 | 12 | 3 | 12 | .0000000 | 500 + 40 | 4 | 1 | 4 | 1 | .0000000 | 800 + 20 | 1 | 1 | 1 | 1 | .0000000 | 100 + 40 | 2 | 1100 | 2 | 1100 | .0000000 | 100 + 10 | 1 | 1 | 1 | 1 | .0000000 | 200 + 40 | 3 | 1 | 3 | 1 | .0000000 | 200 + 30 | 3 | 12 | 3 | 12 | .0000000 | 600 + 40 | 4 | 1 | 4 | 1 | .0000000 | 700 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc+ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.vn desc range between 4 preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.qty order by ow_sale.pn desc), +win4 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc); -- mvd 1,5->4; 7->6; 9,10,7->8; 12,1,5,7->11; + cn | cn | cn | to_char | vn | to_char | pn | to_char | prc | qty | to_char | dt +----+----+----+-------------------+----+-------------------+-----+-------------------+------+------+-------------------+------------ + 2 | 2 | 2 | .0000000 | 40 | 400.0000000 | 100 | 1.0000000 | 2400 | 1100 | .0000000 | 1401-01-01 + 1 | 1 | 1 | .0000000 | 10 | 400.0000000 | 200 | 1.0000000 | 0 | 1 | .0000000 | 1401-03-01 + 3 | 3 | 3 | .0000000 | 40 | 800.0000000 | 200 | 1.0000000 | 0 | 1 | .0000000 | 1401-04-01 + 1 | 1 | 1 | .0000000 | 20 | 600.0000000 | 100 | 1.0000000 | 0 | 1 | .0000000 | 1401-05-01 + 1 | 1 | 1 | .0000000 | 30 | 800.0000000 | 300 | 1.0000000 | 0 | 1 | .0000000 | 1401-05-02 + 1 | 1 | 1 | .0000000 | 50 | 800.0000000 | 400 | 1.0000000 | 0 | 1 | .0000000 | 1401-06-01 + 2 | 2 | 2 | .0000000 | 50 | 1000.0000000 | 400 | 1.0000000 | 0 | 1 | .0000000 | 1401-06-01 + 1 | 1 | 1 | .0000000 | 30 | 1000.0000000 | 500 | 1.0000000 | 5 | 12 | .0000000 | 1401-06-01 + 3 | 3 | 3 | .0000000 | 30 | 1600.0000000 | 500 | 1.0000000 | 5 | 12 | .0000000 | 1401-06-01 + 3 | 3 | 3 | .0000000 | 30 | .0000000 | 600 | 1.0000000 | 5 | 12 | .0000000 | 1401-06-01 + 4 | 4 | 4 | .0000000 | 40 | .0000000 | 700 | 1.0000000 | 1 | 1 | .0000000 | 1401-06-01 + 4 | 4 | 4 | .0000000 | 40 | .0000000 | 800 | 1.0000000 | 1 | 1 | .0000000 | 1401-06-01 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.prc order by ow_sale.vn asc range between 3 preceding and floor(ow_sale.vn) following ); -- mvd 5,1,6,2->4; + dt | pn | pn | to_char | prc | vn +------------+-----+-----+-------------------+------+---- + 1401-03-01 | 200 | 200 | .0000000 | 0 | 10 + 1401-06-01 | 600 | 600 | .0000000 | 5 | 30 + 1401-06-01 | 800 | 800 | .0000000 | 1 | 40 + 1401-01-01 | 100 | 100 | .0000000 | 2400 | 40 + 1401-04-01 | 200 | 200 | .0000000 | 0 | 40 + 1401-05-01 | 100 | 100 | .0000000 | 0 | 20 + 1401-05-02 | 300 | 300 | .0000000 | 0 | 30 + 1401-06-01 | 500 | 500 | .0000000 | 5 | 30 + 1401-06-01 | 500 | 500 | .0000000 | 5 | 30 + 1401-06-01 | 700 | 700 | .0000000 | 1 | 40 + 1401-06-01 | 400 | 400 | .0000000 | 0 | 50 + 1401-06-01 | 400 | 400 | .0000000 | 0 | 50 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc*ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.pn order by ow_sale.pn asc range between 0 preceding and unbounded following ); -- mvd 3,4->2; + qty | to_char | cn | pn +------+-------------------+----+----- + 1 | .0000000 | 1 | 100 + 1 | .0000000 | 1 | 200 + 1 | .0000000 | 2 | 400 + 1 | .0000000 | 3 | 200 + 12 | .0000000 | 3 | 600 + 1 | .0000000 | 4 | 800 + 1 | .0000000 | 1 | 300 + 1 | .0000000 | 1 | 400 + 12 | .0000000 | 1 | 500 + 1100 | .0000000 | 2 | 100 + 12 | .0000000 | 3 | 500 + 1 | .0000000 | 4 | 700 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn+ow_sale.prc),floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.vn order by ow_sale.cn asc range between floor(ow_sale.prc+ow_sale.pn) preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.vn order by ow_sale.vn desc); -- mvd 1,4,2,5->3; 4,1,2,5->6; + cn | vn | to_char | dt | pn | to_char +----+----+-------------------+------------+-----+------------------- + 1 | 10 | .0000000 | 1401-03-01 | 200 | .0000000 + 3 | 30 | .0000000 | 1401-06-01 | 600 | .0000000 + 4 | 40 | .0000000 | 1401-06-01 | 700 | .0000000 + 2 | 40 | .0000000 | 1401-01-01 | 100 | .0000000 + 3 | 40 | .0000000 | 1401-04-01 | 200 | .0000000 + 1 | 20 | .0000000 | 1401-05-01 | 100 | .0000000 + 1 | 30 | .0000000 | 1401-05-02 | 300 | .0000000 + 1 | 50 | .0000000 | 1401-06-01 | 400 | .0000000 + 2 | 50 | .0000000 | 1401-06-01 | 400 | .0000000 + 1 | 30 | .0000000 | 1401-06-01 | 500 | .0000000 + 3 | 30 | .0000000 | 1401-06-01 | 500 | .0000000 + 4 | 40 | .0000000 | 1401-06-01 | 800 | .0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc*ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.vn asc range between current row and current row ); -- mvd 5,6,2->4; + prc | pn | dt | to_char | cn | vn +------+-----+------------+-------------------+----+---- + 0 | 100 | 1401-05-01 | .0000000 | 1 | 20 + 0 | 200 | 1401-03-01 | .0000000 | 1 | 10 + 0 | 200 | 1401-04-01 | .0000000 | 3 | 40 + 0 | 400 | 1401-06-01 | .0000000 | 2 | 50 + 5 | 600 | 1401-06-01 | .0000000 | 3 | 30 + 1 | 800 | 1401-06-01 | .0000000 | 4 | 40 + 2400 | 100 | 1401-01-01 | .0000000 | 2 | 40 + 0 | 300 | 1401-05-02 | .0000000 | 1 | 30 + 0 | 400 | 1401-06-01 | .0000000 | 1 | 50 + 5 | 500 | 1401-06-01 | .0000000 | 1 | 30 + 5 | 500 | 1401-06-01 | .0000000 | 3 | 30 + 1 | 700 | 1401-06-01 | .0000000 | 4 | 40 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn-ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.vn desc range between current row and floor(ow_sale.qty) following ); -- mvd 1,8->7; + vn | qty | qty | vn | prc | qty | to_char | pn +----+------+------+----+------+------+-------------------+----- + 30 | 1 | 1 | 30 | 0 | 1 | .0000000 | 300 + 50 | 1 | 1 | 50 | 0 | 1 | .0000000 | 400 + 50 | 1 | 1 | 50 | 0 | 1 | .0000000 | 400 + 30 | 12 | 12 | 30 | 5 | 12 | .0000000 | 500 + 30 | 12 | 12 | 30 | 5 | 12 | .0000000 | 500 + 40 | 1 | 1 | 40 | 1 | 1 | .0000000 | 800 + 40 | 1100 | 1100 | 40 | 2400 | 1100 | .0000000 | 100 + 20 | 1 | 1 | 20 | 0 | 1 | .0000000 | 100 + 40 | 1 | 1 | 40 | 0 | 1 | .0000000 | 200 + 10 | 1 | 1 | 10 | 0 | 1 | .0000000 | 200 + 30 | 12 | 12 | 30 | 5 | 12 | .0000000 | 600 + 40 | 1 | 1 | 40 | 1 | 1 | .0000000 | 700 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc),floor(ow_sale.prc*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.pn asc range between current row and 3 following ), +win2 as (order by ow_sale.cn asc); -- mvd 3,4,5->2; 4->6; 4->7; + vn | to_char | dt | cn | pn | to_char | to_char +----+-------------------+------------+----+-----+-------------------+------------------- + 20 | .0000000 | 1401-05-01 | 1 | 100 | 1.0000000 | 1.0000000 + 10 | .0000000 | 1401-03-01 | 1 | 200 | 1.0000000 | 1.0000000 + 30 | .0000000 | 1401-05-02 | 1 | 300 | 1.0000000 | 1.0000000 + 50 | .0000000 | 1401-06-01 | 1 | 400 | 1.0000000 | 1.0000000 + 30 | .0000000 | 1401-06-01 | 1 | 500 | 1.0000000 | 1.0000000 + 40 | .0000000 | 1401-01-01 | 2 | 100 | 2.0000000 | 6.0000000 + 50 | .0000000 | 1401-06-01 | 2 | 400 | 2.0000000 | 6.0000000 + 40 | .0000000 | 1401-04-01 | 3 | 200 | 3.0000000 | 8.0000000 + 30 | .0000000 | 1401-06-01 | 3 | 500 | 3.0000000 | 8.0000000 + 30 | .0000000 | 1401-06-01 | 3 | 600 | 3.0000000 | 8.0000000 + 40 | .0000000 | 1401-06-01 | 4 | 700 | 4.0000000 | 11.0000000 + 40 | .0000000 | 1401-06-01 | 4 | 800 | 4.0000000 | 11.0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.vn desc range between current row and unbounded following ); -- mvd 6,1,2,4->5; + dt | vn | vn | pn | to_char | cn +------------+----+----+-----+-------------------+---- + 1401-05-01 | 20 | 20 | 100 | .0000000 | 1 + 1401-03-01 | 10 | 10 | 200 | .0000000 | 1 + 1401-04-01 | 40 | 40 | 200 | .0000000 | 3 + 1401-06-01 | 50 | 50 | 400 | .0000000 | 2 + 1401-06-01 | 30 | 30 | 600 | .0000000 | 3 + 1401-06-01 | 40 | 40 | 800 | .0000000 | 4 + 1401-01-01 | 40 | 40 | 100 | .0000000 | 2 + 1401-05-02 | 30 | 30 | 300 | .0000000 | 1 + 1401-06-01 | 50 | 50 | 400 | .0000000 | 1 + 1401-06-01 | 30 | 30 | 500 | .0000000 | 1 + 1401-06-01 | 30 | 30 | 500 | .0000000 | 3 + 1401-06-01 | 40 | 40 | 700 | .0000000 | 4 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn*ow_sale.pn),floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn desc range between current row and unbounded following ); -- mvd 1->5; 1->6; + vn | qty | pn | dt | to_char | to_char +----+------+-----+------------+-------------------+------------------- + 10 | 1 | 200 | 1401-03-01 | .0000000 | 10.0000000 + 20 | 1 | 100 | 1401-05-01 | .0000000 | 20.0000000 + 30 | 1 | 300 | 1401-05-02 | 1732500.0000000 | 30.0000000 + 30 | 12 | 500 | 1401-06-01 | 1732500.0000000 | 30.0000000 + 30 | 12 | 500 | 1401-06-01 | 1732500.0000000 | 30.0000000 + 30 | 12 | 600 | 1401-06-01 | 1732500.0000000 | 30.0000000 + 40 | 1 | 700 | 1401-06-01 | -########.###### | 40.0000000 + 40 | 1 | 200 | 1401-04-01 | -########.###### | 40.0000000 + 40 | 1 | 800 | 1401-06-01 | -########.###### | 40.0000000 + 40 | 1100 | 100 | 1401-01-01 | -########.###### | 40.0000000 + 50 | 1 | 400 | 1401-06-01 | .0000000 | 50.0000000 + 50 | 1 | 400 | 1401-06-01 | .0000000 | 50.0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn*ow_sale.cn),floor(ow_sale.pn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.pn asc range between floor(ow_sale.prc) following and floor(ow_sale.vn-ow_sale.cn) following ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.pn order by ow_sale.vn asc), +win4 as (order by ow_sale.pn desc); -- mvd 3,1->2; 5->4; 5,7,1->6; 1->8; 1->9; 5,7,1->10; + pn | to_char | dt | to_char | cn | to_char | vn | to_char | to_char | to_char +-----+-------------------+------------+-------------------+----+-------------------+----+-------------------+-------------------+------------------- + 700 | .0000000 | 1401-06-01 | .0000000 | 4 | 1.0000000 | 40 | 2.0000000 | 2.0000000 | 4.0000000 + 800 | .0000000 | 1401-06-01 | .0000000 | 4 | 1.0000000 | 40 | 1.0000000 | 1.0000000 | 4.0000000 + 500 | .0000000 | 1401-06-01 | .1818182 | 3 | 1.0000000 | 30 | 4.0000000 | 4.0000000 | 3.0000000 + 600 | .0000000 | 1401-06-01 | .1818182 | 3 | 1.0000000 | 30 | 3.0000000 | 3.0000000 | 3.0000000 + 200 | .0000000 | 1401-04-01 | .1818182 | 3 | 1.0000000 | 40 | 7.0000000 | 7.0000000 | 3.0000000 + 100 | .0000000 | 1401-01-01 | .4545455 | 2 | 1.0000000 | 40 | 8.0000000 | 8.0000000 | 2.0000000 + 400 | .0000000 | 1401-06-01 | .4545455 | 2 | 1.0000000 | 50 | 5.0000000 | 5.0000000 | 2.0000000 + 100 | .0000000 | 1401-05-01 | .6363636 | 1 | 1.0000000 | 20 | 8.0000000 | 8.0000000 | 1.0000000 + 500 | .0000000 | 1401-06-01 | .6363636 | 1 | 1.0000000 | 30 | 4.0000000 | 4.0000000 | 1.0000000 + 400 | .0000000 | 1401-06-01 | .6363636 | 1 | 1.0000000 | 50 | 5.0000000 | 5.0000000 | 1.0000000 + 300 | .0000000 | 1401-05-02 | .6363636 | 1 | 1.0000000 | 30 | 6.0000000 | 6.0000000 | 1.0000000 + 200 | .0000000 | 1401-03-01 | .6363636 | 1 | 1.0000000 | 10 | 7.0000000 | 7.0000000 | 1.0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.dt order by ow_sale.cn asc range between 0 following and unbounded following ); -- mvd 3,4->2; + qty | to_char | cn | dt +------+-------------------+----+------------ + 1 | .0000000 | 3 | 1401-04-01 + 1 | .0000000 | 1 | 1401-05-01 + 1 | .0000000 | 2 | 1401-06-01 + 1 | .0000000 | 4 | 1401-06-01 + 1 | .0000000 | 4 | 1401-06-01 + 1100 | .0000000 | 2 | 1401-01-01 + 1 | .0000000 | 1 | 1401-03-01 + 1 | .0000000 | 1 | 1401-05-02 + 1 | 550.0000000 | 1 | 1401-06-01 + 12 | 550.0000000 | 1 | 1401-06-01 + 12 | .0000000 | 3 | 1401-06-01 + 12 | .0000000 | 3 | 1401-06-01 +(12 rows) + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty+ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty/ow_sale.cn) as int),cast (floor(ow_sale.vn*ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn desc range between floor(ow_sale.vn*ow_sale.cn) following and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 4->7; 4,5->8; 4->9; 4->10; + cn | qty | cn | vn | pn | prc | to_char | to_char | to_char | to_char +----+------+----+----+-----+------+-------------------+-------------------+-------------------+------------------- + 2 | 1100 | 2 | 40 | 100 | 2400 | .0000000 | .0000000 | .0000000 | .0000000 + 1 | 1 | 1 | 10 | 200 | 0 | .0000000 | .0000000 | .0000000 | 1.0000000 + 3 | 1 | 3 | 40 | 200 | 0 | .0000000 | .0000000 | .0000000 | .0000000 + 1 | 1 | 1 | 20 | 100 | 0 | .0000000 | .0000000 | .0000000 | 1.0000000 + 1 | 1 | 1 | 30 | 300 | 0 | .0000000 | .0000000 | .0000000 | 1.0000000 + 1 | 1 | 1 | 50 | 400 | 0 | .0000000 | .0000000 | .0000000 | 1.0000000 + 2 | 1 | 2 | 50 | 400 | 0 | .0000000 | .0000000 | .0000000 | .0000000 + 1 | 12 | 1 | 30 | 500 | 5 | .0000000 | .0000000 | .0000000 | .0000000 + 3 | 12 | 3 | 30 | 500 | 5 | .0000000 | .0000000 | .0000000 | .0000000 + 3 | 12 | 3 | 30 | 600 | 5 | .0000000 | .0000000 | .0000000 | .0000000 + 4 | 1 | 4 | 40 | 700 | 1 | .0000000 | .0000000 | .0000000 | .0000000 + 4 | 1 | 4 | 40 | 800 | 1 | .0000000 | .0000000 | .0000000 | .0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn+ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows unbounded preceding ); -- mvd 4,5,6,1->3; + qty | dt | to_char | prc | cn | vn +------+------------+-------------------+------+----+---- + 1 | 1401-06-01 | .0000000 | 0 | 2 | 50 + 12 | 1401-06-01 | .0000000 | 5 | 1 | 30 + 12 | 1401-06-01 | .0000000 | 5 | 3 | 30 + 12 | 1401-06-01 | .0000000 | 5 | 3 | 30 + 1 | 1401-03-01 | .0000000 | 0 | 1 | 10 + 1 | 1401-05-01 | .0000000 | 0 | 1 | 20 + 1 | 1401-05-02 | .0000000 | 0 | 1 | 30 + 1 | 1401-06-01 | .0000000 | 0 | 1 | 50 + 1 | 1401-04-01 | .0000000 | 0 | 3 | 40 + 1 | 1401-06-01 | .0000000 | 1 | 4 | 40 + 1 | 1401-06-01 | .0000000 | 1 | 4 | 40 + 1100 | 1401-01-01 | .0000000 | 2400 | 2 | 40 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty),floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn/ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn asc rows unbounded preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 5,6,7,3->4; 6->8; + qty | prc | pn | to_char | dt | cn | vn | to_char +------+------+-----+-------------------+------------+----+----+------------------- + 1100 | 2400 | 100 | .0000000 | 1401-01-01 | 2 | 40 | .0000000 + 1 | 0 | 200 | .0000000 | 1401-03-01 | 1 | 10 | 1.0000000 + 1 | 0 | 200 | .0000000 | 1401-04-01 | 3 | 40 | 1.0000000 + 1 | 0 | 100 | .0000000 | 1401-05-01 | 1 | 20 | 1.0000000 + 1 | 0 | 300 | .0000000 | 1401-05-02 | 1 | 30 | 1.0000000 + 1 | 0 | 400 | .0000000 | 1401-06-01 | 1 | 50 | 1.0000000 + 1 | 0 | 400 | .0000000 | 1401-06-01 | 2 | 50 | 1.0000000 + 12 | 5 | 500 | .0000000 | 1401-06-01 | 1 | 30 | .0000000 + 12 | 5 | 500 | .0000000 | 1401-06-01 | 3 | 30 | .0000000 + 12 | 5 | 600 | .0000000 | 1401-06-01 | 3 | 30 | .0000000 + 1 | 1 | 700 | .0000000 | 1401-06-01 | 4 | 40 | 1.0000000 + 1 | 1 | 800 | .0000000 | 1401-06-01 | 4 | 40 | .0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc rows 6 preceding ); -- mvd 3,4,5,6->2; + qty | to_char | prc | dt | cn | pn +------+-------------------+------+------------+----+----- + 1 | .0000000 | 0 | 1401-05-01 | 1 | 100 + 1 | .0000000 | 0 | 1401-04-01 | 3 | 200 + 1 | .0000000 | 0 | 1401-05-02 | 1 | 300 + 1 | .0000000 | 0 | 1401-06-01 | 1 | 400 + 12 | .0000000 | 5 | 1401-06-01 | 1 | 500 + 12 | .0000000 | 5 | 1401-06-01 | 3 | 500 + 1 | .0000000 | 1 | 1401-06-01 | 4 | 800 + 1100 | .0000000 | 2400 | 1401-01-01 | 2 | 100 + 1 | .0000000 | 0 | 1401-03-01 | 1 | 200 + 1 | .0000000 | 0 | 1401-06-01 | 2 | 400 + 12 | .0000000 | 5 | 1401-06-01 | 3 | 600 + 1 | .0000000 | 1 | 1401-06-01 | 4 | 700 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc rows floor(ow_sale.qty) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc rows floor(ow_sale.qty) preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 1,4->3; 1,4->5; 2->6; + vn | cn | to_char | pn | to_char | to_char +----+----+-------------------+-----+-------------------+------------------- + 40 | 4 | .0000000 | 800 | 40.0000000 | .1666667 + 40 | 4 | .0000000 | 700 | 40.0000000 | .1666667 + 40 | 3 | .0000000 | 200 | 40.0000000 | .4166667 + 30 | 3 | .0000000 | 600 | 30.0000000 | .4166667 + 30 | 3 | .0000000 | 500 | 30.0000000 | .4166667 + 50 | 2 | .0000000 | 400 | 50.0000000 | .5833333 + 40 | 2 | .0000000 | 100 | 40.0000000 | .5833333 + 20 | 1 | .0000000 | 100 | 20.0000000 | 1.0000000 + 10 | 1 | .0000000 | 200 | 10.0000000 | 1.0000000 + 30 | 1 | .0000000 | 300 | 30.0000000 | 1.0000000 + 50 | 1 | .0000000 | 400 | 50.0000000 | 1.0000000 + 30 | 1 | .0000000 | 500 | 30.0000000 | 1.0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty+ow_sale.vn),floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc rows current row ); -- mvd 1,6->5; + vn | vn | prc | cn | to_char | pn +----+----+------+----+-------------------+----- + 10 | 10 | 0 | 1 | .0000000 | 200 + 20 | 20 | 0 | 1 | .0000000 | 100 + 30 | 30 | 0 | 1 | .0000000 | 300 + 30 | 30 | 5 | 1 | .0000000 | 500 + 30 | 30 | 5 | 3 | .0000000 | 500 + 30 | 30 | 5 | 3 | .0000000 | 600 + 40 | 40 | 2400 | 2 | .0000000 | 100 + 40 | 40 | 0 | 3 | .0000000 | 200 + 40 | 40 | 1 | 4 | .0000000 | 700 + 40 | 40 | 1 | 4 | .0000000 | 800 + 50 | 50 | 0 | 1 | .0000000 | 400 + 50 | 50 | 0 | 2 | .0000000 | 400 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn-ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows between unbounded preceding and 7 preceding ); -- mvd 3,4,1->2; + pn | to_char | vn | qty +-----+-------------------+----+------ + 200 | .0000000 | 10 | 1 + 100 | .0000000 | 20 | 1 + 300 | .0000000 | 30 | 1 + 200 | .0000000 | 40 | 1 + 700 | .0000000 | 40 | 1 + 800 | .0000000 | 40 | 1 + 400 | .0000000 | 50 | 1 + 400 | .0000000 | 50 | 1 + 500 | .0000000 | 30 | 12 + 500 | .0000000 | 30 | 12 + 600 | .0000000 | 30 | 12 + 100 | .0000000 | 40 | 1100 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.prc,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows between unbounded preceding and current row ); -- mvd 4,1,3,6,7->5; + dt | prc | vn | cn | to_char | qty | pn +------------+------+----+----+-------------------+------+----- + 1401-04-01 | 0 | 40 | 3 | .0000000 | 1 | 200 + 1401-05-01 | 0 | 20 | 1 | .0000000 | 1 | 100 + 1401-05-02 | 0 | 30 | 1 | .0000000 | 1 | 300 + 1401-06-01 | 0 | 50 | 1 | .0000000 | 1 | 400 + 1401-06-01 | 0 | 50 | 2 | .0000000 | 1 | 400 + 1401-06-01 | 1 | 40 | 4 | .0000000 | 1 | 800 + 1401-06-01 | 5 | 30 | 3 | .0000000 | 12 | 600 + 1401-03-01 | 0 | 10 | 1 | .0000000 | 1 | 200 + 1401-06-01 | 1 | 40 | 4 | .0000000 | 1 | 700 + 1401-06-01 | 5 | 30 | 1 | .0000000 | 12 | 500 + 1401-06-01 | 5 | 30 | 3 | .0000000 | 12 | 500 + 1401-01-01 | 2400 | 40 | 2 | .0000000 | 1100 | 100 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn asc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.vn order by ow_sale.vn desc); -- mvd 5,2,1,6->4; 5,2,1,6->7; 5,9,6->8; 5,9,6->10; 12,5,1->11; + vn | qty | vn | to_char | cn | pn | to_char | to_char | dt | to_char | to_char | prc +----+------+----+-------------------+----+-----+-------------------+-------------------+------------+-------------------+-------------------+------ + 10 | 1 | 10 | .0000000 | 1 | 200 | 1.0000000 | 1.0000000 | 1401-03-01 | 1.0000000 | 1.0000000 | 0 + 20 | 1 | 20 | .0000000 | 1 | 100 | 1.0000000 | 1.0000000 | 1401-05-01 | 1.0000000 | 1.0000000 | 0 + 30 | 12 | 30 | .0000000 | 1 | 500 | 1.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 5 + 30 | 12 | 30 | .0000000 | 3 | 500 | 1.0000000 | 2.0000000 | 1401-06-01 | 2.0000000 | 1.0000000 | 5 + 40 | 1 | 40 | .0000000 | 3 | 200 | 1.0000000 | 1.0000000 | 1401-04-01 | 1.0000000 | 1.0000000 | 0 + 40 | 1 | 40 | .0000000 | 4 | 700 | 1.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 1 + 30 | 1 | 30 | .0000000 | 1 | 300 | 1.0000000 | 1.0000000 | 1401-05-02 | 1.0000000 | 1.0000000 | 0 + 30 | 12 | 30 | .0000000 | 3 | 600 | 1.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 5 + 40 | 1100 | 40 | .0000000 | 2 | 100 | 1.0000000 | 1.0000000 | 1401-01-01 | 1.0000000 | 1.0000000 | 2400 + 40 | 1 | 40 | .0000000 | 4 | 800 | 1.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 1 + 50 | 1 | 50 | .0000000 | 1 | 400 | 1.0000000 | 1.0000000 | 1401-06-01 | 1.0000000 | 1.0000000 | 0 + 50 | 1 | 50 | .0000000 | 2 | 400 | 1.0000000 | 2.0000000 | 1401-06-01 | 2.0000000 | 1.0000000 | 0 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.cn) following ); -- mvd 2,3,4,1->5; + pn | cn | vn | qty | to_char +-----+----+----+------+------------------- + 300 | 1 | 30 | 1 | .0000000 + 400 | 1 | 50 | 1 | .0000000 + 600 | 3 | 30 | 12 | .0000000 + 700 | 4 | 40 | 1 | .0000000 + 100 | 1 | 20 | 1 | .0000000 + 100 | 2 | 40 | 1100 | .0000000 + 200 | 1 | 10 | 1 | .0000000 + 200 | 3 | 40 | 1 | .0000000 + 400 | 2 | 50 | 1 | .0000000 + 500 | 1 | 30 | 12 | .0000000 + 500 | 3 | 30 | 12 | .0000000 + 800 | 4 | 40 | 1 | .0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn/ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.vn) following ), +win2 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.pn order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,4,5,1->2; 3,4,7->6; 3,4,7->8; 4->9; + vn | to_char | prc | cn | dt | to_char | pn | to_char | to_char +----+-------------------+------+----+------------+-------------------+-----+-------------------+------------------- + 40 | .0000000 | 2400 | 2 | 1401-01-01 | 1.0000000 | 100 | 20.0000000 | .0000000 + 10 | .0000000 | 0 | 1 | 1401-03-01 | 1.0000000 | 200 | 10.0000000 | 1.0000000 + 40 | .0000000 | 0 | 3 | 1401-04-01 | 1.0000000 | 200 | 13.0000000 | 1.0000000 + 20 | .0000000 | 0 | 1 | 1401-05-01 | 1.0000000 | 100 | 20.0000000 | 1.0000000 + 30 | .0000000 | 0 | 1 | 1401-05-02 | 1.0000000 | 300 | 30.0000000 | 1.0000000 + 50 | .0000000 | 0 | 1 | 1401-06-01 | 1.0000000 | 400 | 50.0000000 | 1.0000000 + 50 | .0000000 | 0 | 2 | 1401-06-01 | 1.0000000 | 400 | 25.0000000 | 17.0000000 + 30 | .0000000 | 5 | 1 | 1401-06-01 | 1.0000000 | 500 | 30.0000000 | .0000000 + 30 | .0000000 | 5 | 3 | 1401-06-01 | 1.0000000 | 500 | 10.0000000 | .0000000 + 30 | .0000000 | 5 | 3 | 1401-06-01 | 1.0000000 | 600 | 10.0000000 | .0000000 + 40 | .0000000 | 1 | 4 | 1401-06-01 | 1.0000000 | 700 | 10.0000000 | 2.0000000 + 40 | .0000000 | 1 | 4 | 1401-06-01 | 1.0000000 | 800 | 10.0000000 | .0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn+ow_sale.cn),floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between unbounded preceding and unbounded following ); -- mvd 3,1,6,7->5; + dt | qty | cn | qty | to_char | vn | pn +------------+------+----+------+-------------------+----+----- + 1401-03-01 | 1 | 1 | 1 | .0000000 | 10 | 200 + 1401-06-01 | 12 | 3 | 12 | .0000000 | 30 | 600 + 1401-06-01 | 1 | 4 | 1 | .0000000 | 40 | 700 + 1401-01-01 | 1100 | 2 | 1100 | .0000000 | 40 | 100 + 1401-05-01 | 1 | 1 | 1 | .0000000 | 20 | 100 + 1401-04-01 | 1 | 3 | 1 | .0000000 | 40 | 200 + 1401-05-02 | 1 | 1 | 1 | .0000000 | 30 | 300 + 1401-06-01 | 1 | 1 | 1 | .0000000 | 50 | 400 + 1401-06-01 | 1 | 2 | 1 | .0000000 | 50 | 400 + 1401-06-01 | 12 | 1 | 12 | .0000000 | 30 | 500 + 1401-06-01 | 12 | 3 | 12 | .0000000 | 30 | 500 + 1401-06-01 | 1 | 4 | 1 | .0000000 | 40 | 800 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn+ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc+ow_sale.cn) as int),cast (floor(ow_sale.vn/ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.pn asc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.pn desc), +win4 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,5,2,6->3; 2->7; 6->8; 2->9; + vn | cn | to_char | prc | dt | pn | to_char | to_char | to_char +----+----+-------------------+------+------------+-----+-------------------+-------------------+------------------- + 40 | 2 | .0000000 | 2400 | 1401-01-01 | 100 | .4545455 | .0000000 | .0000000 + 10 | 1 | .0000000 | 0 | 1401-03-01 | 200 | .6363636 | 100.0000000 | 2402.0000000 + 40 | 3 | .0000000 | 0 | 1401-04-01 | 200 | .1818182 | .0000000 | 1.0000000 + 20 | 1 | .0000000 | 0 | 1401-05-01 | 100 | .6363636 | 200.0000000 | 3.0000000 + 30 | 1 | .0000000 | 0 | 1401-05-02 | 300 | .6363636 | 100.0000000 | 1.0000000 + 50 | 1 | .0000000 | 0 | 1401-06-01 | 400 | .6363636 | 300.0000000 | 1.0000000 + 50 | 2 | .0000000 | 0 | 1401-06-01 | 400 | .4545455 | 300.0000000 | 1.0000000 + 30 | 1 | .0000000 | 5 | 1401-06-01 | 500 | .6363636 | 200.0000000 | 2.0000000 + 30 | 3 | .0000000 | 5 | 1401-06-01 | 500 | .1818182 | 100.0000000 | 6.0000000 + 30 | 3 | .0000000 | 5 | 1401-06-01 | 600 | .1818182 | 200.0000000 | 8.0000000 + 40 | 4 | .0000000 | 1 | 1401-06-01 | 700 | .0000000 | 400.0000000 | 8.0000000 + 40 | 4 | .0000000 | 1 | 1401-06-01 | 800 | .0000000 | 400.0000000 | 5.0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn*ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc,ow_sale.cn asc rows between floor(ow_sale.pn) preceding and 9 preceding ); -- mvd 1,8,5->7; + cn | qty | cn | qty | pn | dt | to_char | vn +----+------+----+------+-----+------------+-------------------+---- + 1 | 1 | 1 | 1 | 200 | 1401-03-01 | .0000000 | 10 + 1 | 1 | 1 | 1 | 100 | 1401-05-01 | .0000000 | 20 + 1 | 1 | 1 | 1 | 300 | 1401-05-02 | .0000000 | 30 + 1 | 1 | 1 | 1 | 400 | 1401-06-01 | .0000000 | 50 + 1 | 12 | 1 | 12 | 500 | 1401-06-01 | .0000000 | 30 + 3 | 1 | 3 | 1 | 200 | 1401-04-01 | .0000000 | 40 + 3 | 12 | 3 | 12 | 500 | 1401-06-01 | .0000000 | 30 + 3 | 12 | 3 | 12 | 600 | 1401-06-01 | .0000000 | 30 + 2 | 1100 | 2 | 1100 | 100 | 1401-01-01 | .0000000 | 40 + 2 | 1 | 2 | 1 | 400 | 1401-06-01 | .0000000 | 50 + 4 | 1 | 4 | 1 | 700 | 1401-06-01 | .0000000 | 40 + 4 | 1 | 4 | 1 | 800 | 1401-06-01 | .0000000 | 40 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn-ow_sale.pn),floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.pn desc rows between 0 preceding and floor(ow_sale.prc) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn*ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.pn desc rows between 0 preceding and floor(ow_sale.prc) preceding ), +win2 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.qty,ow_sale.pn order by ow_sale.vn asc), +win3 as (partition by ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 1,3,4->6; 1,3,4->7; 1,3,4->8; 2,1,3,10,4->9; 1,10,4->11; + cn | dt | vn | pn | vn | to_char | to_char | to_char | to_char | qty | to_char +----+------------+----+-----+----+-------------------+-------------------+-------------------+-------------------+------+------------------- + 1 | 1401-03-01 | 10 | 200 | 10 | .0000000 | 200.0000000 | 1.0000000 | 1.0000000 | 1 | 600.0000000 + 1 | 1401-05-01 | 20 | 100 | 20 | .0000000 | 100.0000000 | 1.0000000 | 1.0000000 | 1 | .0000000 + 1 | 1401-05-02 | 30 | 300 | 30 | .0000000 | 300.0000000 | 1.0000000 | 1.0000000 | 1 | .0000000 + 1 | 1401-06-01 | 50 | 400 | 50 | .0000000 | 400.0000000 | 1.0000000 | 1.0000000 | 1 | 800.0000000 + 1 | 1401-06-01 | 30 | 500 | 30 | .0000000 | .0000000 | .0000000 | 1.0000000 | 12 | 1500.0000000 + 3 | 1401-04-01 | 40 | 200 | 40 | .0000000 | 200.0000000 | 1.0000000 | 1.0000000 | 1 | .0000000 + 3 | 1401-06-01 | 30 | 500 | 30 | .0000000 | .0000000 | .0000000 | 1.0000000 | 12 | .0000000 + 3 | 1401-06-01 | 30 | 600 | 30 | .0000000 | .0000000 | .0000000 | 1.0000000 | 12 | .0000000 + 2 | 1401-01-01 | 40 | 100 | 40 | .0000000 | .0000000 | .0000000 | 1.0000000 | 1100 | .0000000 + 2 | 1401-06-01 | 50 | 400 | 50 | .0000000 | 400.0000000 | 1.0000000 | 1.0000000 | 1 | .0000000 + 4 | 1401-06-01 | 40 | 700 | 40 | .0000000 | .0000000 | .0000000 | 1.0000000 | 1 | .0000000 + 4 | 1401-06-01 | 40 | 800 | 40 | .0000000 | .0000000 | .0000000 | 1.0000000 | 1 | .0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn+ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc rows between 1 preceding and current row ); -- mvd 5,4,1->7; + pn | qty | pn | vn | cn | cn | to_char +-----+------+-----+----+----+----+------------------- + 200 | 1 | 200 | 10 | 1 | 1 | .0000000 + 100 | 1 | 100 | 20 | 1 | 1 | .0000000 + 300 | 1 | 300 | 30 | 1 | 1 | .0000000 + 500 | 12 | 500 | 30 | 1 | 1 | 27.5000000 + 500 | 12 | 500 | 30 | 3 | 3 | .0000000 + 600 | 12 | 600 | 30 | 3 | 3 | .0000000 + 200 | 1 | 200 | 40 | 3 | 3 | .0000000 + 400 | 1 | 400 | 50 | 1 | 1 | .0000000 + 100 | 1100 | 100 | 40 | 2 | 2 | .0000000 + 700 | 1 | 700 | 40 | 4 | 4 | .0000000 + 800 | 1 | 800 | 40 | 4 | 4 | .0000000 + 400 | 1 | 400 | 50 | 2 | 2 | .0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn/ow_sale.qty),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(partition by ow_sale.prc,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.cn desc rows between floor(ow_sale.vn/ow_sale.cn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc+ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.cn desc rows between floor(ow_sale.vn/ow_sale.cn) preceding and current row ), +win2 as (order by ow_sale.vn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 6,7,8,4->5; 6,7,8,4->9; 8->10; 4->11; + qty | qty | qty | pn | to_char | prc | cn | vn | to_char | to_char | to_char +------+------+------+-----+-------------------+------+----+----+-------------------+-------------------+------------------- + 1100 | 1100 | 1100 | 100 | .0000000 | 2400 | 2 | 40 | 1.0000000 | 7.0000000 | .0000000 + 1 | 1 | 1 | 200 | .0000000 | 0 | 1 | 10 | 1.0000000 | 1.0000000 | 200.0000000 + 1 | 1 | 1 | 200 | .0000000 | 0 | 3 | 40 | 1.0000000 | 8.0000000 | 200.0000000 + 1 | 1 | 1 | 100 | .0000000 | 0 | 1 | 20 | 1.0000000 | 2.0000000 | 100.0000000 + 1 | 1 | 1 | 300 | .0000000 | 0 | 1 | 30 | 1.0000000 | 5.0000000 | 300.0000000 + 1 | 1 | 1 | 400 | .0000000 | 0 | 1 | 50 | 1.0000000 | 12.0000000 | 400.0000000 + 1 | 1 | 1 | 400 | .0000000 | 0 | 2 | 50 | 2.0000000 | 11.0000000 | 400.0000000 + 12 | 12 | 12 | 500 | .0000000 | 5 | 1 | 30 | 1.0000000 | 3.0000000 | .0000000 + 12 | 12 | 12 | 500 | .0000000 | 5 | 3 | 30 | 2.0000000 | 4.0000000 | .0000000 + 12 | 12 | 12 | 600 | .0000000 | 5 | 3 | 30 | 3.0000000 | 6.0000000 | .0000000 + 1 | 1 | 1 | 700 | .0000000 | 1 | 4 | 40 | 1.0000000 | 9.0000000 | .0000000 + 1 | 1 | 1 | 800 | .0000000 | 1 | 4 | 40 | 2.0000000 | 10.0000000 | .0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn/ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.vn asc rows between 8 preceding and floor(ow_sale.cn) following ); -- mvd 6,7->5; + qty | prc | qty | dt | to_char | cn | vn +------+------+------+------------+-------------------+----+---- + 1 | 0 | 1 | 1401-03-01 | 50.0000000 | 1 | 10 + 1 | 0 | 1 | 1401-05-01 | 200.0000000 | 1 | 20 + 1 | 0 | 1 | 1401-05-02 | 875.0000000 | 1 | 30 + 1 | 0 | 1 | 1401-06-01 | 824.0000000 | 1 | 50 + 12 | 5 | 12 | 1401-06-01 | 824.0000000 | 1 | 30 + 1 | 0 | 1 | 1401-04-01 | 253.3333333 | 3 | 40 + 12 | 5 | 12 | 1401-06-01 | 253.3333333 | 3 | 30 + 12 | 5 | 12 | 1401-06-01 | 253.3333333 | 3 | 30 + 1100 | 2400 | 1100 | 1401-01-01 | 250.0000000 | 2 | 40 + 1 | 0 | 1 | 1401-06-01 | 250.0000000 | 2 | 50 + 1 | 1 | 1 | 1401-06-01 | .0000000 | 4 | 40 + 1 | 1 | 1 | 1401-06-01 | .0000000 | 4 | 40 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between 0 preceding and 2 following ), +win2 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc); -- mvd 1,3->7; 9,1,2,5,4,3->8; 9,1,2,5,4,3->10; 9,1,2,5,4,3->11; + cn | dt | pn | qty | vn | pn | to_char | to_char | prc | to_char | to_char +----+------------+-----+------+----+-----+-------------------+-------------------+------+-------------------+------------------- + 1 | 1401-05-01 | 100 | 1 | 20 | 100 | .0000000 | 1.0000000 | 0 | 1.0000000 | 1.0000000 + 1 | 1401-03-01 | 200 | 1 | 10 | 200 | .0000000 | 1.0000000 | 0 | 1.0000000 | 1.0000000 + 2 | 1401-06-01 | 400 | 1 | 50 | 400 | .0000000 | 1.0000000 | 0 | 2.0000000 | 1.0000000 + 3 | 1401-04-01 | 200 | 1 | 40 | 200 | .0000000 | 1.0000000 | 0 | 3.0000000 | 1.0000000 + 3 | 1401-06-01 | 600 | 12 | 30 | 600 | .0000000 | 1.0000000 | 5 | 3.0000000 | 1.0000000 + 4 | 1401-06-01 | 800 | 1 | 40 | 800 | .0000000 | 1.0000000 | 1 | 4.0000000 | 1.0000000 + 1 | 1401-05-02 | 300 | 1 | 30 | 300 | .0000000 | 1.0000000 | 0 | 1.0000000 | 1.0000000 + 1 | 1401-06-01 | 400 | 1 | 50 | 400 | .0000000 | 2.0000000 | 0 | 2.0000000 | 2.0000000 + 1 | 1401-06-01 | 500 | 12 | 30 | 500 | .0000000 | 2.0000000 | 5 | 3.0000000 | 2.0000000 + 2 | 1401-01-01 | 100 | 1100 | 40 | 100 | .0000000 | 1.0000000 | 2400 | 2.0000000 | 1.0000000 + 3 | 1401-06-01 | 500 | 12 | 30 | 500 | .0000000 | 1.0000000 | 5 | 3.0000000 | 1.0000000 + 4 | 1401-06-01 | 700 | 1 | 40 | 700 | .0000000 | 1.0000000 | 1 | 4.0000000 | 1.0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.pn desc rows between 0 preceding and unbounded following ); -- mvd 4,1,2->3; + vn | pn | to_char | cn +----+-----+-------------------+---- + 30 | 300 | .0000000 | 1 + 50 | 400 | .0000000 | 1 + 50 | 400 | .0000000 | 2 + 30 | 500 | .0000000 | 1 + 30 | 500 | .0000000 | 3 + 40 | 800 | .0000000 | 4 + 40 | 100 | 10990.0000000 | 2 + 20 | 100 | .0000000 | 1 + 10 | 200 | .0000000 | 1 + 40 | 200 | .0000000 | 3 + 30 | 600 | .0000000 | 3 + 40 | 700 | .0000000 | 4 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty+ow_sale.pn),floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn*ow_sale.vn) as int),cast (floor(ow_sale.qty*ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn/ow_sale.pn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between floor(ow_sale.prc*ow_sale.pn) preceding and unbounded following ), +win2 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.qty order by ow_sale.cn desc), +win3 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc), +win4 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 6,7,8,1->5; 6,7,8,1->9; 7,4->10; 6,8,1->11; 7->12; + vn | vn | vn | qty | to_char | prc | cn | dt | to_char | to_char | to_char | to_char +----+----+----+------+-------------------+------+----+------------+-------------------+-------------------+-------------------+------------------- + 40 | 40 | 40 | 1100 | .0000000 | 2400 | 2 | 1401-01-01 | 1102.0000000 | 1.0000000 | .0000000 | .0000000 + 10 | 10 | 10 | 1 | .0000000 | 0 | 1 | 1401-03-01 | 2.0000000 | 1.0000000 | .0000000 | .0000000 + 40 | 40 | 40 | 1 | .0000000 | 0 | 3 | 1401-04-01 | 4.0000000 | 1.0000000 | .0000000 | .0000000 + 20 | 20 | 20 | 1 | .0000000 | 0 | 1 | 1401-05-01 | 2.0000000 | 1.0000000 | .0000000 | .0000000 + 30 | 30 | 30 | 1 | .0000000 | 0 | 1 | 1401-05-02 | 2.0000000 | 1.0000000 | .0000000 | .0000000 + 50 | 50 | 50 | 1 | .0000000 | 0 | 1 | 1401-06-01 | 2.0000000 | 1.0000000 | .0000000 | .0000000 + 50 | 50 | 50 | 1 | .0000000 | 0 | 2 | 1401-06-01 | 3.0000000 | 1.0000000 | 20000.0000000 | .0000000 + 30 | 30 | 30 | 12 | 6666.6666667 | 5 | 1 | 1401-06-01 | 13.0000000 | 1.0000000 | .0000000 | .0000000 + 30 | 30 | 30 | 12 | 6666.6666667 | 5 | 3 | 1401-06-01 | 13.0000000 | 1.0000000 | .0000000 | .0000000 + 30 | 30 | 30 | 12 | 6666.6666667 | 5 | 3 | 1401-06-01 | 13.0000000 | 1.0000000 | .0000000 | .0000000 + 40 | 40 | 40 | 1 | 5000.0000000 | 1 | 4 | 1401-06-01 | 5.0000000 | 1.0000000 | .0000000 | .0000000 + 40 | 40 | 40 | 1 | 5000.0000000 | 1 | 4 | 1401-06-01 | 5.0000000 | 1.0000000 | 28000.0000000 | .0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between current row and current row ); -- mvd 2,6,7,1->5; + qty | dt | pn | prc | to_char | cn | vn +------+------------+-----+------+-------------------+----+---- + 1 | 1401-03-01 | 200 | 0 | .0000000 | 1 | 10 + 1 | 1401-05-02 | 300 | 0 | .0000000 | 1 | 30 + 1 | 1401-06-01 | 400 | 0 | .0000000 | 1 | 50 + 1 | 1401-05-01 | 100 | 0 | .0000000 | 1 | 20 + 12 | 1401-06-01 | 500 | 5 | .0000000 | 1 | 30 + 1100 | 1401-01-01 | 100 | 2400 | .0000000 | 2 | 40 + 1 | 1401-06-01 | 400 | 0 | .0000000 | 2 | 50 + 1 | 1401-04-01 | 200 | 0 | .0000000 | 3 | 40 + 12 | 1401-06-01 | 500 | 5 | .0000000 | 3 | 30 + 12 | 1401-06-01 | 600 | 5 | .0000000 | 3 | 30 + 1 | 1401-06-01 | 700 | 1 | .0000000 | 4 | 40 + 1 | 1401-06-01 | 800 | 1 | .0000000 | 4 | 40 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows between current row and 1 following ); -- mvd 4,6,7,1->5; + qty | cn | pn | prc | to_char | dt | vn +------+----+-----+------+-------------------+------------+---- + 1 | 3 | 200 | 0 | .0000000 | 1401-04-01 | 40 + 1 | 1 | 100 | 0 | .0000000 | 1401-05-01 | 20 + 1 | 4 | 700 | 1 | .0000000 | 1401-06-01 | 40 + 1 | 4 | 800 | 1 | .0000000 | 1401-06-01 | 40 + 12 | 1 | 500 | 5 | .0000000 | 1401-06-01 | 30 + 12 | 3 | 500 | 5 | .0000000 | 1401-06-01 | 30 + 12 | 3 | 600 | 5 | .0000000 | 1401-06-01 | 30 + 1 | 1 | 200 | 0 | .0000000 | 1401-03-01 | 10 + 1 | 1 | 300 | 0 | .0000000 | 1401-05-02 | 30 + 1 | 1 | 400 | 0 | .0000000 | 1401-06-01 | 50 + 1 | 2 | 400 | 0 | .0000000 | 1401-06-01 | 50 + 1100 | 2 | 100 | 2400 | .0000000 | 1401-01-01 | 40 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc+ow_sale.vn) as int),cast (floor(ow_sale.qty+ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc rows between current row and 3 following ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc); -- mvd 5,3->4; 5,3->6; + prc | cn | pn | to_char | vn | to_char +------+----+-----+-------------------+----+------------------- + 0 | 1 | 300 | .0000000 | 30 | .0000000 + 0 | 1 | 400 | .0000000 | 50 | .0000000 + 0 | 2 | 400 | .0000000 | 50 | 50.0000000 + 5 | 1 | 500 | .0000000 | 30 | .0000000 + 5 | 3 | 500 | .0000000 | 30 | .0000000 + 1 | 4 | 800 | .0000000 | 40 | .0000000 + 2400 | 2 | 100 | .0000000 | 40 | .0000000 + 0 | 1 | 100 | .0000000 | 20 | .0000000 + 0 | 1 | 200 | .0000000 | 10 | .0000000 + 0 | 3 | 200 | .0000000 | 40 | .0000000 + 5 | 3 | 600 | .0000000 | 30 | .0000000 + 1 | 4 | 700 | .0000000 | 40 | .0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn asc rows between current row and unbounded following ); -- mvd 2,3,1->4; + pn | cn | vn | to_char +-----+----+----+------------------- + 300 | 1 | 30 | .0000000 + 500 | 1 | 30 | .0000000 + 500 | 3 | 30 | .0000000 + 800 | 4 | 40 | .0000000 + 400 | 1 | 50 | .0000000 + 400 | 2 | 50 | .0000000 + 200 | 1 | 10 | .0000000 + 100 | 1 | 20 | .0000000 + 600 | 3 | 30 | .0000000 + 100 | 2 | 40 | .0000000 + 200 | 3 | 40 | .0000000 + 700 | 4 | 40 | .0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.prc/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn/ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.pn asc); -- mvd 2,7,3->6; 2,7,3->8; 7,10,11,3->9; 7,10,11,3->12; 7,10,11,3->13; 7,10,11,3->14; + qty | prc | pn | pn | prc | to_char | cn | to_char | to_char | dt | vn | to_char | to_char | to_char +------+------+-----+-----+------+-------------------+----+-------------------+-------------------+------------+----+-------------------+-------------------+------------------- + 1 | 0 | 200 | 200 | 0 | .0000000 | 1 | 4.0000000 | 1.0000000 | 1401-03-01 | 10 | .0000000 | 1.0000000 | 1.0000000 + 1 | 0 | 100 | 100 | 0 | .0000000 | 1 | 3.0000000 | 1.0000000 | 1401-05-01 | 20 | .0000000 | 1.0000000 | 1.0000000 + 1 | 0 | 300 | 300 | 0 | .0000000 | 1 | 2.0000000 | 1.0000000 | 1401-05-02 | 30 | .0000000 | 1.0000000 | 1.0000000 + 1 | 0 | 400 | 400 | 0 | .0000000 | 1 | 1.0000000 | 1.0000000 | 1401-06-01 | 50 | .0000000 | 1.0000000 | 1.0000000 + 12 | 5 | 500 | 500 | 5 | .0000000 | 1 | 1.0000000 | 1.0000000 | 1401-06-01 | 30 | .0000000 | 1.0000000 | 1.0000000 + 1 | 0 | 200 | 200 | 0 | .0000000 | 3 | 1.0000000 | 1.0000000 | 1401-04-01 | 40 | .0000000 | 1.0000000 | 1.0000000 + 12 | 5 | 500 | 500 | 5 | .0000000 | 3 | 2.0000000 | 1.0000000 | 1401-06-01 | 30 | .0000000 | 1.0000000 | 1.0000000 + 12 | 5 | 600 | 600 | 5 | .0000000 | 3 | 1.0000000 | 2.0000000 | 1401-06-01 | 30 | 1.0000000 | 2.0000000 | 2.0000000 + 1 | 1 | 700 | 700 | 1 | .0000000 | 4 | 2.0000000 | 1.0000000 | 1401-06-01 | 40 | .0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 800 | 800 | 1 | .0000000 | 4 | 1.0000000 | 2.0000000 | 1401-06-01 | 40 | 1.0000000 | 2.0000000 | 2.0000000 + 1 | 0 | 400 | 400 | 0 | .0000000 | 2 | 1.0000000 | 1.0000000 | 1401-06-01 | 50 | .0000000 | 1.0000000 | 1.0000000 + 1100 | 2400 | 100 | 100 | 2400 | .0000000 | 2 | 1.0000000 | 1.0000000 | 1401-01-01 | 40 | .0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.dt,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.cn asc rows between floor(ow_sale.qty) following and 9 following ); -- mvd 1,6,7->5; + prc | dt | dt | qty | to_char | cn | vn +------+------------+------------+------+-------------------+----+---- + 1 | 1401-06-01 | 1401-06-01 | 1 | .0000000 | 4 | 40 + 1 | 1401-06-01 | 1401-06-01 | 1 | .0000000 | 4 | 40 + 0 | 1401-03-01 | 1401-03-01 | 1 | .0000000 | 1 | 10 + 0 | 1401-05-01 | 1401-05-01 | 1 | .0000000 | 1 | 20 + 0 | 1401-05-02 | 1401-05-02 | 1 | .0000000 | 1 | 30 + 0 | 1401-04-01 | 1401-04-01 | 1 | .0000000 | 3 | 40 + 0 | 1401-06-01 | 1401-06-01 | 1 | .0000000 | 1 | 50 + 0 | 1401-06-01 | 1401-06-01 | 1 | .0000000 | 2 | 50 + 5 | 1401-06-01 | 1401-06-01 | 12 | .0000000 | 1 | 30 + 5 | 1401-06-01 | 1401-06-01 | 12 | .0000000 | 3 | 30 + 5 | 1401-06-01 | 1401-06-01 | 12 | .0000000 | 3 | 30 + 2400 | 1401-01-01 | 1401-01-01 | 1100 | .0000000 | 2 | 40 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.cn,ow_sale.pn order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.cn,ow_sale.pn order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc rows between floor(ow_sale.vn+ow_sale.vn) following and floor(ow_sale.vn+ow_sale.vn) following ), +win2 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.vn desc); -- mvd 6,7,8->5; 3,7,8->9; 3,7,8->10; 3,7,8->11; + prc | qty | cn | qty | to_char | dt | vn | pn | to_char | to_char | to_char +------+------+----+------+-------------------+------------+----+-----+-------------------+-------------------+------------------- + 0 | 1 | 1 | 1 | .0000000 | 1401-03-01 | 10 | 200 | 1.0000000 | 1.0000000 | 1.0000000 + 5 | 12 | 3 | 12 | .0000000 | 1401-06-01 | 30 | 600 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 4 | 1 | .0000000 | 1401-06-01 | 40 | 700 | 1.0000000 | 1.0000000 | 1.0000000 + 2400 | 1100 | 2 | 1100 | .0000000 | 1401-01-01 | 40 | 100 | 1.0000000 | 1.0000000 | 1.0000000 + 0 | 1 | 3 | 1 | .0000000 | 1401-04-01 | 40 | 200 | 1.0000000 | 1.0000000 | 1.0000000 + 0 | 1 | 1 | 1 | .0000000 | 1401-05-01 | 20 | 100 | 1.0000000 | 1.0000000 | 1.0000000 + 0 | 1 | 1 | 1 | .0000000 | 1401-05-02 | 30 | 300 | 1.0000000 | 1.0000000 | 1.0000000 + 0 | 1 | 1 | 1 | .0000000 | 1401-06-01 | 50 | 400 | 1.0000000 | 1.0000000 | 1.0000000 + 0 | 1 | 2 | 1 | .0000000 | 1401-06-01 | 50 | 400 | 1.0000000 | 1.0000000 | 1.0000000 + 5 | 12 | 1 | 12 | .0000000 | 1401-06-01 | 30 | 500 | 1.0000000 | 1.0000000 | 1.0000000 + 5 | 12 | 3 | 12 | .0000000 | 1401-06-01 | 30 | 500 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 4 | 1 | .0000000 | 1401-06-01 | 40 | 800 | 1.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc-ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc,ow_sale.cn desc rows between 0 following and unbounded following ); -- mvd 4,2,1->5; + qty | vn | pn | cn | to_char +------+----+-----+----+------------------- + 1 | 10 | 200 | 1 | -723.5000000 + 1 | 40 | 200 | 3 | -670.0000000 + 1 | 20 | 100 | 1 | -598.6666667 + 1 | 30 | 300 | 1 | -458.8000000 + 1 | 50 | 400 | 1 | -349.0000000 + 1 | 50 | 400 | 2 | -232.6666667 + 1 | 40 | 700 | 4 | .0000000 + 1 | 40 | 800 | 4 | .0000000 + 12 | 30 | 500 | 1 | .0000000 + 12 | 30 | 500 | 3 | .0000000 + 12 | 30 | 600 | 3 | .0000000 + 1100 | 40 | 100 | 2 | .0000000 +(12 rows) + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn desc rows between floor(ow_sale.qty) following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn desc rows between floor(ow_sale.qty) following and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.vn asc), +win3 as (partition by ow_sale.vn order by ow_sale.pn desc); -- mvd 2,7,5,1->6; 7,5->8; 2,7,5,1->9; 2,7,5,1->10; 5,1->11; + pn | cn | cn | pn | vn | to_char | qty | to_char | to_char | to_char | to_char +-----+----+----+-----+----+-------------------+------+-------------------+-------------------+-------------------+------------------- + 200 | 1 | 1 | 200 | 10 | .0000000 | 1 | .0000000 | .0000000 | .0000000 | 1.0000000 + 100 | 1 | 1 | 100 | 20 | .0000000 | 1 | .0000000 | .0000000 | .0000000 | 1.0000000 + 600 | 3 | 3 | 600 | 30 | .0000000 | 12 | .0000000 | .0000000 | .0000000 | 1.0000000 + 500 | 3 | 3 | 500 | 30 | .0000000 | 12 | .0000000 | .0000000 | .0000000 | 2.0000000 + 500 | 1 | 1 | 500 | 30 | .0000000 | 12 | .0000000 | .0000000 | .0000000 | 2.0000000 + 300 | 1 | 1 | 300 | 30 | .0000000 | 1 | .0000000 | .0000000 | .0000000 | 4.0000000 + 800 | 4 | 4 | 800 | 40 | .0000000 | 1 | .0000000 | .0000000 | .0000000 | 1.0000000 + 700 | 4 | 4 | 700 | 40 | .0000000 | 1 | .0000000 | .0000000 | .0000000 | 2.0000000 + 200 | 3 | 3 | 200 | 40 | .0000000 | 1 | .0000000 | .0000000 | .0000000 | 3.0000000 + 100 | 2 | 2 | 100 | 40 | .0000000 | 1100 | .0000000 | .0000000 | .0000000 | 4.0000000 + 400 | 2 | 2 | 400 | 50 | .0000000 | 1 | .0000000 | .0000000 | .0000000 | 1.0000000 + 400 | 1 | 1 | 400 | 50 | .0000000 | 1 | .0000000 | 1.0000000 | 50.0000000 | 1.0000000 +(12 rows) + +-- REGR_SYY() function with NULL OVER() clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (); -- mvd 4->4; + vn | cn | dt | to_char +----+----+------------+------------------- + 50 | 2 | 1401-06-01 | 5246846.2500000 + 40 | 4 | 1401-06-01 | 5246846.2500000 + 20 | 1 | 1401-05-01 | 5246846.2500000 + 10 | 1 | 1401-03-01 | 5246846.2500000 + 40 | 3 | 1401-04-01 | 5246846.2500000 + 30 | 3 | 1401-06-01 | 5246846.2500000 + 30 | 1 | 1401-05-02 | 5246846.2500000 + 50 | 1 | 1401-06-01 | 5246846.2500000 + 30 | 1 | 1401-06-01 | 5246846.2500000 + 30 | 3 | 1401-06-01 | 5246846.2500000 + 40 | 2 | 1401-01-01 | 5246846.2500000 + 40 | 4 | 1401-06-01 | 5246846.2500000 +(12 rows) + +-- REGR_SYY() function with NULL OVER() clause in combination with other window functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc*ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.pn order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (), +win2 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.cn desc); -- mvd 4->4; 6,3,2->5; 6,3,2->7; 6,3,2->8; 6,3,2->9; + qty | pn | vn | to_char | to_char | cn | to_char | to_char | to_char +------+-----+----+-------------------+-------------------+----+-------------------+-------------------+------------------- + 1 | 300 | 30 | 1491.6666667 | 1.0000000 | 1 | .0000000 | .0000000 | -29.0000000 + 12 | 500 | 30 | 1491.6666667 | 1.0000000 | 3 | 150.0000000 | .0000000 | -27.0000000 + 12 | 500 | 30 | 1491.6666667 | 2.0000000 | 1 | 150.0000000 | 1.0000000 | -29.0000000 + 1 | 800 | 40 | 1491.6666667 | 1.0000000 | 4 | 40.0000000 | .0000000 | -36.0000000 + 1 | 400 | 50 | 1491.6666667 | 1.0000000 | 2 | .0000000 | .0000000 | -48.0000000 + 1 | 400 | 50 | 1491.6666667 | 2.0000000 | 1 | .0000000 | 1.0000000 | -49.0000000 + 1 | 200 | 10 | 1491.6666667 | 1.0000000 | 1 | .0000000 | .0000000 | -9.0000000 + 1 | 100 | 20 | 1491.6666667 | 1.0000000 | 1 | .0000000 | .0000000 | -19.0000000 + 12 | 600 | 30 | 1491.6666667 | 1.0000000 | 3 | 150.0000000 | .0000000 | -27.0000000 + 1100 | 100 | 40 | 1491.6666667 | 1.0000000 | 2 | 96000.0000000 | .0000000 | -38.0000000 + 1 | 200 | 40 | 1491.6666667 | 1.0000000 | 3 | .0000000 | .0000000 | -37.0000000 + 1 | 700 | 40 | 1491.6666667 | 1.0000000 | 4 | 40.0000000 | .0000000 | -36.0000000 +(12 rows) + +-- REGR_SYY() function with OVER() clause having ONLY PARTITION BY -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt); -- mvd 1,6->7; + dt | cn | pn | vn | cn | qty | to_char +------------+----+-----+----+----+------+------------------- + 1401-04-01 | 3 | 200 | 40 | 3 | 1 | .0000000 + 1401-05-01 | 1 | 100 | 20 | 1 | 1 | .0000000 + 1401-06-01 | 3 | 600 | 30 | 3 | 12 | 6666.6666667 + 1401-06-01 | 1 | 500 | 30 | 1 | 12 | 6666.6666667 + 1401-06-01 | 3 | 500 | 30 | 3 | 12 | 6666.6666667 + 1401-03-01 | 1 | 200 | 10 | 1 | 1 | .0000000 + 1401-05-02 | 1 | 300 | 30 | 1 | 1 | .0000000 + 1401-06-01 | 4 | 700 | 40 | 4 | 1 | 127500.0000000 + 1401-06-01 | 2 | 400 | 50 | 2 | 1 | 127500.0000000 + 1401-06-01 | 4 | 800 | 40 | 4 | 1 | 127500.0000000 + 1401-06-01 | 1 | 400 | 50 | 1 | 1 | 127500.0000000 + 1401-01-01 | 2 | 100 | 40 | 2 | 1100 | .0000000 +(12 rows) + +-- REGR_SYY() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty+ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.cn), +win2 as (partition by ow_sale.vn order by ow_sale.cn asc), +win3 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn asc); -- mvd 3,4->2; 3,1->5; 7,1->6; + vn | to_char | cn | pn | to_char | to_char | dt +----+-------------------+----+-----+-------------------+-------------------+------------ + 20 | .0000000 | 1 | 100 | 1.0000000 | .0000000 | 1401-05-01 + 10 | .0000000 | 1 | 200 | 1.0000000 | .0000000 | 1401-03-01 + 40 | .0000000 | 3 | 200 | 2.0000000 | .0000000 | 1401-04-01 + 50 | .0000000 | 2 | 400 | 2.0000000 | -497.0000000 | 1401-06-01 + 30 | .0000000 | 3 | 600 | 2.0000000 | .0000000 | 1401-06-01 + 40 | .0000000 | 4 | 800 | 3.0000000 | .0000000 | 1401-06-01 + 40 | .0000000 | 2 | 100 | 1.0000000 | .0000000 | 1401-01-01 + 30 | .0000000 | 1 | 300 | 1.0000000 | .0000000 | 1401-05-02 + 50 | .0000000 | 1 | 400 | 1.0000000 | -398.0000000 | 1401-06-01 + 30 | .0000000 | 1 | 500 | 1.0000000 | -497.0000000 | 1401-06-01 + 30 | .0000000 | 3 | 500 | 2.0000000 | -796.0000000 | 1401-06-01 + 40 | .0000000 | 4 | 700 | 3.0000000 | .0000000 | 1401-06-01 +(12 rows) + +-- REGR_SYY() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty*ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc); -- mvd 1->5; + pn | prc | dt | qty | to_char +-----+------+------------+------+------------------- + 800 | 1 | 1401-06-01 | 1 | .0000000 + 700 | 1 | 1401-06-01 | 1 | .0000000 + 600 | 5 | 1401-06-01 | 12 | 13632.6666667 + 500 | 5 | 1401-06-01 | 12 | 24538.8000000 + 500 | 5 | 1401-06-01 | 12 | 24538.8000000 + 400 | 0 | 1401-06-01 | 1 | 35055.4285714 + 400 | 0 | 1401-06-01 | 1 | 35055.4285714 + 300 | 0 | 1401-05-02 | 1 | 38341.8750000 + 200 | 0 | 1401-03-01 | 1 | 42942.9000000 + 200 | 0 | 1401-04-01 | 1 | 42942.9000000 + 100 | 0 | 1401-05-01 | 1 | ########.## + 100 | 2400 | 1401-01-01 | 1100 | ########.## +(12 rows) + +-- REGR_SYY() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +, +TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.pn desc,ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc,ow_sale.vn asc); -- mvd 3,4->2; 3,4->5; 3,4->6; 3,4->7; 3,4->8; 3,4->9; + cn | to_char | vn | pn | to_char | to_char | to_char | to_char | to_char +----+-------------------+----+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 4 | .0000000 | 40 | 800 | .0833333 | 1.0000000 | 1.0000000 | 1.0000000 | 4.0000000 + 4 | .0000000 | 40 | 700 | .1666667 | 2.0000000 | 2.0000000 | 2.0000000 | 4.0000000 + 3 | .6666667 | 30 | 600 | .2500000 | 3.0000000 | 3.0000000 | 3.0000000 | 4.0000000 + 1 | 6.0000000 | 30 | 500 | .4166667 | 5.0000000 | 4.0000000 | 4.0000000 | 4.0000000 + 3 | 6.0000000 | 30 | 500 | .4166667 | 5.0000000 | 4.0000000 | 5.0000000 | 4.0000000 + 1 | 9.7142857 | 50 | 400 | .5833333 | 7.0000000 | 5.0000000 | 6.0000000 | 1.0000000 + 2 | 9.7142857 | 50 | 400 | .5833333 | 7.0000000 | 5.0000000 | 7.0000000 | 1.0000000 + 1 | 11.8750000 | 30 | 300 | .6666667 | 8.0000000 | 6.0000000 | 8.0000000 | 1.0000000 + 1 | 13.5555556 | 10 | 200 | .7500000 | 9.0000000 | 7.0000000 | 9.0000000 | 1.0000000 + 3 | 14.1000000 | 40 | 200 | .8333333 | 10.0000000 | 8.0000000 | 10.0000000 | 1.0000000 + 1 | 15.6363636 | 20 | 100 | .9166667 | 11.0000000 | 9.0000000 | 11.0000000 | 1.0000000 + 2 | 15.6666667 | 40 | 100 | 1.0000000 | 12.0000000 | 10.0000000 | 12.0000000 | 1.0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ); -- mvd 4->3; + vn | qty | to_char | cn +----+------+-------------------+---- + 40 | 1 | .0000000 | 4 + 40 | 1 | .0000000 | 4 + 30 | 12 | 1.2000000 | 3 + 30 | 12 | 1.2000000 | 3 + 40 | 1 | 1.2000000 | 3 + 50 | 1 | 4.0000000 | 2 + 40 | 1100 | 4.0000000 | 2 + 30 | 1 | 15.6666667 | 1 + 30 | 12 | 15.6666667 | 1 + 50 | 1 | 15.6666667 | 1 + 10 | 1 | 15.6666667 | 1 + 20 | 1 | 15.6666667 | 1 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ), +win2 as (order by ow_sale.pn desc); -- mvd 1->7; 4->8; + cn | cn | qty | pn | dt | dt | to_char | to_char +----+----+------+-----+------------+------------+-------------------+------------------- + 4 | 4 | 1 | 800 | 1401-06-01 | 1401-06-01 | 5000.0000000 | .0000000 + 4 | 4 | 1 | 700 | 1401-06-01 | 1401-06-01 | 5000.0000000 | .0909091 + 3 | 3 | 12 | 600 | 1401-06-01 | 1401-06-01 | 212000.0000000 | .1818182 + 3 | 3 | 12 | 500 | 1401-06-01 | 1401-06-01 | 212000.0000000 | .2727273 + 1 | 1 | 12 | 500 | 1401-06-01 | 1401-06-01 | 580000.0000000 | .2727273 + 1 | 1 | 1 | 400 | 1401-06-01 | 1401-06-01 | 580000.0000000 | .4545455 + 2 | 2 | 1 | 400 | 1401-06-01 | 1401-06-01 | 394285.7142857 | .4545455 + 1 | 1 | 1 | 300 | 1401-05-02 | 1401-05-02 | 580000.0000000 | .6363636 + 3 | 3 | 1 | 200 | 1401-04-01 | 1401-04-01 | 212000.0000000 | .7272727 + 1 | 1 | 1 | 200 | 1401-03-01 | 1401-03-01 | 580000.0000000 | .7272727 + 1 | 1 | 1 | 100 | 1401-05-01 | 1401-05-01 | 580000.0000000 | .9090909 + 2 | 2 | 1100 | 100 | 1401-01-01 | 1401-01-01 | 394285.7142857 | .9090909 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range floor(ow_sale.cn/ow_sale.qty) preceding ); -- mvd 2->5; + pn | cn | qty | pn | to_char +-----+----+------+-----+------------------- + 800 | 4 | 1 | 800 | .0000000 + 700 | 4 | 1 | 700 | .0000000 + 500 | 3 | 12 | 500 | 66.6666667 + 200 | 3 | 1 | 200 | 105.2000000 + 600 | 3 | 12 | 600 | 66.6666667 + 400 | 2 | 1 | 400 | 309.7142857 + 100 | 2 | 1100 | 100 | 50.0000000 + 300 | 1 | 1 | 300 | 1295.7142857 + 400 | 1 | 1 | 400 | 1295.7142857 + 500 | 1 | 12 | 500 | 880.0000000 + 200 | 1 | 1 | 200 | 1295.7142857 + 100 | 1 | 1 | 100 | 1295.7142857 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range 1 preceding ), +win2 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.cn asc), +win3 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc), +win4 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->2; 5,1,6->4; 5,1,6->7; 5,1,6,3->8; 5,1,6->9; 5->10; + dt | to_char | pn | to_char | cn | vn | to_char | to_char | to_char | to_char +------------+-------------------+-----+-------------------+----+----+-------------------+-------------------+-------------------+------------------- + 1401-01-01 | 200.0000000 | 100 | .0000000 | 2 | 40 | 1.0000000 | .0000000 | 1.0000000 | .0000000 + 1401-03-01 | 450.0000000 | 200 | .0000000 | 1 | 10 | 1.0000000 | .0000000 | 1.0000000 | .0000000 + 1401-04-01 | 450.0000000 | 200 | .0000000 | 3 | 40 | 1.0000000 | .0000000 | 1.0000000 | .0000000 + 1401-05-01 | 200.0000000 | 100 | .0000000 | 1 | 20 | 1.0000000 | .0000000 | 1.0000000 | .0000000 + 1401-05-02 | .0000000 | 300 | .0000000 | 1 | 30 | 1.0000000 | .0000000 | 1.0000000 | .0000000 + 1401-06-01 | .0000000 | 400 | .0000000 | 1 | 50 | 1.0000000 | .0000000 | 1.0000000 | .0000000 + 1401-06-01 | .0000000 | 400 | 1.0000000 | 2 | 50 | 2.0000000 | .0000000 | 2.0000000 | .0000000 + 1401-06-01 | .0000000 | 500 | .0000000 | 1 | 30 | 1.0000000 | .0000000 | 1.0000000 | .0000000 + 1401-06-01 | .0000000 | 500 | .5000000 | 3 | 30 | 3.0000000 | .0000000 | 2.0000000 | .0000000 + 1401-06-01 | .0000000 | 600 | .5000000 | 3 | 30 | 2.0000000 | .0000000 | 2.0000000 | .0000000 + 1401-06-01 | .0000000 | 700 | .0000000 | 4 | 40 | 2.0000000 | .0000000 | 1.0000000 | .0000000 + 1401-06-01 | .0000000 | 800 | .0000000 | 4 | 40 | 1.0000000 | .0000000 | 1.0000000 | .0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range current row ); -- mvd 3->2; + dt | to_char | vn +------------+-------------------+---- + 1401-03-01 | .0000000 | 10 + 1401-05-01 | .0000000 | 20 + 1401-06-01 | 18.7500000 | 30 + 1401-05-02 | 18.7500000 | 30 + 1401-06-01 | 18.7500000 | 30 + 1401-06-01 | 18.7500000 | 30 + 1401-01-01 | 4317601.0000000 | 40 + 1401-06-01 | 4317601.0000000 | 40 + 1401-04-01 | 4317601.0000000 | 40 + 1401-06-01 | 4317601.0000000 | 40 + 1401-06-01 | .0000000 | 50 + 1401-06-01 | .0000000 | 50 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty-ow_sale.vn),floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range current row ), +win2 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 3->2; 3,5,1->4; + pn | to_char | cn | to_char | dt +-----+-------------------+----+-------------------+------------ + 200 | 932.8000000 | 1 | -1.0000000 | 1401-03-01 + 400 | 932.8000000 | 1 | -1.0000000 | 1401-06-01 + 100 | 932.8000000 | 1 | -1.0000000 | 1401-05-01 + 500 | 932.8000000 | 1 | .0000000 | 1401-06-01 + 300 | 932.8000000 | 1 | -1.0000000 | 1401-05-02 + 100 | 614940.5000000 | 2 | .0000000 | 1401-01-01 + 400 | 614940.5000000 | 2 | -1.0000000 | 1401-06-01 + 200 | 294.0000000 | 3 | -1.0000000 | 1401-04-01 + 500 | 294.0000000 | 3 | .0000000 | 1401-06-01 + 600 | 294.0000000 | 3 | .0000000 | 1401-06-01 + 700 | .0000000 | 4 | .0000000 | 1401-06-01 + 800 | .0000000 | 4 | .0000000 | 1401-06-01 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and 2 preceding ); -- mvd 5->4; + dt | vn | cn | to_char | pn +------------+----+----+-------------------+----- + 1401-06-01 | 40 | 4 | .0000000 | 800 + 1401-06-01 | 40 | 4 | .0000000 | 700 + 1401-06-01 | 30 | 3 | .0000000 | 600 + 1401-06-01 | 30 | 1 | 80.6666667 | 500 + 1401-06-01 | 30 | 3 | 80.6666667 | 500 + 1401-06-01 | 50 | 1 | 145.2000000 | 400 + 1401-06-01 | 50 | 2 | 145.2000000 | 400 + 1401-05-02 | 30 | 1 | 207.4285714 | 300 + 1401-03-01 | 10 | 1 | 226.8750000 | 200 + 1401-04-01 | 40 | 3 | 226.8750000 | 200 + 1401-05-01 | 20 | 1 | 254.1000000 | 100 + 1401-01-01 | 40 | 2 | 254.1000000 | 100 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and current row ); -- mvd 3->5; + pn | qty | cn | cn | to_char +-----+------+----+----+------------------- + 200 | 1 | 1 | 1 | 96.8000000 + 100 | 1 | 1 | 1 | 96.8000000 + 300 | 1 | 1 | 1 | 96.8000000 + 400 | 1 | 1 | 1 | 96.8000000 + 500 | 12 | 1 | 1 | 96.8000000 + 100 | 1100 | 2 | 2 | 1031907.7142857 + 400 | 1 | 2 | 2 | 1031907.7142857 + 200 | 1 | 3 | 3 | 1080021.6000000 + 600 | 12 | 3 | 3 | 1080021.6000000 + 500 | 12 | 3 | 3 | 1080021.6000000 + 700 | 1 | 4 | 4 | 1101378.6666667 + 800 | 1 | 4 | 4 | 1101378.6666667 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn-ow_sale.qty),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty-ow_sale.cn) as int),cast (floor(ow_sale.pn+ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.vn asc), +win3 as (order by ow_sale.pn asc); -- mvd 2->4; 2->5; 7->6; + prc | vn | qty | to_char | to_char | to_char | pn +------+----+------+-------------------+-------------------+-------------------+----- + 2400 | 40 | 1100 | 2310621.6000000 | .0000000 | .0000000 | 100 + 0 | 20 | 1 | 5000.0000000 | .0000000 | .0000000 | 100 + 0 | 10 | 1 | .0000000 | .0000000 | .1818182 | 200 + 0 | 40 | 1 | 2310621.6000000 | .0000000 | .1818182 | 200 + 0 | 30 | 1 | 182514.8333333 | .0000000 | .3636364 | 300 + 0 | 50 | 1 | 2331978.6666667 | .0000000 | .4545455 | 400 + 0 | 50 | 1 | 2331978.6666667 | .0000000 | .4545455 | 400 + 5 | 30 | 12 | 182514.8333333 | .0000000 | .6363636 | 500 + 5 | 30 | 12 | 182514.8333333 | .0000000 | .6363636 | 500 + 5 | 30 | 12 | 182514.8333333 | .0000000 | .8181818 | 600 + 1 | 40 | 1 | 2310621.6000000 | .0000000 | .9090909 | 700 + 1 | 40 | 1 | 2310621.6000000 | .0000000 | 1.0000000 | 800 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.prc*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.qty) following ); -- mvd 4->3; + pn | vn | to_char | cn +-----+----+-------------------+---- + 800 | 40 | 212520.0000000 | 4 + 700 | 40 | 212520.0000000 | 4 + 500 | 30 | 599491.6666667 | 3 + 600 | 30 | 599491.6666667 | 3 + 200 | 40 | 390000.0000000 | 3 + 400 | 50 | 599491.6666667 | 2 + 100 | 40 | 599491.6666667 | 2 + 300 | 30 | 599491.6666667 | 1 + 500 | 30 | 599491.6666667 | 1 + 400 | 50 | 599491.6666667 | 1 + 200 | 10 | 599491.6666667 | 1 + 100 | 20 | 599491.6666667 | 1 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn/ow_sale.vn),floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and floor(ow_sale.pn) following ), +win2 as (order by ow_sale.cn desc); -- mvd 4->3; 6->5; + vn | prc | to_char | pn | to_char | cn +----+------+-------------------+-----+-------------------+---- + 40 | 1 | .0000000 | 800 | .1666667 | 4 + 40 | 1 | .0000000 | 700 | .1666667 | 4 + 30 | 5 | .0000000 | 600 | .4166667 | 3 + 30 | 5 | .0000000 | 500 | .4166667 | 3 + 40 | 0 | .0000000 | 200 | .4166667 | 3 + 50 | 0 | .0000000 | 400 | .5833333 | 2 + 40 | 2400 | .0000000 | 100 | .5833333 | 2 + 30 | 5 | .0000000 | 500 | 1.0000000 | 1 + 20 | 0 | .0000000 | 100 | 1.0000000 | 1 + 50 | 0 | .0000000 | 400 | 1.0000000 | 1 + 30 | 0 | .0000000 | 300 | 1.0000000 | 1 + 10 | 0 | .0000000 | 200 | 1.0000000 | 1 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn+ow_sale.qty),floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and unbounded following ); -- mvd 3->2; + pn | to_char | cn +-----+-------------------+---- + 200 | 1115417.0000000 | 1 + 100 | 1115417.0000000 | 1 + 300 | 1115417.0000000 | 1 + 500 | 1115417.0000000 | 1 + 400 | 1115417.0000000 | 1 + 100 | 1115417.0000000 | 2 + 400 | 1115417.0000000 | 2 + 600 | 1115417.0000000 | 3 + 200 | 1115417.0000000 | 3 + 500 | 1115417.0000000 | 3 + 700 | 1115417.0000000 | 4 + 800 | 1115417.0000000 | 4 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty+ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn asc), +win3 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.vn desc), +win4 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.cn desc), +win5 as (order by ow_sale.vn desc); -- mvd 2->4; 2->5; 2->6; 8,1,2->7; 10,11,2,1,3->9; 2->12; + qty | vn | pn | to_char | to_char | to_char | to_char | prc | to_char | cn | dt | to_char +------+----+-----+-------------------+-------------------+-------------------+-------------------+------+-------------------+----+------------+------------------- + 1100 | 40 | 100 | 1491.6666667 | 100.0000000 | .0000000 | .0000000 | 2400 | .0000000 | 2 | 1401-01-01 | 5.0000000 + 1 | 10 | 200 | 1491.6666667 | 100.0000000 | 100.0000000 | .0000000 | 0 | .0000000 | 1 | 1401-03-01 | 12.0000000 + 1 | 40 | 200 | 1491.6666667 | 100.0000000 | .0000000 | .0000000 | 0 | .0000000 | 3 | 1401-04-01 | 6.0000000 + 1 | 20 | 100 | 1491.6666667 | 100.0000000 | 200.0000000 | .0000000 | 0 | .0000000 | 1 | 1401-05-01 | 11.0000000 + 1 | 30 | 300 | 1491.6666667 | 100.0000000 | 100.0000000 | .0000000 | 0 | .0000000 | 1 | 1401-05-02 | 7.0000000 + 1 | 50 | 400 | 1491.6666667 | 100.0000000 | 300.0000000 | .0000000 | 0 | 1.0000000 | 1 | 1401-06-01 | 1.0000000 + 1 | 50 | 400 | 1491.6666667 | 100.0000000 | 300.0000000 | .0000000 | 0 | .0000000 | 2 | 1401-06-01 | 2.0000000 + 12 | 30 | 500 | 1491.6666667 | 100.0000000 | 400.0000000 | .0000000 | 5 | 1.0000000 | 1 | 1401-06-01 | 8.0000000 + 12 | 30 | 500 | 1491.6666667 | 100.0000000 | 400.0000000 | .0000000 | 5 | .0000000 | 3 | 1401-06-01 | 9.0000000 + 12 | 30 | 600 | 1491.6666667 | 100.0000000 | 400.0000000 | .0000000 | 5 | .0000000 | 3 | 1401-06-01 | 10.0000000 + 1 | 40 | 700 | 1491.6666667 | 100.0000000 | 400.0000000 | .0000000 | 1 | .0000000 | 4 | 1401-06-01 | 3.0000000 + 1 | 40 | 800 | 1491.6666667 | 100.0000000 | 500.0000000 | .0000000 | 1 | .0000000 | 4 | 1401-06-01 | 4.0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn/ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 0 preceding and floor(ow_sale.cn) preceding ); -- mvd 1->2; + pn | to_char +-----+------------------- + 100 | .0000000 + 100 | .0000000 + 200 | .0000000 + 200 | .0000000 + 300 | .0000000 + 400 | .0000000 + 400 | .0000000 + 500 | .0000000 + 500 | .0000000 + 600 | .0000000 + 700 | .0000000 + 800 | .0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn-ow_sale.pn),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.prc/ow_sale.cn) preceding and floor(ow_sale.pn*ow_sale.prc) preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.cn asc), +win4 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.dt order by ow_sale.cn asc); -- mvd 8->7; 8->9; 2->10; 1,2,8->11; + dt | cn | qty | qty | dt | pn | to_char | vn | to_char | to_char | to_char +------------+----+------+------+------------+-----+-------------------+----+-------------------+-------------------+------------------- + 1401-03-01 | 1 | 1 | 1 | 1401-03-01 | 200 | .0000000 | 10 | 1.0000000 | .0000000 | 1.0000000 + 1401-06-01 | 1 | 1 | 1 | 1401-06-01 | 400 | .5000000 | 50 | .1666667 | .0000000 | 1.0000000 + 1401-06-01 | 1 | 12 | 12 | 1401-06-01 | 500 | .0000000 | 30 | .8333333 | .0000000 | 1.0000000 + 1401-05-02 | 1 | 1 | 1 | 1401-05-02 | 300 | 46904.0000000 | 30 | .8333333 | .0000000 | 1.0000000 + 1401-05-01 | 1 | 1 | 1 | 1401-05-01 | 100 | .0000000 | 20 | .9166667 | .0000000 | 1.0000000 + 1401-06-01 | 2 | 1 | 1 | 1401-06-01 | 400 | .5000000 | 50 | .1666667 | .4545455 | 1.0000000 + 1401-01-01 | 2 | 1100 | 1100 | 1401-01-01 | 100 | .0000000 | 40 | .5000000 | .4545455 | 1.0000000 + 1401-06-01 | 3 | 12 | 12 | 1401-06-01 | 600 | .0000000 | 30 | .8333333 | .6363636 | 1.0000000 + 1401-06-01 | 3 | 12 | 12 | 1401-06-01 | 500 | .0000000 | 30 | .8333333 | .6363636 | 1.0000000 + 1401-04-01 | 3 | 1 | 1 | 1401-04-01 | 200 | 368102.7500000 | 40 | .5000000 | .6363636 | 1.0000000 + 1401-06-01 | 4 | 1 | 1 | 1401-06-01 | 800 | .0000000 | 40 | .5000000 | .9090909 | 1.0000000 + 1401-06-01 | 4 | 1 | 1 | 1401-06-01 | 700 | .0000000 | 40 | .5000000 | .9090909 | 1.0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.pn-ow_sale.vn) preceding and current row ); -- mvd 1->4; + cn | vn | cn | to_char +----+----+----+------------------- + 4 | 40 | 4 | .0000000 + 4 | 40 | 4 | .0000000 + 3 | 30 | 3 | 120.0000000 + 3 | 40 | 3 | 120.0000000 + 3 | 30 | 3 | 120.0000000 + 2 | 50 | 2 | 285.7142857 + 2 | 40 | 2 | 285.7142857 + 1 | 30 | 1 | 1491.6666667 + 1 | 50 | 1 | 1491.6666667 + 1 | 30 | 1 | 1491.6666667 + 1 | 10 | 1 | 1491.6666667 + 1 | 20 | 1 | 1491.6666667 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn*ow_sale.pn),floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 0 preceding and floor(ow_sale.cn) following ); -- mvd 1->7; + cn | vn | cn | pn | cn | qty | to_char +----+----+----+-----+----+------+------------------- + 1 | 20 | 1 | 100 | 1 | 1 | ########.###### + 1 | 10 | 1 | 200 | 1 | 1 | ########.###### + 1 | 30 | 1 | 300 | 1 | 1 | ########.###### + 1 | 50 | 1 | 400 | 1 | 1 | ########.###### + 1 | 30 | 1 | 500 | 1 | 12 | ########.###### + 2 | 40 | 2 | 100 | 2 | 1100 | ########.###### + 2 | 50 | 2 | 400 | 2 | 1 | ########.###### + 3 | 40 | 3 | 200 | 3 | 1 | ########.###### + 3 | 30 | 3 | 600 | 3 | 12 | ########.###### + 3 | 30 | 3 | 500 | 3 | 12 | ########.###### + 4 | 40 | 4 | 700 | 4 | 1 | 8000000.0000000 + 4 | 40 | 4 | 800 | 4 | 1 | 8000000.0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn*ow_sale.prc),floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.cn/ow_sale.vn) preceding and 0 following ), +win2 as (order by ow_sale.vn asc); -- mvd 1->4; 1->5; 1->6; 1->7; + vn | pn | cn | to_char | to_char | to_char | to_char +----+-----+----+-------------------+-------------------+-------------------+------------------- + 50 | 400 | 2 | .0000000 | 11.0000000 | .9090909 | 11.0000000 + 50 | 400 | 1 | .0000000 | 12.0000000 | .9090909 | 12.0000000 + 40 | 100 | 2 | 17260816.0000000 | 7.0000000 | .5454545 | 7.0000000 + 40 | 700 | 4 | 17260816.0000000 | 8.0000000 | .5454545 | 8.0000000 + 40 | 200 | 3 | 17260816.0000000 | 9.0000000 | .5454545 | 9.0000000 + 40 | 800 | 4 | 17260816.0000000 | 10.0000000 | .5454545 | 10.0000000 + 30 | 600 | 3 | 168.7500000 | 3.0000000 | .1818182 | 3.0000000 + 30 | 300 | 1 | 168.7500000 | 4.0000000 | .1818182 | 4.0000000 + 30 | 500 | 1 | 168.7500000 | 5.0000000 | .1818182 | 5.0000000 + 30 | 500 | 3 | 168.7500000 | 6.0000000 | .1818182 | 6.0000000 + 20 | 100 | 1 | .0000000 | 2.0000000 | .0909091 | 2.0000000 + 10 | 200 | 1 | .0000000 | 1.0000000 | .0000000 | 1.0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.qty+ow_sale.qty) preceding and unbounded following ); -- mvd 1->3; + pn | qty | to_char +-----+------+------------------- + 100 | 1 | 5273252.9166667 + 100 | 1100 | 5273252.9166667 + 200 | 1 | 48.1000000 + 200 | 1 | 48.1000000 + 300 | 1 | 40.8750000 + 400 | 1 | 35.7142857 + 400 | 1 | 35.7142857 + 500 | 12 | 19.2000000 + 500 | 12 | 19.2000000 + 600 | 12 | 10.6666667 + 700 | 1 | .0000000 + 800 | 1 | .0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc),floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.qty order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 3 preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.qty order by ow_sale.vn asc), +win3 as (order by ow_sale.cn desc); -- mvd 4->3; 2,4,6,7->5; 2,4,6,7->8; 2,4,6,7->9; 4->10; + pn | dt | to_char | cn | to_char | vn | qty | to_char | to_char | to_char +-----+------------+-------------------+----+-------------------+----+------+-------------------+-------------------+------------------- + 700 | 1401-06-01 | 5273252.9166667 | 4 | .0000000 | 40 | 1 | 2.0000000 | 1.0000000 | 1.0000000 + 800 | 1401-06-01 | 5273252.9166667 | 4 | .0000000 | 40 | 1 | 2.0000000 | 1.0000000 | 2.0000000 + 200 | 1401-04-01 | 5273252.9166667 | 3 | .0000000 | 40 | 1 | 1.0000000 | 1.0000000 | 3.0000000 + 500 | 1401-06-01 | 5273252.9166667 | 3 | .0000000 | 30 | 12 | 2.0000000 | 1.0000000 | 4.0000000 + 600 | 1401-06-01 | 5273252.9166667 | 3 | .0000000 | 30 | 12 | 2.0000000 | 1.0000000 | 5.0000000 + 400 | 1401-06-01 | 5273252.9166667 | 2 | .0000000 | 50 | 1 | 1.0000000 | 1.0000000 | 6.0000000 + 100 | 1401-01-01 | 5273252.9166667 | 2 | .0000000 | 40 | 1100 | 1.0000000 | 1.0000000 | 7.0000000 + 200 | 1401-03-01 | 5273252.9166667 | 1 | .0000000 | 10 | 1 | 1.0000000 | 1.0000000 | 8.0000000 + 500 | 1401-06-01 | 5273252.9166667 | 1 | .0000000 | 30 | 12 | 1.0000000 | 1.0000000 | 9.0000000 + 100 | 1401-05-01 | 5273252.9166667 | 1 | .0000000 | 20 | 1 | 1.0000000 | 1.0000000 | 10.0000000 + 400 | 1401-06-01 | 5273252.9166667 | 1 | .0000000 | 50 | 1 | 1.0000000 | 1.0000000 | 11.0000000 + 300 | 1401-05-02 | 5273252.9166667 | 1 | .0000000 | 30 | 1 | 1.0000000 | 1.0000000 | 12.0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and current row ); -- mvd 5->4; + pn | prc | vn | to_char | cn +-----+------+----+-------------------+---- + 200 | 0 | 10 | 880.0000000 | 1 + 100 | 0 | 20 | 880.0000000 | 1 + 300 | 0 | 30 | 880.0000000 | 1 + 500 | 5 | 30 | 880.0000000 | 1 + 400 | 0 | 50 | 880.0000000 | 1 + 100 | 2400 | 40 | 50.0000000 | 2 + 400 | 0 | 50 | 50.0000000 | 2 + 600 | 5 | 30 | 66.6666667 | 3 + 200 | 0 | 40 | 66.6666667 | 3 + 500 | 5 | 30 | 66.6666667 | 3 + 700 | 1 | 40 | .0000000 | 4 + 800 | 1 | 40 | .0000000 | 4 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and floor(ow_sale.vn) following ); -- mvd 2->3; + dt | cn | to_char +------------+----+------------------- + 1401-06-01 | 4 | 1101378.6666667 + 1401-06-01 | 4 | 1101378.6666667 + 1401-06-01 | 3 | 1080021.6000000 + 1401-04-01 | 3 | 1080021.6000000 + 1401-06-01 | 3 | 1080021.6000000 + 1401-06-01 | 2 | 1031907.7142857 + 1401-01-01 | 2 | 1031907.7142857 + 1401-05-02 | 1 | 96.8000000 + 1401-06-01 | 1 | 96.8000000 + 1401-06-01 | 1 | 96.8000000 + 1401-03-01 | 1 | 96.8000000 + 1401-05-01 | 1 | 96.8000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn*ow_sale.qty) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and floor(ow_sale.prc) following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.vn desc); -- mvd 3->4; 3->5; 3->6; 1->7; 1->8; 3->9; + vn | prc | cn | to_char | to_char | to_char | to_char | to_char | to_char +----+------+----+-------------------+-------------------+-------------------+-------------------+-------------------+------------------- + 50 | 0 | 2 | .0000000 | .0000000 | 7.0000000 | 1.0000000 | 1.0000000 | .5454545 + 50 | 0 | 1 | .0000000 | .0000000 | 6.0000000 | 1.0000000 | 1.0000000 | .4545455 + 40 | 1 | 4 | .0000000 | .0000000 | 12.0000000 | 3.0000000 | 3.0000000 | 1.0000000 + 40 | 0 | 3 | .0000000 | .0000000 | 3.0000000 | 3.0000000 | 3.0000000 | .1818182 + 40 | 1 | 4 | .0000000 | .0000000 | 11.0000000 | 3.0000000 | 3.0000000 | .9090909 + 40 | 2400 | 2 | 4.0000000 | .0000000 | 1.0000000 | 3.0000000 | 3.0000000 | .0000000 + 30 | 5 | 1 | 15.6666667 | .0000000 | 8.0000000 | 7.0000000 | 7.0000000 | .6363636 + 30 | 5 | 3 | 1.2000000 | .0000000 | 9.0000000 | 7.0000000 | 7.0000000 | .7272727 + 30 | 5 | 3 | 1.2000000 | .0000000 | 10.0000000 | 7.0000000 | 7.0000000 | .8181818 + 30 | 0 | 1 | .0000000 | .0000000 | 5.0000000 | 7.0000000 | 7.0000000 | .3636364 + 20 | 0 | 1 | .0000000 | .0000000 | 4.0000000 | 11.0000000 | 11.0000000 | .2727273 + 10 | 0 | 1 | .0000000 | 40.0000000 | 2.0000000 | 12.0000000 | 12.0000000 | .0909091 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(order by ow_sale.pn asc range between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc); -- mvd 3->2; 5,6,3->4; 3->7; + cn | to_char | pn | to_char | dt | vn | to_char +----+-------------------+-----+-------------------+------------+----+------------------- + 2 | 1101378.6666667 | 100 | .0000000 | 1401-01-01 | 40 | 100.0000000 + 1 | 1101378.6666667 | 100 | .0000000 | 1401-05-01 | 20 | 100.0000000 + 3 | 254.1000000 | 200 | .0000000 | 1401-04-01 | 40 | 200.0000000 + 1 | 254.1000000 | 200 | .0000000 | 1401-03-01 | 10 | 200.0000000 + 1 | 226.8750000 | 300 | .0000000 | 1401-05-02 | 30 | 300.0000000 + 1 | 207.4285714 | 400 | 2.0000000 | 1401-06-01 | 50 | 400.0000000 + 2 | 207.4285714 | 400 | .0000000 | 1401-06-01 | 50 | 400.0000000 + 1 | 145.2000000 | 500 | .0000000 | 1401-06-01 | 30 | 500.0000000 + 3 | 145.2000000 | 500 | .0000000 | 1401-06-01 | 30 | 500.0000000 + 3 | 80.6666667 | 600 | .0000000 | 1401-06-01 | 30 | 600.0000000 + 4 | .0000000 | 700 | .0000000 | 1401-06-01 | 40 | 700.0000000 + 4 | .0000000 | 800 | .0000000 | 1401-06-01 | 40 | 800.0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn*ow_sale.prc),floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 3 following and unbounded following ); -- mvd 1->4; + vn | cn | qty | to_char +----+----+------+------------------- + 50 | 2 | 1 | ########.#### + 50 | 1 | 1 | ########.#### + 40 | 2 | 1100 | 10833333.3333333 + 40 | 4 | 1 | 10833333.3333333 + 40 | 3 | 1 | 10833333.3333333 + 40 | 4 | 1 | 10833333.3333333 + 30 | 3 | 12 | .0000000 + 30 | 1 | 1 | .0000000 + 30 | 1 | 12 | .0000000 + 30 | 3 | 12 | .0000000 + 20 | 1 | 1 | .0000000 + 10 | 1 | 1 | .0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc/ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.pn desc range between 3 following and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 3 following and unbounded following ); -- mvd 3->2; 3->4; 3->5; + prc | to_char | pn | to_char | to_char +------+-------------------+-----+-------------------+------------------- + 1 | 4.1818182 | 800 | 20.0000000 | 11.0000000 + 1 | 3.6000000 | 700 | 20.0000000 | 10.0000000 + 5 | 3.5555556 | 600 | 20.0000000 | 9.0000000 + 5 | 3.4285714 | 500 | 20.0000000 | 7.0000000 + 5 | 3.4285714 | 500 | 20.0000000 | 7.0000000 + 0 | 3.2000000 | 400 | 20.0000000 | 5.0000000 + 0 | 3.2000000 | 400 | 20.0000000 | 5.0000000 + 0 | 3.0000000 | 300 | 20.0000000 | 4.0000000 + 0 | 2.0000000 | 200 | 40.0000000 | 2.0000000 + 0 | 2.0000000 | 200 | 40.0000000 | 2.0000000 + 0 | .0000000 | 100 | .0000000 | .0000000 + 2400 | .0000000 | 100 | .0000000 | .0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc rows unbounded preceding ); -- mvd 3->2; + dt | to_char | pn +------------+-------------------+----- + 1401-01-01 | .0000000 | 100 + 1401-03-01 | 450.0000000 | 200 + 1401-04-01 | 600.0000000 | 200 + 1401-05-01 | 675.0000000 | 100 + 1401-05-02 | 680.0000000 | 300 + 1401-06-01 | 1083.3333333 | 400 + 1401-06-01 | 1371.4285714 | 400 + 1401-06-01 | 1387.5000000 | 500 + 1401-06-01 | 1400.0000000 | 500 + 1401-06-01 | 1410.0000000 | 600 + 1401-06-01 | 1454.5454545 | 700 + 1401-06-01 | 1491.6666667 | 800 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc*ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.pn asc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc*ow_sale.pn) as int),cast (floor(ow_sale.prc+ow_sale.prc) as int),NULL) OVER(win5),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows unbounded preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.prc order by ow_sale.pn desc), +win4 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.pn,ow_sale.dt order by ow_sale.pn asc), +win5 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 6->5; 3->7; 6->8; 10,6->9; 1,12,6->11; 14->13; + dt | dt | vn | vn | to_char | pn | to_char | to_char | to_char | prc | to_char | qty | to_char | cn +------------+------------+----+----+-------------------+-----+-------------------+-------------------+-------------------+------+-------------------+------+-------------------+---- + 1401-06-01 | 1401-06-01 | 50 | 50 | 85085.7142857 | 400 | 1.0000000 | 7.0000000 | .0000000 | 0 | 1.0000000 | 1 | .0000000 | 2 + 1401-06-01 | 1401-06-01 | 50 | 50 | 61750.0000000 | 400 | 2.0000000 | 6.0000000 | .0000000 | 0 | 1.0000000 | 1 | .0000000 | 1 + 1401-06-01 | 1401-06-01 | 40 | 40 | 563491.6666667 | 800 | 3.0000000 | 12.0000000 | .0000000 | 1 | 1.0000000 | 1 | 3000.0000000 | 4 + 1401-04-01 | 1401-04-01 | 40 | 40 | 9266.6666667 | 200 | 4.0000000 | 3.0000000 | .6000000 | 0 | 1.0000000 | 1 | .0000000 | 3 + 1401-06-01 | 1401-06-01 | 40 | 40 | 394000.0000000 | 700 | 5.0000000 | 11.0000000 | 1.0000000 | 1 | 1.0000000 | 1 | 2500.0000000 | 4 + 1401-01-01 | 1401-01-01 | 40 | 40 | .0000000 | 100 | 6.0000000 | 1.0000000 | .0000000 | 2400 | 1.0000000 | 1100 | .0000000 | 2 + 1401-06-01 | 1401-06-01 | 30 | 30 | 144887.5000000 | 500 | 7.0000000 | 8.0000000 | .5000000 | 5 | 1.0000000 | 12 | .0000000 | 1 + 1401-06-01 | 1401-06-01 | 30 | 30 | 191400.0000000 | 500 | 8.0000000 | 9.0000000 | .5000000 | 5 | 1.0000000 | 12 | .0000000 | 3 + 1401-06-01 | 1401-06-01 | 30 | 30 | 274210.0000000 | 600 | 9.0000000 | 10.0000000 | .0000000 | 5 | 1.0000000 | 12 | .0000000 | 3 + 1401-05-02 | 1401-05-02 | 30 | 30 | 29080.0000000 | 300 | 10.0000000 | 5.0000000 | .4000000 | 0 | 1.0000000 | 1 | .0000000 | 1 + 1401-05-01 | 1401-05-01 | 20 | 20 | 11675.0000000 | 100 | 11.0000000 | 4.0000000 | 1.0000000 | 0 | 1.0000000 | 1 | .0000000 | 1 + 1401-03-01 | 1401-03-01 | 10 | 10 | 8450.0000000 | 200 | 12.0000000 | 2.0000000 | .6000000 | 0 | 1.0000000 | 1 | .0000000 | 1 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.vn asc rows floor(ow_sale.prc+ow_sale.vn) preceding ); -- mvd 7,8->6; + qty | pn | qty | qty | dt | to_char | cn | vn +------+-----+------+------+------------+-------------------+----+---- + 1100 | 100 | 1100 | 1100 | 1401-01-01 | .0000000 | 2 | 40 + 1 | 200 | 1 | 1 | 1401-03-01 | 2450.0000000 | 1 | 10 + 1 | 200 | 1 | 1 | 1401-04-01 | 5266.6666667 | 3 | 40 + 1 | 100 | 1 | 1 | 1401-05-01 | 9675.0000000 | 1 | 20 + 1 | 300 | 1 | 1 | 1401-05-02 | 28280.0000000 | 1 | 30 + 1 | 400 | 1 | 1 | 1401-06-01 | 77083.3333333 | 1 | 50 + 1 | 400 | 1 | 1 | 1401-06-01 | 111942.8571429 | 2 | 50 + 12 | 500 | 12 | 12 | 1401-06-01 | 167887.5000000 | 1 | 30 + 12 | 500 | 12 | 12 | 1401-06-01 | 211400.0000000 | 3 | 30 + 12 | 600 | 12 | 12 | 1401-06-01 | 290610.0000000 | 3 | 30 + 1 | 700 | 1 | 1 | 1401-06-01 | 419818.1818182 | 4 | 40 + 1 | 800 | 1 | 1 | 1401-06-01 | 599491.6666667 | 4 | 40 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn+ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn/ow_sale.qty) as int),cast (floor(ow_sale.pn*ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty-ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows floor(ow_sale.vn) preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc), +win4 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->6; 5->7; 3,4,2->8; 5->9; + dt | pn | vn | qty | cn | to_char | to_char | to_char | to_char +------------+-----+----+------+----+-------------------+-------------------+-------------------+------------------- + 1401-01-01 | 100 | 40 | 1100 | 2 | .0000000 | .0000000 | .0000000 | .0000000 + 1401-03-01 | 200 | 10 | 1 | 1 | 5000.0000000 | .0000000 | .0000000 | .0000000 + 1401-04-01 | 200 | 40 | 1 | 3 | 6666.6666667 | .0000000 | .0000000 | -2.0000000 + 1401-05-01 | 100 | 20 | 1 | 1 | 10000.0000000 | .0000000 | .0000000 | .0000000 + 1401-05-02 | 300 | 30 | 1 | 1 | 28000.0000000 | .0000000 | .0000000 | .0000000 + 1401-06-01 | 400 | 50 | 1 | 1 | 68333.3333333 | .0000000 | .0000000 | .0000000 + 1401-06-01 | 400 | 50 | 1 | 2 | 97142.8571429 | .0000000 | .0000000 | -1.0000000 + 1401-06-01 | 500 | 30 | 12 | 1 | 155000.0000000 | .0000000 | .0000000 | .0000000 + 1401-06-01 | 500 | 30 | 12 | 3 | 200000.0000000 | .0000000 | .0000000 | .0000000 + 1401-06-01 | 600 | 30 | 12 | 3 | 281000.0000000 | .0000000 | .0000000 | .0000000 + 1401-06-01 | 700 | 40 | 1 | 4 | 405454.5454545 | .0000000 | .0000000 | -3.0000000 + 1401-06-01 | 800 | 40 | 1 | 4 | 580000.0000000 | .0000000 | .0000000 | .0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.cn asc rows current row ); -- mvd 3,1->5; + pn | pn | cn | cn | to_char +-----+-----+----+----+------------------- + 100 | 100 | 2 | 2 | .0000000 + 200 | 200 | 1 | 1 | .0000000 + 200 | 200 | 3 | 3 | .0000000 + 100 | 100 | 1 | 1 | .0000000 + 300 | 300 | 1 | 1 | .0000000 + 400 | 400 | 1 | 1 | .0000000 + 400 | 400 | 2 | 2 | .0000000 + 500 | 500 | 1 | 1 | .0000000 + 500 | 500 | 3 | 3 | .0000000 + 600 | 600 | 3 | 3 | .0000000 + 700 | 700 | 4 | 4 | .0000000 + 800 | 800 | 4 | 4 | .0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows current row ), +win2 as (order by ow_sale.cn desc); -- mvd 3,1->2; 3,1->4; 3,1->5; 3,1->6; 8->7; + pn | to_char | vn | to_char | to_char | to_char | to_char | cn +-----+-------------------+----+-------------------+-------------------+-------------------+-------------------+---- + 800 | .0000000 | 40 | 1.0000000 | .0000000 | 40.0000000 | 1.0000000 | 4 + 700 | .0000000 | 40 | 1.0000000 | .0000000 | 40.0000000 | 1.0000000 | 4 + 500 | .0000000 | 30 | 1.0000000 | 7.0000000 | 30.0000000 | 3.0000000 | 3 + 200 | .0000000 | 40 | 1.0000000 | 1.0000000 | 40.0000000 | 3.0000000 | 3 + 600 | .0000000 | 30 | 1.0000000 | 7.0000000 | 30.0000000 | 3.0000000 | 3 + 400 | .0000000 | 50 | 1.0000000 | 1.0000000 | 50.0000000 | 6.0000000 | 2 + 100 | .0000000 | 40 | 1.0000000 | -1300.0000000 | 40.0000000 | 6.0000000 | 2 + 500 | .0000000 | 30 | 1.0000000 | 7.0000000 | 30.0000000 | 8.0000000 | 1 + 400 | .0000000 | 50 | 1.0000000 | 1.0000000 | 50.0000000 | 8.0000000 | 1 + 300 | .0000000 | 30 | 1.0000000 | 1.0000000 | 30.0000000 | 8.0000000 | 1 + 100 | .0000000 | 20 | 1.0000000 | 1.0000000 | 20.0000000 | 8.0000000 | 1 + 200 | .0000000 | 10 | 1.0000000 | 1.0000000 | 10.0000000 | 8.0000000 | 1 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn/ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and 1 preceding ); -- mvd 1->4; + cn | dt | pn | to_char +----+------------+-----+------------------- + 2 | 1401-01-01 | 100 | .0000000 + 1 | 1401-03-01 | 200 | .0000000 + 3 | 1401-04-01 | 200 | .0000000 + 1 | 1401-05-01 | 100 | .0000000 + 1 | 1401-05-02 | 300 | .0000000 + 1 | 1401-06-01 | 400 | .0000000 + 2 | 1401-06-01 | 400 | .0000000 + 1 | 1401-06-01 | 500 | .0000000 + 3 | 1401-06-01 | 500 | .0000000 + 3 | 1401-06-01 | 600 | .0000000 + 4 | 1401-06-01 | 700 | .0000000 + 4 | 1401-06-01 | 800 | .0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and current row ); -- mvd 2->5; + dt | vn | cn | dt | to_char +------------+----+----+------------+------------------- + 1401-01-01 | 40 | 2 | 1401-01-01 | .0000000 + 1401-03-01 | 10 | 1 | 1401-03-01 | 603900.5000000 + 1401-04-01 | 40 | 3 | 1401-04-01 | 805200.6666667 + 1401-05-01 | 20 | 1 | 1401-05-01 | 905850.7500000 + 1401-05-02 | 30 | 1 | 1401-05-02 | 966240.8000000 + 1401-06-01 | 50 | 1 | 1401-06-01 | 1006500.8333333 + 1401-06-01 | 50 | 2 | 1401-06-01 | 1035258.0000000 + 1401-06-01 | 30 | 1 | 1401-06-01 | 1053909.5000000 + 1401-06-01 | 30 | 3 | 1401-06-01 | 1068416.2222222 + 1401-06-01 | 30 | 3 | 1401-06-01 | 1080021.6000000 + 1401-06-01 | 40 | 4 | 1401-06-01 | 1091670.9090909 + 1401-06-01 | 40 | 4 | 1401-06-01 | 1101378.6666667 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn-ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc,ow_sale.pn asc rows between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc,ow_sale.pn asc rows between unbounded preceding and current row ); -- mvd 7,8->6; 7,8->9; 7,8->10; + qty | dt | cn | qty | qty | to_char | vn | pn | to_char | to_char +------+------------+----+------+------+-------------------+----+-----+-------------------+------------------- + 1100 | 1401-01-01 | 2 | 1100 | 1100 | .0000000 | 40 | 100 | 1.0000000 | 1100.0000000 + 1 | 1401-03-01 | 1 | 1 | 1 | 8450.0000000 | 10 | 200 | 2.0000000 | 1100.0000000 + 1 | 1401-04-01 | 3 | 1 | 1 | 9266.6666667 | 40 | 200 | 3.0000000 | 1100.0000000 + 1 | 1401-05-01 | 1 | 1 | 1 | 11675.0000000 | 20 | 100 | 4.0000000 | 1100.0000000 + 1 | 1401-05-02 | 1 | 1 | 1 | 29080.0000000 | 30 | 300 | 5.0000000 | 1100.0000000 + 1 | 1401-06-01 | 1 | 1 | 1 | 61750.0000000 | 50 | 400 | 6.0000000 | 1100.0000000 + 1 | 1401-06-01 | 2 | 1 | 1 | 85085.7142857 | 50 | 400 | 7.0000000 | 1100.0000000 + 12 | 1401-06-01 | 1 | 12 | 12 | 144887.5000000 | 30 | 500 | 8.0000000 | 1100.0000000 + 12 | 1401-06-01 | 3 | 12 | 12 | 191400.0000000 | 30 | 500 | 9.0000000 | 1100.0000000 + 12 | 1401-06-01 | 3 | 12 | 12 | 274210.0000000 | 30 | 600 | 10.0000000 | 1100.0000000 + 1 | 1401-06-01 | 4 | 1 | 1 | 394000.0000000 | 40 | 700 | 11.0000000 | 1100.0000000 + 1 | 1401-06-01 | 4 | 1 | 1 | 563491.6666667 | 40 | 800 | 12.0000000 | 1100.0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and floor(ow_sale.qty) following ); -- mvd 5->4; + qty | cn | dt | to_char | pn +------+----+------------+-------------------+----- + 1100 | 2 | 1401-01-01 | 15.6666667 | 100 + 1 | 1 | 1401-03-01 | 2.0000000 | 200 + 1 | 3 | 1401-04-01 | 2.7500000 | 200 + 1 | 1 | 1401-05-01 | 3.2000000 | 100 + 1 | 1 | 1401-05-02 | 3.5000000 | 300 + 1 | 1 | 1401-06-01 | 3.7142857 | 400 + 1 | 2 | 1401-06-01 | 4.0000000 | 400 + 12 | 1 | 1401-06-01 | 15.6666667 | 500 + 12 | 3 | 1401-06-01 | 15.6666667 | 500 + 12 | 3 | 1401-06-01 | 15.6666667 | 600 + 1 | 4 | 1401-06-01 | 15.6666667 | 700 + 1 | 4 | 1401-06-01 | 15.6666667 | 800 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.cn order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.vn+ow_sale.cn) following ), +win2 as (partition by ow_sale.cn order by ow_sale.vn desc), +win3 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc); -- mvd 1->2; 1,4->3; 1,4->5; 7,4,8->6; 1,4->9; + cn | to_char | to_char | vn | to_char | to_char | dt | pn | to_char +----+-------------------+-------------------+----+-------------------+-------------------+------------+-----+------------------- + 2 | 580000.0000000 | 2.0000000 | 40 | 2.0000000 | 1.0000000 | 1401-01-01 | 100 | 2.0000000 + 1 | 580000.0000000 | 4.0000000 | 10 | 1.0000000 | 1.0000000 | 1401-03-01 | 200 | 5.0000000 + 3 | 580000.0000000 | 1.0000000 | 40 | 3.0000000 | 1.0000000 | 1401-04-01 | 200 | 1.0000000 + 1 | 580000.0000000 | 3.0000000 | 20 | 1.0000000 | 1.0000000 | 1401-05-01 | 100 | 4.0000000 + 1 | 580000.0000000 | 2.0000000 | 30 | 1.0000000 | 1.0000000 | 1401-05-02 | 300 | 2.0000000 + 1 | 580000.0000000 | 1.0000000 | 50 | 1.0000000 | 1.0000000 | 1401-06-01 | 400 | 1.0000000 + 2 | 580000.0000000 | 1.0000000 | 50 | 2.0000000 | 1.0000000 | 1401-06-01 | 400 | 1.0000000 + 1 | 580000.0000000 | 2.0000000 | 30 | 1.0000000 | 1.0000000 | 1401-06-01 | 500 | 3.0000000 + 3 | 580000.0000000 | 2.0000000 | 30 | 3.0000000 | 1.0000000 | 1401-06-01 | 500 | 3.0000000 + 3 | 580000.0000000 | 2.0000000 | 30 | 3.0000000 | 1.0000000 | 1401-06-01 | 600 | 2.0000000 + 4 | 580000.0000000 | 1.0000000 | 40 | 4.0000000 | 1.0000000 | 1401-06-01 | 700 | 1.0000000 + 4 | 580000.0000000 | 1.0000000 | 40 | 4.0000000 | 1.0000000 | 1401-06-01 | 800 | 2.0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc+ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between unbounded preceding and unbounded following ); -- mvd 7->6; + pn | cn | pn | cn | pn | to_char | vn +-----+----+-----+----+-----+-------------------+---- + 100 | 2 | 100 | 2 | 100 | 5302642.9166667 | 40 + 200 | 1 | 200 | 1 | 200 | 5302642.9166667 | 10 + 200 | 3 | 200 | 3 | 200 | 5302642.9166667 | 40 + 100 | 1 | 100 | 1 | 100 | 5302642.9166667 | 20 + 300 | 1 | 300 | 1 | 300 | 5302642.9166667 | 30 + 400 | 1 | 400 | 1 | 400 | 5302642.9166667 | 50 + 400 | 2 | 400 | 2 | 400 | 5302642.9166667 | 50 + 500 | 1 | 500 | 1 | 500 | 5302642.9166667 | 30 + 500 | 3 | 500 | 3 | 500 | 5302642.9166667 | 30 + 600 | 3 | 600 | 3 | 600 | 5302642.9166667 | 30 + 700 | 4 | 700 | 4 | 700 | 5302642.9166667 | 40 + 800 | 4 | 800 | 4 | 800 | 5302642.9166667 | 40 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn+ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.cn asc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.pn desc); -- mvd 4,1->3; 4->5; 7->6; + vn | qty | to_char | cn | to_char | to_char | pn +----+------+-------------------+----+-------------------+-------------------+----- + 40 | 1 | 599491.6666667 | 4 | .1666667 | 1.0000000 | 800 + 40 | 1 | 599491.6666667 | 4 | .1666667 | 2.0000000 | 700 + 30 | 12 | 599491.6666667 | 3 | .4166667 | 3.0000000 | 600 + 30 | 12 | 599491.6666667 | 1 | 1.0000000 | 4.0000000 | 500 + 30 | 12 | 599491.6666667 | 3 | .4166667 | 4.0000000 | 500 + 50 | 1 | 599491.6666667 | 2 | .5833333 | 6.0000000 | 400 + 50 | 1 | 599491.6666667 | 1 | 1.0000000 | 6.0000000 | 400 + 30 | 1 | 599491.6666667 | 1 | 1.0000000 | 8.0000000 | 300 + 10 | 1 | 599491.6666667 | 1 | 1.0000000 | 9.0000000 | 200 + 40 | 1 | 599491.6666667 | 3 | .4166667 | 9.0000000 | 200 + 20 | 1 | 599491.6666667 | 1 | 1.0000000 | 11.0000000 | 100 + 40 | 1100 | 599491.6666667 | 2 | .5833333 | 11.0000000 | 100 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn asc rows between 0 preceding and 7 preceding ); -- mvd 3,4->2; + dt | to_char | vn | pn +------------+-------------------+----+----- + 1401-01-01 | .0000000 | 40 | 100 + 1401-03-01 | .0000000 | 10 | 200 + 1401-04-01 | .0000000 | 40 | 200 + 1401-05-01 | .0000000 | 20 | 100 + 1401-05-02 | .0000000 | 30 | 300 + 1401-06-01 | .0000000 | 50 | 400 + 1401-06-01 | .0000000 | 50 | 400 + 1401-06-01 | .0000000 | 30 | 500 + 1401-06-01 | .0000000 | 30 | 500 + 1401-06-01 | .0000000 | 30 | 600 + 1401-06-01 | .0000000 | 40 | 700 + 1401-06-01 | .0000000 | 40 | 800 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn*ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between 1 preceding and floor(ow_sale.prc) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between 1 preceding and floor(ow_sale.prc) preceding ); -- mvd 6->5; 6->7; + dt | cn | prc | prc | to_char | vn | to_char +------------+----+------+------+-------------------+----+------------------- + 1401-01-01 | 2 | 2400 | 2400 | .0000000 | 40 | .0000000 + 1401-03-01 | 1 | 0 | 0 | 4.5000000 | 10 | 2.0000000 + 1401-04-01 | 3 | 0 | 0 | 32.0000000 | 40 | 2.0000000 + 1401-05-01 | 1 | 0 | 0 | 32.0000000 | 20 | 2.0000000 + 1401-05-02 | 1 | 0 | 0 | .0000000 | 30 | 2.0000000 + 1401-06-01 | 1 | 0 | 0 | .0000000 | 50 | 2.0000000 + 1401-06-01 | 2 | 0 | 0 | 4.5000000 | 50 | 2.0000000 + 1401-06-01 | 1 | 5 | 5 | .0000000 | 30 | .0000000 + 1401-06-01 | 3 | 5 | 5 | .0000000 | 30 | .0000000 + 1401-06-01 | 3 | 5 | 5 | .0000000 | 30 | .0000000 + 1401-06-01 | 4 | 1 | 1 | .0000000 | 40 | 1.0000000 + 1401-06-01 | 4 | 1 | 1 | .0000000 | 40 | 1.0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between floor(ow_sale.pn-ow_sale.vn) preceding and current row ); -- mvd 4->3; + vn | dt | to_char | cn +----+------------+-------------------+---- + 40 | 1401-01-01 | .0000000 | 2 + 10 | 1401-03-01 | 603900.5000000 | 1 + 40 | 1401-04-01 | 805200.6666667 | 3 + 20 | 1401-05-01 | 905850.7500000 | 1 + 30 | 1401-05-02 | 966240.8000000 | 1 + 50 | 1401-06-01 | 1006500.8333333 | 1 + 50 | 1401-06-01 | 1035258.0000000 | 2 + 30 | 1401-06-01 | 1053909.5000000 | 1 + 30 | 1401-06-01 | 1068416.2222222 | 3 + 30 | 1401-06-01 | 1080021.6000000 | 3 + 40 | 1401-06-01 | 1091670.9090909 | 4 + 40 | 1401-06-01 | 1101378.6666667 | 4 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between 4 preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between 4 preceding and current row ), +win2 as (order by ow_sale.vn desc); -- mvd 3,4->2; 3,4->5; 4->6; 3,4->7; + pn | to_char | cn | vn | to_char | to_char | to_char +-----+-------------------+----+----+-------------------+-------------------+------------------- + 400 | .0000000 | 2 | 50 | 5.0000000 | 1.0000000 | 1.0000000 + 400 | .0000000 | 1 | 50 | 5.0000000 | 1.0000000 | 1.0000000 + 800 | 145.2000000 | 4 | 40 | 5.0000000 | 3.0000000 | 1.0000000 + 200 | 805200.6666667 | 3 | 40 | 3.0000000 | 3.0000000 | 1.0000000 + 700 | 145.2000000 | 4 | 40 | 5.0000000 | 3.0000000 | 1.0000000 + 100 | .0000000 | 2 | 40 | 1.0000000 | 3.0000000 | 2.0000000 + 500 | 96.8000000 | 1 | 30 | 5.0000000 | 7.0000000 | 1.0000000 + 500 | 145.2000000 | 3 | 30 | 5.0000000 | 7.0000000 | 1.0000000 + 600 | 145.2000000 | 3 | 30 | 5.0000000 | 7.0000000 | 1.0000000 + 300 | 966240.8000000 | 1 | 30 | 5.0000000 | 7.0000000 | 1.0000000 + 100 | 905850.7500000 | 1 | 20 | 4.0000000 | 11.0000000 | 1.0000000 + 200 | 603900.5000000 | 1 | 10 | 2.0000000 | 12.0000000 | 1.0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc),floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows between floor(ow_sale.cn/ow_sale.vn) preceding and floor(ow_sale.prc) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows between floor(ow_sale.cn/ow_sale.vn) preceding and floor(ow_sale.prc) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty*ow_sale.qty) as int),cast (floor(ow_sale.vn+ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows between floor(ow_sale.cn/ow_sale.vn) preceding and floor(ow_sale.prc) following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc); -- mvd 2,4->3; 2,4->5; 2,4->6; 8,2,9,4->7; + prc | cn | to_char | pn | to_char | to_char | to_char | dt | vn +------+----+-------------------+-----+-------------------+-------------------+-------------------+------------+---- + 2400 | 2 | 5273252.9166667 | 100 | .0000000 | 50.0000000 | .0000000 | 1401-01-01 | 40 + 0 | 1 | .0000000 | 200 | .0000000 | 10.0000000 | .0000000 | 1401-03-01 | 10 + 0 | 3 | .0000000 | 200 | .0000000 | 40.0000000 | .0000000 | 1401-04-01 | 40 + 0 | 1 | .0000000 | 100 | .0000000 | 20.0000000 | .0000000 | 1401-05-01 | 20 + 0 | 1 | .0000000 | 300 | .0000000 | 30.0000000 | .0000000 | 1401-05-02 | 30 + 0 | 1 | .0000000 | 400 | .0000000 | 50.0000000 | .0000000 | 1401-06-01 | 50 + 0 | 2 | .0000000 | 400 | .0000000 | 50.0000000 | .0000000 | 1401-06-01 | 50 + 5 | 1 | 19.2000000 | 500 | .0000000 | 40.0000000 | .0000000 | 1401-06-01 | 30 + 5 | 3 | 16.0000000 | 500 | .0000000 | 40.0000000 | .0000000 | 1401-06-01 | 30 + 5 | 3 | 10.6666667 | 600 | .0000000 | 40.0000000 | .0000000 | 1401-06-01 | 30 + 1 | 4 | .0000000 | 700 | .0000000 | 40.0000000 | .0000000 | 1401-06-01 | 40 + 1 | 4 | .0000000 | 800 | .0000000 | 40.0000000 | .0000000 | 1401-06-01 | 40 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn-ow_sale.pn),floor(ow_sale.pn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.prc+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.cn)) OVER(partition by ow_sale.dt order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc,ow_sale.cn desc rows between 1 preceding and unbounded following ), +win2 as (partition by ow_sale.dt order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 3->2; 3,5->4; 1->6; 3,5->7; 3,5->8; + vn | to_char | cn | to_char | dt | to_char | to_char | to_char +----+-------------------+----+-------------------+------------+-------------------+-------------------+------------------- + 40 | .0000000 | 2 | 1.0000000 | 1401-01-01 | .0000000 | 2402.0000000 | 100.0000000 + 10 | .0000000 | 1 | 1.0000000 | 1401-03-01 | 2400.0000000 | 1.0000000 | 200.0000000 + 40 | .0000000 | 3 | 1.0000000 | 1401-04-01 | .0000000 | 3.0000000 | 200.0000000 + 20 | .0000000 | 1 | 1.0000000 | 1401-05-01 | .0000000 | 1.0000000 | 100.0000000 + 30 | .0000000 | 1 | 1.0000000 | 1401-05-02 | .0000000 | 1.0000000 | 300.0000000 + 50 | .0000000 | 1 | 1.0000000 | 1401-06-01 | .0000000 | 6.0000000 | 400.0000000 + 50 | .0000000 | 2 | 2.0000000 | 1401-06-01 | .0000000 | 6.0000000 | 400.0000000 + 30 | .0000000 | 1 | 1.0000000 | 1401-06-01 | .0000000 | 6.0000000 | 400.0000000 + 30 | .0000000 | 3 | 3.0000000 | 1401-06-01 | 2400.0000000 | 8.0000000 | 400.0000000 + 30 | .0000000 | 3 | 3.0000000 | 1401-06-01 | .0000000 | 8.0000000 | 400.0000000 + 40 | .0000000 | 4 | 4.0000000 | 1401-06-01 | .0000000 | 8.0000000 | 400.0000000 + 40 | .0000000 | 4 | 4.0000000 | 1401-06-01 | .0000000 | 8.0000000 | 400.0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn*ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between current row and current row ); -- mvd 4->6; + cn | dt | cn | vn | qty | to_char +----+------------+----+----+------+------------------- + 2 | 1401-01-01 | 2 | 40 | 1100 | .0000000 + 1 | 1401-03-01 | 1 | 10 | 1 | .0000000 + 3 | 1401-04-01 | 3 | 40 | 1 | .0000000 + 1 | 1401-05-01 | 1 | 20 | 1 | .0000000 + 1 | 1401-05-02 | 1 | 30 | 1 | .0000000 + 1 | 1401-06-01 | 1 | 50 | 1 | .0000000 + 2 | 1401-06-01 | 2 | 50 | 1 | .0000000 + 1 | 1401-06-01 | 1 | 30 | 12 | .0000000 + 3 | 1401-06-01 | 3 | 30 | 12 | .0000000 + 3 | 1401-06-01 | 3 | 30 | 12 | .0000000 + 4 | 1401-06-01 | 4 | 40 | 1 | .0000000 + 4 | 1401-06-01 | 4 | 40 | 1 | .0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc rows between current row and current row ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc), +win4 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,4->2; 3->5; 7,8,1,3->6; 8,3,4->9; 7,8,1,3->10; + cn | to_char | vn | pn | to_char | to_char | prc | dt | to_char | to_char +----+-------------------+----+-----+-------------------+-------------------+------+------------+-------------------+------------------- + 2 | .0000000 | 50 | 400 | .1666667 | 1.0000000 | 0 | 1401-06-01 | .0000000 | 1.0000000 + 1 | .0000000 | 50 | 400 | .1666667 | 1.0000000 | 0 | 1401-06-01 | .0000000 | 1.0000000 + 4 | .0000000 | 40 | 800 | .5000000 | 1.0000000 | 1 | 1401-06-01 | .0000000 | 1.0000000 + 3 | .0000000 | 40 | 200 | .5000000 | 1.0000000 | 0 | 1401-04-01 | .0000000 | 1.0000000 + 4 | .0000000 | 40 | 700 | .5000000 | 2.0000000 | 1 | 1401-06-01 | .0000000 | 1.0000000 + 2 | .0000000 | 40 | 100 | .5000000 | 1.0000000 | 2400 | 1401-01-01 | .0000000 | 1.0000000 + 1 | .0000000 | 30 | 500 | .8333333 | 1.0000000 | 5 | 1401-06-01 | .0000000 | 1.0000000 + 3 | .0000000 | 30 | 500 | .8333333 | 1.0000000 | 5 | 1401-06-01 | .0000000 | 1.0000000 + 3 | .0000000 | 30 | 600 | .8333333 | 2.0000000 | 5 | 1401-06-01 | .0000000 | 1.0000000 + 1 | .0000000 | 30 | 300 | .8333333 | 1.0000000 | 0 | 1401-05-02 | .0000000 | 1.0000000 + 1 | .0000000 | 20 | 100 | .9166667 | 1.0000000 | 0 | 1401-05-01 | .0000000 | 1.0000000 + 1 | .0000000 | 10 | 200 | 1.0000000 | 1.0000000 | 0 | 1401-03-01 | .0000000 | 1.0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between current row and 9 following ); -- mvd 4->5; + cn | vn | dt | pn | to_char +----+----+------------+-----+------------------- + 2 | 40 | 1401-01-01 | 100 | 7.6000000 + 1 | 10 | 1401-03-01 | 200 | 12.0000000 + 3 | 40 | 1401-04-01 | 200 | 14.1000000 + 1 | 20 | 1401-05-01 | 100 | 13.5555556 + 1 | 30 | 1401-05-02 | 300 | 11.8750000 + 1 | 50 | 1401-06-01 | 400 | 9.7142857 + 2 | 50 | 1401-06-01 | 400 | 6.8333333 + 1 | 30 | 1401-06-01 | 500 | 6.0000000 + 3 | 30 | 1401-06-01 | 500 | 1.0000000 + 3 | 30 | 1401-06-01 | 600 | .6666667 + 4 | 40 | 1401-06-01 | 700 | .0000000 + 4 | 40 | 1401-06-01 | 800 | .0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc),floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between current row and unbounded following ); -- mvd 2->3; + prc | cn | to_char +------+----+------------------- + 2400 | 2 | 5273252.9166667 + 0 | 1 | 50.7272727 + 0 | 3 | 48.1000000 + 0 | 1 | 44.8888889 + 0 | 1 | 40.8750000 + 0 | 1 | 35.7142857 + 0 | 2 | 28.8333333 + 5 | 1 | 19.2000000 + 5 | 3 | 16.0000000 + 5 | 3 | 10.6666667 + 1 | 4 | .0000000 + 1 | 4 | .0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.cn)) OVER(partition by ow_sale.prc,ow_sale.prc,ow_sale.pn order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.prc,ow_sale.prc,ow_sale.pn order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.pn desc rows between current row and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.pn order by ow_sale.vn asc); -- mvd 2,3->5; 4,7,3->6; 4,7,3->8; 4,7,3->9; + dt | cn | pn | prc | to_char | to_char | vn | to_char | to_char +------------+----+-----+------+-------------------+-------------------+----+-------------------+------------------- + 1401-01-01 | 2 | 100 | 2400 | 15.6666667 | 1.0000000 | 40 | 1.0000000 | .0000000 + 1401-03-01 | 1 | 200 | 0 | 15.6363636 | 1.0000000 | 10 | 1.0000000 | .0000000 + 1401-04-01 | 3 | 200 | 0 | 14.1000000 | 2.0000000 | 40 | 2.0000000 | 1.0000000 + 1401-05-01 | 1 | 100 | 0 | 13.5555556 | 1.0000000 | 20 | 1.0000000 | .0000000 + 1401-05-02 | 1 | 300 | 0 | 11.8750000 | 1.0000000 | 30 | 1.0000000 | .0000000 + 1401-06-01 | 1 | 400 | 0 | 9.7142857 | 2.0000000 | 50 | 2.0000000 | .0000000 + 1401-06-01 | 2 | 400 | 0 | 6.8333333 | 1.0000000 | 50 | 2.0000000 | .0000000 + 1401-06-01 | 1 | 500 | 5 | 6.0000000 | 1.0000000 | 30 | 2.0000000 | .0000000 + 1401-06-01 | 3 | 500 | 5 | 1.0000000 | 2.0000000 | 30 | 2.0000000 | .0000000 + 1401-06-01 | 3 | 600 | 5 | .6666667 | 1.0000000 | 30 | 1.0000000 | .0000000 + 1401-06-01 | 4 | 700 | 1 | .0000000 | 1.0000000 | 40 | 1.0000000 | .0000000 + 1401-06-01 | 4 | 800 | 1 | .0000000 | 1.0000000 | 40 | 1.0000000 | .0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn+ow_sale.prc),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 7 following and 5 following ); -- mvd 5->4; + prc | qty | pn | to_char | cn +------+------+-----+-------------------+---- + 2400 | 1100 | 100 | .0000000 | 2 + 0 | 1 | 200 | .0000000 | 1 + 0 | 1 | 200 | .0000000 | 3 + 0 | 1 | 100 | .0000000 | 1 + 0 | 1 | 300 | .0000000 | 1 + 0 | 1 | 400 | .0000000 | 1 + 0 | 1 | 400 | .0000000 | 2 + 5 | 12 | 500 | .0000000 | 1 + 5 | 12 | 500 | .0000000 | 3 + 5 | 12 | 600 | .0000000 | 3 + 1 | 1 | 700 | .0000000 | 4 + 1 | 1 | 800 | .0000000 | 4 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn+ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc rows between 4 following and floor(ow_sale.cn) following ), +win2 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,4->2; 4->5; + qty | to_char | cn | pn | to_char +------+-------------------+----+-----+------------------- + 1100 | .0000000 | 2 | 100 | 3.0000000 + 1 | .0000000 | 1 | 200 | 3.0000000 + 1 | .0000000 | 3 | 200 | 1.0000000 + 1 | .0000000 | 1 | 100 | 1.0000000 + 1 | .0000000 | 1 | 300 | 1.0000000 + 1 | .0000000 | 1 | 400 | 2.0000000 + 1 | .0000000 | 2 | 400 | 3.0000000 + 12 | .0000000 | 1 | 500 | 3.0000000 + 12 | .0000000 | 3 | 500 | 4.0000000 + 12 | .0000000 | 3 | 600 | .0000000 + 1 | .0000000 | 4 | 700 | .0000000 + 1 | .0000000 | 4 | 800 | .0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn*ow_sale.vn),floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between 4 following and unbounded following ); -- mvd 1->4; + cn | pn | vn | to_char +----+-----+----+------------------- + 2 | 100 | 40 | ########.###### + 1 | 200 | 10 | ########.###### + 3 | 200 | 40 | ########.###### + 1 | 100 | 20 | ########.###### + 1 | 300 | 30 | ########.###### + 1 | 400 | 50 | ########.###### + 2 | 400 | 50 | 8000000.0000000 + 1 | 500 | 30 | .0000000 + 3 | 500 | 30 | .0000000 + 3 | 600 | 30 | .0000000 + 4 | 700 | 40 | .0000000 + 4 | 800 | 40 | .0000000 +(12 rows) + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn+ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty+ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between floor(ow_sale.pn) following and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.vn asc), +win3 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 8,4->7; 8,4->9; 8,11,4,1->10; 1->12; 8,11,4,1->13; 8,4->14; + pn | prc | pn | vn | vn | vn | to_char | cn | to_char | to_char | dt | to_char | to_char | to_char +-----+------+-----+----+----+----+-------------------+----+-------------------+-------------------+------------+-------------------+-------------------+------------------- + 100 | 2400 | 100 | 40 | 40 | 40 | .0000000 | 2 | 1.0000000 | .0000000 | 1401-01-01 | .0000000 | 1.0000000 | 1.0000000 + 200 | 0 | 200 | 10 | 10 | 10 | .0000000 | 1 | 1.0000000 | .0000000 | 1401-03-01 | 40.0000000 | 1.0000000 | 1.0000000 + 200 | 0 | 200 | 40 | 40 | 40 | .0000000 | 3 | 1.0000000 | .0000000 | 1401-04-01 | 10.0000000 | 1.0000000 | 1.0000000 + 100 | 0 | 100 | 20 | 20 | 20 | .0000000 | 1 | 1.0000000 | .0000000 | 1401-05-01 | 40.0000000 | 1.0000000 | 1.0000000 + 300 | 0 | 300 | 30 | 30 | 30 | .0000000 | 1 | 1.0000000 | .0000000 | 1401-05-02 | 20.0000000 | 1.0000000 | 1.0000000 + 400 | 0 | 400 | 50 | 50 | 50 | .0000000 | 1 | 1.0000000 | 1.0000000 | 1401-06-01 | 30.0000000 | .5000000 | 1.0000000 + 400 | 0 | 400 | 50 | 50 | 50 | .0000000 | 2 | 1.0000000 | .0000000 | 1401-06-01 | 50.0000000 | 1.0000000 | 1.0000000 + 500 | 5 | 500 | 30 | 30 | 30 | .0000000 | 1 | 1.0000000 | .0000000 | 1401-06-01 | .0000000 | .5000000 | 1.0000000 + 500 | 5 | 500 | 30 | 30 | 30 | .0000000 | 3 | 1.0000000 | .0000000 | 1401-06-01 | .0000000 | 1.0000000 | 1.0000000 + 600 | 5 | 600 | 30 | 30 | 30 | .0000000 | 3 | 1.0000000 | .0000000 | 1401-06-01 | .0000000 | 1.0000000 | 1.0000000 + 700 | 1 | 700 | 40 | 40 | 40 | .0000000 | 4 | 1.0000000 | .0000000 | 1401-06-01 | 30.0000000 | 1.0000000 | 1.0000000 + 800 | 1 | 800 | 40 | 40 | 40 | .0000000 | 4 | 1.0000000 | .0000000 | 1401-06-01 | 30.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_SYY() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.pn asc,ow_sale.cn desc,ow_sale.vn desc); -- mvd 5,6,7->4; + qty | qty | qty | to_char | cn | vn | pn +------+------+------+-------------------+----+----+----- + 1 | 1 | 1 | .0000000 | 1 | 10 | 200 + 1 | 1 | 1 | .0000000 | 1 | 20 | 100 + 1 | 1 | 1 | .0000000 | 1 | 30 | 300 + 12 | 12 | 12 | .0000000 | 1 | 30 | 500 + 1 | 1 | 1 | .0000000 | 1 | 50 | 400 + 12 | 12 | 12 | .0000000 | 3 | 30 | 500 + 12 | 12 | 12 | .0000000 | 3 | 30 | 600 + 1 | 1 | 1 | .0000000 | 3 | 40 | 200 + 1100 | 1100 | 1100 | .0000000 | 2 | 40 | 100 + 1 | 1 | 1 | .0000000 | 2 | 50 | 400 + 1 | 1 | 1 | .0000000 | 4 | 40 | 700 + 1 | 1 | 1 | .0000000 | 4 | 40 | 800 +(12 rows) + +-- REGR_SYY() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc,ow_sale.pn desc,ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc,ow_sale.pn desc,ow_sale.cn asc); -- mvd 4,1,5->3; 4,1,5->6; 4,1,5->7; 4,1,5->8; + vn | vn | to_char | cn | pn | to_char | to_char | to_char +----+----+-------------------+----+-----+-------------------+-------------------+------------------- + 30 | 30 | .0000000 | 1 | 300 | 1.0000000 | 1.0000000 | .0000000 + 50 | 50 | .0000000 | 2 | 400 | 1.0000000 | 1.0000000 | .0000000 + 50 | 50 | .0000000 | 1 | 400 | 2.0000000 | 2.0000000 | 1.0000000 + 30 | 30 | .0000000 | 3 | 500 | 1.0000000 | 1.0000000 | .0000000 + 30 | 30 | .0000000 | 1 | 500 | 2.0000000 | 2.0000000 | 1.0000000 + 40 | 40 | .0000000 | 4 | 800 | 1.0000000 | 1.0000000 | .0000000 + 20 | 20 | .0000000 | 1 | 100 | 1.0000000 | 1.0000000 | .0000000 + 40 | 40 | .0000000 | 2 | 100 | 1.0000000 | 1.0000000 | .0000000 + 10 | 10 | .0000000 | 1 | 200 | 1.0000000 | 1.0000000 | .0000000 + 40 | 40 | .0000000 | 3 | 200 | 1.0000000 | 1.0000000 | .0000000 + 30 | 30 | .0000000 | 3 | 600 | 1.0000000 | 1.0000000 | .0000000 + 40 | 40 | .0000000 | 4 | 700 | 1.0000000 | 1.0000000 | .0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.qty,ow_sale.dt order by ow_sale.pn asc range unbounded preceding ); -- mvd 3,4,5,1,6->2; + vn | to_char | prc | dt | qty | pn +----+-------------------+------+------------+------+----- + 20 | .0000000 | 0 | 1401-05-01 | 1 | 100 + 40 | .0000000 | 0 | 1401-04-01 | 1 | 200 + 40 | .0000000 | 1 | 1401-06-01 | 1 | 700 + 40 | .0000000 | 1 | 1401-06-01 | 1 | 800 + 30 | .0000000 | 5 | 1401-06-01 | 12 | 500 + 30 | .0000000 | 5 | 1401-06-01 | 12 | 500 + 30 | .0000000 | 5 | 1401-06-01 | 12 | 600 + 10 | .0000000 | 0 | 1401-03-01 | 1 | 200 + 30 | .0000000 | 0 | 1401-05-02 | 1 | 300 + 50 | .0000000 | 0 | 1401-06-01 | 1 | 400 + 50 | .0000000 | 0 | 1401-06-01 | 1 | 400 + 40 | .0000000 | 2400 | 1401-01-01 | 1100 | 100 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.pn desc range 3 preceding ); -- mvd 3,4,5,6->2; + cn | to_char | prc | dt | vn | pn +----+-------------------+------+------------+----+----- + 1 | .0000000 | 0 | 1401-03-01 | 10 | 200 + 1 | .0000000 | 0 | 1401-05-02 | 30 | 300 + 3 | .0000000 | 5 | 1401-06-01 | 30 | 600 + 3 | .0000000 | 5 | 1401-06-01 | 30 | 500 + 1 | .0000000 | 5 | 1401-06-01 | 30 | 500 + 2 | .0000000 | 0 | 1401-06-01 | 50 | 400 + 1 | .0000000 | 0 | 1401-06-01 | 50 | 400 + 1 | .0000000 | 0 | 1401-05-01 | 20 | 100 + 2 | .0000000 | 2400 | 1401-01-01 | 40 | 100 + 3 | .0000000 | 0 | 1401-04-01 | 40 | 200 + 4 | .0000000 | 1 | 1401-06-01 | 40 | 800 + 4 | .0000000 | 1 | 1401-06-01 | 40 | 700 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(partition by ow_sale.qty order by ow_sale.pn asc range 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc*ow_sale.vn)) OVER(partition by ow_sale.qty order by ow_sale.pn asc range 1 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.pn asc range 1 preceding ); -- mvd 2,3->7; 2,3->8; 2,3->9; + prc | qty | pn | qty | prc | qty | to_char | to_char | to_char +------+------+-----+------+------+------+-------------------+-------------------+------------------- + 0 | 1 | 100 | 1 | 0 | 1 | .0000000 | 100.0000000 | .0000000 + 0 | 1 | 200 | 1 | 0 | 1 | 450.0000000 | 200.0000000 | .0000000 + 0 | 1 | 200 | 1 | 0 | 1 | 450.0000000 | 200.0000000 | .0000000 + 0 | 1 | 300 | 1 | 0 | 1 | .0000000 | 300.0000000 | .0000000 + 0 | 1 | 400 | 1 | 0 | 1 | .0000000 | 400.0000000 | .0000000 + 0 | 1 | 400 | 1 | 0 | 1 | .0000000 | 400.0000000 | .0000000 + 1 | 1 | 700 | 1 | 1 | 1 | .0000000 | 700.0000000 | 40.0000000 + 1 | 1 | 800 | 1 | 1 | 1 | .0000000 | 800.0000000 | 40.0000000 + 5 | 12 | 500 | 12 | 5 | 12 | .0000000 | 500.0000000 | 150.0000000 + 5 | 12 | 500 | 12 | 5 | 12 | .0000000 | 500.0000000 | 150.0000000 + 5 | 12 | 600 | 12 | 5 | 12 | .0000000 | 600.0000000 | 150.0000000 + 2400 | 1100 | 100 | 1100 | 2400 | 1100 | .0000000 | 100.0000000 | 96000.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.vn desc range current row ); -- mvd 3,5->4; + cn | dt | vn | to_char | pn +----+------------+----+-------------------+----- + 1 | 1401-05-02 | 30 | .0000000 | 300 + 1 | 1401-06-01 | 30 | .0000000 | 500 + 3 | 1401-06-01 | 30 | .0000000 | 500 + 4 | 1401-06-01 | 40 | .0000000 | 800 + 2 | 1401-06-01 | 50 | .0000000 | 400 + 1 | 1401-06-01 | 50 | .0000000 | 400 + 1 | 1401-03-01 | 10 | .0000000 | 200 + 1 | 1401-05-01 | 20 | .0000000 | 100 + 3 | 1401-06-01 | 30 | .0000000 | 600 + 2 | 1401-01-01 | 40 | .0000000 | 100 + 3 | 1401-04-01 | 40 | .0000000 | 200 + 4 | 1401-06-01 | 40 | .0000000 | 700 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn-ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.vn order by ow_sale.pn asc range current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.vn order by ow_sale.pn asc range current row ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.dt order by ow_sale.cn desc); -- mvd 7,8,1,4->6; 7,8,1,4->9; 8,7,2,4->10; 7,8,1,4->11; + vn | qty | prc | pn | qty | to_char | dt | cn | to_char | to_char | to_char +----+------+------+-----+------+-------------------+------------+----+-------------------+-------------------+------------------- + 20 | 1 | 0 | 100 | 1 | .0000000 | 1401-05-01 | 1 | 100.0000000 | 1.0000000 | 1.0000000 + 50 | 1 | 0 | 400 | 1 | .0000000 | 1401-06-01 | 2 | 800.0000000 | 1.0000000 | 1.0000000 + 40 | 1 | 0 | 200 | 1 | .0000000 | 1401-04-01 | 3 | 600.0000000 | 1.0000000 | 1.0000000 + 40 | 1 | 1 | 700 | 1 | .0000000 | 1401-06-01 | 4 | 2800.0000000 | 1.0000000 | 1.0000000 + 40 | 1 | 1 | 800 | 1 | .0000000 | 1401-06-01 | 4 | 3200.0000000 | 1.0000000 | 1.0000000 + 10 | 1 | 0 | 200 | 1 | .0000000 | 1401-03-01 | 1 | 200.0000000 | 1.0000000 | 1.0000000 + 30 | 1 | 0 | 300 | 1 | .0000000 | 1401-05-02 | 1 | 300.0000000 | 1.0000000 | 1.0000000 + 30 | 12 | 5 | 500 | 12 | .0000000 | 1401-06-01 | 1 | 500.0000000 | 2.0000000 | 1.0000000 + 50 | 1 | 0 | 400 | 1 | .0000000 | 1401-06-01 | 1 | 400.0000000 | 2.0000000 | 1.0000000 + 40 | 1100 | 2400 | 100 | 1100 | .0000000 | 1401-01-01 | 2 | 200.0000000 | 1.0000000 | 1.0000000 + 30 | 12 | 5 | 500 | 12 | .0000000 | 1401-06-01 | 3 | 1500.0000000 | 1.0000000 | 1.0000000 + 30 | 12 | 5 | 600 | 12 | .0000000 | 1401-06-01 | 3 | 1800.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.cn asc range between unbounded preceding and 4 preceding ); -- mvd 3,4->2; + vn | to_char | prc | cn +----+-------------------+------+---- + 40 | .0000000 | 1 | 4 + 40 | .0000000 | 1 | 4 + 50 | .0000000 | 0 | 1 + 20 | .0000000 | 0 | 1 + 30 | .0000000 | 0 | 1 + 10 | .0000000 | 0 | 1 + 50 | .0000000 | 0 | 2 + 40 | .0000000 | 0 | 3 + 30 | .0000000 | 5 | 1 + 30 | .0000000 | 5 | 3 + 30 | .0000000 | 5 | 3 + 40 | .0000000 | 2400 | 2 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.vn desc range between unbounded preceding and 2 preceding ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.cn desc); -- mvd 4,1,5->3; 7,4,1,5->6; + vn | prc | to_char | cn | pn | to_char | dt +----+------+-------------------+----+-----+-------------------+------------ + 10 | 0 | .0000000 | 1 | 200 | 1.0000000 | 1401-03-01 + 20 | 0 | .0000000 | 1 | 100 | 1.0000000 | 1401-05-01 + 30 | 5 | .0000000 | 3 | 600 | 1.0000000 | 1401-06-01 + 40 | 0 | .0000000 | 3 | 200 | 1.0000000 | 1401-04-01 + 40 | 1 | .0000000 | 4 | 800 | 1.0000000 | 1401-06-01 + 50 | 0 | .0000000 | 2 | 400 | 1.0000000 | 1401-06-01 + 30 | 0 | .0000000 | 1 | 300 | 1.0000000 | 1401-05-02 + 30 | 5 | .0000000 | 1 | 500 | 1.0000000 | 1401-06-01 + 30 | 5 | .0000000 | 3 | 500 | 1.0000000 | 1401-06-01 + 40 | 2400 | .0000000 | 2 | 100 | 1.0000000 | 1401-01-01 + 40 | 1 | .0000000 | 4 | 700 | 1.0000000 | 1401-06-01 + 50 | 0 | .0000000 | 1 | 400 | 1.0000000 | 1401-06-01 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 2,3,1,5->4; + qty | cn | vn | to_char | pn +------+----+----+-------------------+----- + 1 | 1 | 10 | .0000000 | 200 + 1 | 1 | 20 | .0000000 | 100 + 1 | 3 | 40 | .0000000 | 200 + 1 | 4 | 40 | .0000000 | 700 + 12 | 3 | 30 | .0000000 | 500 + 12 | 1 | 30 | .0000000 | 500 + 1 | 1 | 30 | .0000000 | 300 + 1 | 4 | 40 | .0000000 | 800 + 1 | 2 | 50 | .0000000 | 400 + 1 | 1 | 50 | .0000000 | 400 + 12 | 3 | 30 | .0000000 | 600 + 1100 | 2 | 40 | .0000000 | 100 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.cn asc); -- mvd 5->4; 5->6; + vn | prc | qty | to_char | cn | to_char +----+------+------+-------------------+----+------------------- + 10 | 0 | 1 | 880.0000000 | 1 | .4166667 + 20 | 0 | 1 | 880.0000000 | 1 | .4166667 + 30 | 0 | 1 | 880.0000000 | 1 | .4166667 + 50 | 0 | 1 | 880.0000000 | 1 | .4166667 + 30 | 5 | 12 | 880.0000000 | 1 | .4166667 + 50 | 0 | 1 | 2904050.0000000 | 2 | .5833333 + 40 | 2400 | 1100 | 2904050.0000000 | 2 | .5833333 + 40 | 0 | 1 | 150.0000000 | 3 | .8333333 + 30 | 5 | 12 | 150.0000000 | 3 | .8333333 + 30 | 5 | 12 | 150.0000000 | 3 | .8333333 + 40 | 1 | 1 | .0000000 | 4 | 1.0000000 + 40 | 1 | 1 | .0000000 | 4 | 1.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.vn desc range between unbounded preceding and 1 following ); -- mvd 1,2->5; + vn | qty | qty | prc | to_char +----+------+------+------+------------------- + 10 | 1 | 1 | 0 | .0000000 + 20 | 1 | 1 | 0 | .0000000 + 30 | 1 | 1 | 0 | .0000000 + 40 | 1 | 1 | 1 | .0000000 + 40 | 1 | 1 | 0 | .0000000 + 40 | 1 | 1 | 1 | .0000000 + 50 | 1 | 1 | 0 | .0000000 + 50 | 1 | 1 | 0 | .0000000 + 30 | 12 | 12 | 5 | .0000000 + 30 | 12 | 12 | 5 | .0000000 + 30 | 12 | 12 | 5 | .0000000 + 40 | 1100 | 1100 | 2400 | .0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc+ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.prc order by ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 1,8->7; + prc | pn | qty | dt | cn | dt | to_char | vn +------+-----+------+------------+----+------------+-------------------+---- + 1 | 800 | 1 | 1401-06-01 | 4 | 1401-06-01 | .0000000 | 40 + 1 | 700 | 1 | 1401-06-01 | 4 | 1401-06-01 | .0000000 | 40 + 0 | 200 | 1 | 1401-03-01 | 1 | 1401-03-01 | 3.5000000 | 10 + 0 | 100 | 1 | 1401-05-01 | 1 | 1401-05-01 | 3.5000000 | 20 + 0 | 300 | 1 | 1401-05-02 | 1 | 1401-05-02 | 3.5000000 | 30 + 0 | 200 | 1 | 1401-04-01 | 3 | 1401-04-01 | 3.5000000 | 40 + 0 | 400 | 1 | 1401-06-01 | 2 | 1401-06-01 | 3.5000000 | 50 + 0 | 400 | 1 | 1401-06-01 | 1 | 1401-06-01 | 3.5000000 | 50 + 5 | 600 | 12 | 1401-06-01 | 3 | 1401-06-01 | 2.6666667 | 30 + 5 | 500 | 12 | 1401-06-01 | 1 | 1401-06-01 | 2.6666667 | 30 + 5 | 500 | 12 | 1401-06-01 | 3 | 1401-06-01 | 2.6666667 | 30 + 2400 | 100 | 1100 | 1401-01-01 | 2 | 1401-01-01 | .0000000 | 40 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty/ow_sale.cn),floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc/ow_sale.vn)) OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.cn desc); -- mvd 2,5,6->4; 2->7; 2->8; 2->9; 2,5,6->10; + prc | cn | dt | to_char | vn | pn | to_char | to_char | to_char | to_char +------+----+------------+-------------------+----+-----+-------------------+-------------------+-------------------+------------------- + 1 | 4 | 1401-06-01 | .0000000 | 40 | 800 | 1.0000000 | 1.0000000 | .0000000 | 1.0000000 + 1 | 4 | 1401-06-01 | .0000000 | 40 | 700 | 1.0000000 | 1.0000000 | .0000000 | 1.0000000 + 5 | 3 | 1401-06-01 | .0000000 | 30 | 500 | 2.0000000 | .0000000 | .0000000 | 1.0000000 + 5 | 3 | 1401-06-01 | .0000000 | 30 | 600 | 2.0000000 | .0000000 | .0000000 | 1.0000000 + 0 | 3 | 1401-04-01 | .0000000 | 40 | 200 | 2.0000000 | .0000000 | .0000000 | 1.0000000 + 0 | 2 | 1401-06-01 | .0000000 | 50 | 400 | 3.0000000 | .0000000 | .0000000 | 1.0000000 + 2400 | 2 | 1401-01-01 | .0000000 | 40 | 100 | 3.0000000 | .0000000 | .0000000 | 1.0000000 + 0 | 1 | 1401-05-02 | .0000000 | 30 | 300 | 4.0000000 | .0000000 | .0000000 | 1.0000000 + 5 | 1 | 1401-06-01 | .0000000 | 30 | 500 | 4.0000000 | .0000000 | .0000000 | 1.0000000 + 0 | 1 | 1401-06-01 | .0000000 | 50 | 400 | 4.0000000 | .0000000 | .0000000 | 1.0000000 + 0 | 1 | 1401-03-01 | .0000000 | 10 | 200 | 4.0000000 | .0000000 | .0000000 | 1.0000000 + 0 | 1 | 1401-05-01 | .0000000 | 20 | 100 | 4.0000000 | .0000000 | .0000000 | 1.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.vn asc range between floor(ow_sale.vn) preceding and 0 preceding ); -- mvd 4,5,2->3; + dt | pn | to_char | cn | vn +------------+-----+-------------------+----+---- + 1401-03-01 | 200 | .0000000 | 1 | 10 + 1401-05-01 | 100 | .0000000 | 1 | 20 + 1401-06-01 | 600 | .0000000 | 3 | 30 + 1401-04-01 | 200 | .0000000 | 3 | 40 + 1401-06-01 | 800 | .0000000 | 4 | 40 + 1401-06-01 | 400 | .0000000 | 2 | 50 + 1401-05-02 | 300 | .0000000 | 1 | 30 + 1401-06-01 | 500 | .0000000 | 1 | 30 + 1401-06-01 | 500 | .0000000 | 3 | 30 + 1401-01-01 | 100 | .0000000 | 2 | 40 + 1401-06-01 | 700 | .0000000 | 4 | 40 + 1401-06-01 | 400 | .0000000 | 1 | 50 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn*ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.vn) as int),cast (floor(ow_sale.prc+ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.dt order by ow_sale.cn desc range between floor(ow_sale.vn) preceding and 2 preceding ), +win2 as (partition by ow_sale.pn order by ow_sale.pn desc), +win3 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc), +win4 as (order by ow_sale.cn desc); -- mvd 6,7,4,2,1->5; 1->8; 4,10,1->9; 4->11; 4->12; 4->13; + pn | qty | pn | cn | to_char | prc | dt | to_char | to_char | vn | to_char | to_char | to_char +-----+------+-----+----+-------------------+------+------------+-------------------+-------------------+----+-------------------+-------------------+------------------- + 800 | 1 | 800 | 4 | .0000000 | 1 | 1401-06-01 | 1.0000000 | .0000000 | 40 | .1666667 | .0000000 | 1.0000000 + 700 | 1 | 700 | 4 | .0000000 | 1 | 1401-06-01 | 1.0000000 | .0000000 | 40 | .1666667 | .0000000 | 1.0000000 + 200 | 1 | 200 | 3 | .0000000 | 0 | 1401-04-01 | 1.0000000 | .0000000 | 40 | .4166667 | .1818182 | 3.0000000 + 600 | 12 | 600 | 3 | .0000000 | 5 | 1401-06-01 | 1.0000000 | .0000000 | 30 | .4166667 | .1818182 | 3.0000000 + 500 | 12 | 500 | 3 | .0000000 | 5 | 1401-06-01 | 1.0000000 | .0000000 | 30 | .4166667 | .1818182 | 3.0000000 + 400 | 1 | 400 | 2 | .0000000 | 0 | 1401-06-01 | 1.0000000 | .0000000 | 50 | .5833333 | .4545455 | 6.0000000 + 100 | 1100 | 100 | 2 | .0000000 | 2400 | 1401-01-01 | 1.0000000 | .0000000 | 40 | .5833333 | .4545455 | 6.0000000 + 100 | 1 | 100 | 1 | .0000000 | 0 | 1401-05-01 | 1.0000000 | .0000000 | 20 | 1.0000000 | .6363636 | 8.0000000 + 200 | 1 | 200 | 1 | .0000000 | 0 | 1401-03-01 | 1.0000000 | .0000000 | 10 | 1.0000000 | .6363636 | 8.0000000 + 300 | 1 | 300 | 1 | .0000000 | 0 | 1401-05-02 | 1.0000000 | .0000000 | 30 | 1.0000000 | .6363636 | 8.0000000 + 400 | 1 | 400 | 1 | .0000000 | 0 | 1401-06-01 | 1.0000000 | .0000000 | 50 | 1.0000000 | .6363636 | 8.0000000 + 500 | 12 | 500 | 1 | .0000000 | 5 | 1401-06-01 | 1.0000000 | .0000000 | 30 | 1.0000000 | .6363636 | 8.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.pn desc range between 2 preceding and current row ); -- mvd 4->3; + vn | cn | to_char | pn +----+----+-------------------+----- + 30 | 1 | .0000000 | 300 + 50 | 2 | .0000000 | 400 + 50 | 1 | .0000000 | 400 + 30 | 1 | .0000000 | 500 + 30 | 3 | .0000000 | 500 + 40 | 4 | .0000000 | 800 + 20 | 1 | 2880000.0000000 | 100 + 40 | 2 | 2880000.0000000 | 100 + 10 | 1 | .0000000 | 200 + 40 | 3 | .0000000 | 200 + 30 | 3 | .0000000 | 600 + 40 | 4 | .0000000 | 700 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty*ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn+ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.cn asc range between floor(ow_sale.pn+ow_sale.prc) preceding and current row ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc), +win4 as (order by ow_sale.pn desc); -- mvd 1->4; 1->5; 7,1,8->6; 1->9; 8->10; + cn | dt | dt | to_char | to_char | to_char | prc | pn | to_char | to_char +----+------------+------------+-------------------+-------------------+-------------------+------+-----+-------------------+------------------- + 4 | 1401-06-01 | 1401-06-01 | .0000000 | 11.0000000 | .0000000 | 1 | 800 | 11.0000000 | .0833333 + 4 | 1401-06-01 | 1401-06-01 | .0000000 | 11.0000000 | .0000000 | 1 | 700 | 11.0000000 | .1666667 + 3 | 1401-06-01 | 1401-06-01 | 2400.0000000 | 8.0000000 | .0000000 | 5 | 600 | 8.0000000 | .2500000 + 1 | 1401-06-01 | 1401-06-01 | 2880.0000000 | 1.0000000 | .0000000 | 5 | 500 | 1.0000000 | .4166667 + 3 | 1401-06-01 | 1401-06-01 | 2400.0000000 | 8.0000000 | .0000000 | 5 | 500 | 8.0000000 | .4166667 + 1 | 1401-06-01 | 1401-06-01 | 2880.0000000 | 1.0000000 | 51.0000000 | 0 | 400 | 1.0000000 | .5833333 + 2 | 1401-06-01 | 1401-06-01 | ########.## | 6.0000000 | 51.0000000 | 0 | 400 | 6.0000000 | .5833333 + 1 | 1401-05-02 | 1401-05-02 | 2880.0000000 | 1.0000000 | 31.0000000 | 0 | 300 | 1.0000000 | .6666667 + 3 | 1401-04-01 | 1401-04-01 | 2400.0000000 | 8.0000000 | 41.0000000 | 0 | 200 | 8.0000000 | .8333333 + 1 | 1401-03-01 | 1401-03-01 | 2880.0000000 | 1.0000000 | 11.0000000 | 0 | 200 | 1.0000000 | .8333333 + 2 | 1401-01-01 | 1401-01-01 | ########.## | 6.0000000 | .0000000 | 2400 | 100 | 6.0000000 | 1.0000000 + 1 | 1401-05-01 | 1401-05-01 | 2880.0000000 | 1.0000000 | 21.0000000 | 0 | 100 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.cn asc range between 4 preceding and floor(ow_sale.qty) following ); -- mvd 4,2,1,5->3; + dt | cn | to_char | prc | vn +------------+----+-------------------+------+---- + 1401-03-01 | 1 | .0000000 | 0 | 10 + 1401-05-02 | 1 | .0000000 | 0 | 30 + 1401-06-01 | 1 | .0000000 | 0 | 50 + 1401-06-01 | 2 | .0000000 | 0 | 50 + 1401-06-01 | 1 | .0000000 | 5 | 30 + 1401-06-01 | 3 | .0000000 | 5 | 30 + 1401-06-01 | 3 | .0000000 | 5 | 30 + 1401-05-01 | 1 | .0000000 | 0 | 20 + 1401-04-01 | 3 | .0000000 | 0 | 40 + 1401-06-01 | 4 | .0000000 | 1 | 40 + 1401-06-01 | 4 | .0000000 | 1 | 40 + 1401-01-01 | 2 | .0000000 | 2400 | 40 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.cn asc range between 1 preceding and unbounded following ); -- mvd 3,4,5->2; + qty | to_char | cn | dt | pn +------+-------------------+----+------------+----- + 1 | .0000000 | 3 | 1401-04-01 | 200 + 1 | .0000000 | 1 | 1401-05-01 | 100 + 1 | .0000000 | 1 | 1401-05-02 | 300 + 1 | .0000000 | 1 | 1401-06-01 | 400 + 12 | .0000000 | 1 | 1401-06-01 | 500 + 12 | .0000000 | 3 | 1401-06-01 | 500 + 1 | .0000000 | 4 | 1401-06-01 | 700 + 1100 | .0000000 | 2 | 1401-01-01 | 100 + 1 | .0000000 | 1 | 1401-03-01 | 200 + 1 | .0000000 | 2 | 1401-06-01 | 400 + 12 | .0000000 | 3 | 1401-06-01 | 600 + 1 | .0000000 | 4 | 1401-06-01 | 800 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty-ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.pn desc range between floor(ow_sale.pn) preceding and unbounded following ), +win2 as (order by ow_sale.cn asc); -- mvd 4,5->3; 4->6; 4->7; 4->8; 4->9; + prc | prc | to_char | cn | pn | to_char | to_char | to_char | to_char +------+------+-------------------+----+-----+-------------------+-------------------+-------------------+------------------- + 0 | 0 | .0000000 | 1 | 100 | 1.0000000 | 1.0000000 | 1.0000000 | .0000000 + 0 | 0 | .0000000 | 1 | 200 | 1.0000000 | 1.0000000 | 2.0000000 | .0000000 + 0 | 0 | .0000000 | 1 | 300 | 1.0000000 | 1.0000000 | 3.0000000 | .0000000 + 0 | 0 | .0000000 | 1 | 400 | 1.0000000 | 1.0000000 | 4.0000000 | .0000000 + 5 | 5 | .0000000 | 1 | 500 | 1.0000000 | 1.0000000 | 5.0000000 | .0000000 + 2400 | 2400 | .0000000 | 2 | 100 | 2.0000000 | 2.0000000 | 6.0000000 | .4545455 + 0 | 0 | .0000000 | 2 | 400 | 2.0000000 | 2.0000000 | 7.0000000 | .4545455 + 0 | 0 | .0000000 | 3 | 200 | 3.0000000 | 3.0000000 | 8.0000000 | .6363636 + 5 | 5 | .0000000 | 3 | 600 | 3.0000000 | 3.0000000 | 9.0000000 | .6363636 + 5 | 5 | .0000000 | 3 | 500 | 3.0000000 | 3.0000000 | 10.0000000 | .6363636 + 1 | 1 | .0000000 | 4 | 700 | 4.0000000 | 4.0000000 | 11.0000000 | .9090909 + 1 | 1 | .0000000 | 4 | 800 | 4.0000000 | 4.0000000 | 12.0000000 | .9090909 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn-ow_sale.vn),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.dt order by ow_sale.vn asc range between current row and current row ); -- mvd 1,6,7->5; + cn | qty | qty | cn | to_char | dt | vn +----+------+------+----+-------------------+------------+---- + 3 | 1 | 1 | 3 | .0000000 | 1401-04-01 | 40 + 1 | 1 | 1 | 1 | .0000000 | 1401-05-01 | 20 + 2 | 1 | 1 | 2 | .0000000 | 1401-06-01 | 50 + 4 | 1 | 1 | 4 | .0000000 | 1401-06-01 | 40 + 4 | 1 | 1 | 4 | .0000000 | 1401-06-01 | 40 + 2 | 1100 | 1100 | 2 | .0000000 | 1401-01-01 | 40 + 1 | 1 | 1 | 1 | .0000000 | 1401-03-01 | 10 + 1 | 1 | 1 | 1 | .0000000 | 1401-05-02 | 30 + 1 | 12 | 12 | 1 | .0000000 | 1401-06-01 | 30 + 1 | 1 | 1 | 1 | .0000000 | 1401-06-01 | 50 + 3 | 12 | 12 | 3 | .0000000 | 1401-06-01 | 30 + 3 | 12 | 12 | 3 | .0000000 | 1401-06-01 | 30 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc),floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.cn) as int),cast (floor(ow_sale.qty/ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.pn asc range between current row and current row ), +win2 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc); -- mvd 6,4->5; 8,1->7; + vn | dt | qty | pn | to_char | prc | to_char | cn +----+------------+------+-----+-------------------+------+-------------------+---- + 40 | 1401-06-01 | 1 | 700 | .0000000 | 1 | .0000000 | 4 + 40 | 1401-06-01 | 1 | 800 | .0000000 | 1 | 16.0000000 | 4 + 20 | 1401-05-01 | 1 | 100 | .0000000 | 0 | .0000000 | 1 + 40 | 1401-04-01 | 1 | 200 | .0000000 | 0 | .0000000 | 3 + 10 | 1401-03-01 | 1 | 200 | .0000000 | 0 | .0000000 | 1 + 30 | 1401-05-02 | 1 | 300 | .0000000 | 0 | .0000000 | 1 + 50 | 1401-06-01 | 1 | 400 | .0000000 | 0 | .0000000 | 2 + 50 | 1401-06-01 | 1 | 400 | .0000000 | 0 | .0000000 | 1 + 30 | 1401-06-01 | 12 | 500 | .0000000 | 5 | .0000000 | 3 + 30 | 1401-06-01 | 12 | 500 | .0000000 | 5 | 1.0000000 | 1 + 30 | 1401-06-01 | 12 | 600 | .0000000 | 5 | 9.0000000 | 3 + 40 | 1401-01-01 | 1100 | 100 | .0000000 | 2400 | .0000000 | 2 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn*ow_sale.pn),floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.pn asc range between current row and 4 following ); -- mvd 5,6,1->4; + pn | qty | pn | to_char | cn | vn +-----+------+-----+-------------------+----+---- + 200 | 1 | 200 | .0000000 | 1 | 10 + 100 | 1 | 100 | .0000000 | 1 | 20 + 300 | 1 | 300 | .0000000 | 1 | 30 + 500 | 12 | 500 | .0000000 | 1 | 30 + 400 | 1 | 400 | .0000000 | 1 | 50 + 500 | 12 | 500 | .0000000 | 3 | 30 + 600 | 12 | 600 | .0000000 | 3 | 30 + 200 | 1 | 200 | .0000000 | 3 | 40 + 100 | 1100 | 100 | .0000000 | 2 | 40 + 400 | 1 | 400 | .0000000 | 2 | 50 + 700 | 1 | 700 | .0000000 | 4 | 40 + 800 | 1 | 800 | .0000000 | 4 | 40 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty*ow_sale.pn) as int),cast (floor(ow_sale.pn/ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.pn desc range between current row and floor(ow_sale.pn+ow_sale.qty) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.pn desc range between current row and floor(ow_sale.pn+ow_sale.qty) following ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 1,3,4,5->2; 1,3->6; 1,3,4,5->7; 1,3->8; 1,3,4,5->9; 1,3,4,5->10; + cn | to_char | dt | vn | pn | to_char | to_char | to_char | to_char | to_char +----+-------------------+------------+----+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 3 | .0000000 | 1401-04-01 | 40 | 200 | .0000000 | 1.0000000 | 1.0000000 | 6.0000000 | 3.0000000 + 1 | .0000000 | 1401-05-01 | 20 | 100 | .0000000 | 1.0000000 | 1.0000000 | 2.0000000 | 1.0000000 + 2 | .0000000 | 1401-06-01 | 50 | 400 | .0000000 | 1.0000000 | 1.0000000 | 4.0000000 | 2.0000000 + 4 | .0000000 | 1401-06-01 | 40 | 700 | .0000000 | 1.0000000 | 1.0000000 | 8.0000000 | 4.0000000 + 4 | .0000000 | 1401-06-01 | 40 | 800 | .0000000 | 2.0000000 | 2.0000000 | 8.0000000 | 4.0000000 + 2 | .0000000 | 1401-01-01 | 40 | 100 | .0000000 | 1.0000000 | 1.0000000 | 4.0000000 | 2.0000000 + 1 | .0000000 | 1401-03-01 | 10 | 200 | .0000000 | 1.0000000 | 1.0000000 | 2.0000000 | 1.0000000 + 1 | .0000000 | 1401-05-02 | 30 | 300 | .0000000 | 1.0000000 | 1.0000000 | 2.0000000 | 1.0000000 + 1 | .0000000 | 1401-06-01 | 50 | 400 | .0000000 | 1.0000000 | 1.0000000 | 2.0000000 | 1.0000000 + 1 | .0000000 | 1401-06-01 | 30 | 500 | .0000000 | 1.0000000 | 2.0000000 | 2.0000000 | 1.0000000 + 3 | .0000000 | 1401-06-01 | 30 | 500 | .0000000 | 1.0000000 | 1.0000000 | 6.0000000 | 3.0000000 + 3 | .0000000 | 1401-06-01 | 30 | 600 | .0000000 | 2.0000000 | 2.0000000 | 6.0000000 | 3.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc+ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn asc range between current row and unbounded following ); -- mvd 4->3; + pn | dt | to_char | vn +-----+------------+-------------------+---- + 200 | 1401-03-01 | .0000000 | 10 + 100 | 1401-05-01 | .0000000 | 20 + 300 | 1401-05-02 | 18.7500000 | 30 + 600 | 1401-06-01 | 18.7500000 | 30 + 500 | 1401-06-01 | 18.7500000 | 30 + 500 | 1401-06-01 | 18.7500000 | 30 + 200 | 1401-04-01 | 4317601.0000000 | 40 + 700 | 1401-06-01 | 4317601.0000000 | 40 + 100 | 1401-01-01 | 4317601.0000000 | 40 + 800 | 1401-06-01 | 4317601.0000000 | 40 + 400 | 1401-06-01 | .0000000 | 50 + 400 | 1401-06-01 | .0000000 | 50 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn/ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.vn order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.pn asc range between current row and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.vn order by ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.pn desc); -- mvd 4,1->3; 6,7,8,9,1->5; 8,1->10; 6,7,8,9,1->11; + pn | pn | to_char | cn | to_char | prc | dt | vn | qty | to_char | to_char +-----+-----+-------------------+----+-------------------+------+------------+----+------+-------------------+------------------- + 100 | 100 | .8000000 | 1 | 1.0000000 | 0 | 1401-05-01 | 20 | 1 | 1.0000000 | 1.0000000 + 200 | 200 | .7500000 | 1 | 1.0000000 | 0 | 1401-03-01 | 10 | 1 | 1.0000000 | 1.0000000 + 300 | 300 | .6666667 | 1 | 1.0000000 | 0 | 1401-05-02 | 30 | 1 | 1.0000000 | 1.0000000 + 400 | 400 | .5000000 | 1 | 1.0000000 | 0 | 1401-06-01 | 50 | 1 | 1.0000000 | 1.0000000 + 500 | 500 | .0000000 | 1 | 1.0000000 | 5 | 1401-06-01 | 30 | 12 | 1.0000000 | 2.0000000 + 200 | 200 | 6.0000000 | 3 | 1.0000000 | 0 | 1401-04-01 | 40 | 1 | 1.0000000 | 1.0000000 + 500 | 500 | .0000000 | 3 | 1.0000000 | 5 | 1401-06-01 | 30 | 12 | 1.0000000 | 2.0000000 + 600 | 600 | .0000000 | 3 | .3333333 | 5 | 1401-06-01 | 30 | 12 | 1.0000000 | 1.0000000 + 100 | 100 | 2.0000000 | 2 | 1.0000000 | 2400 | 1401-01-01 | 40 | 1100 | 1.0000000 | 1.0000000 + 400 | 400 | .0000000 | 2 | 1.0000000 | 0 | 1401-06-01 | 50 | 1 | 1.0000000 | 1.0000000 + 700 | 700 | .0000000 | 4 | 1.0000000 | 1 | 1401-06-01 | 40 | 1 | 1.0000000 | 2.0000000 + 800 | 800 | .0000000 | 4 | .5000000 | 1 | 1401-06-01 | 40 | 1 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc-ow_sale.qty),floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.pn desc range between 3 following and 2 following ); -- mvd 2,4->7; + vn | qty | vn | pn | cn | prc | to_char +----+------+----+-----+----+------+------------------- + 40 | 1 | 40 | 800 | 4 | 1 | .0000000 + 40 | 1 | 40 | 700 | 4 | 1 | .0000000 + 50 | 1 | 50 | 400 | 1 | 0 | .0000000 + 50 | 1 | 50 | 400 | 2 | 0 | .0000000 + 30 | 1 | 30 | 300 | 1 | 0 | .0000000 + 10 | 1 | 10 | 200 | 1 | 0 | .0000000 + 40 | 1 | 40 | 200 | 3 | 0 | .0000000 + 20 | 1 | 20 | 100 | 1 | 0 | .0000000 + 30 | 12 | 30 | 600 | 3 | 5 | .0000000 + 30 | 12 | 30 | 500 | 1 | 5 | .0000000 + 30 | 12 | 30 | 500 | 3 | 5 | .0000000 + 40 | 1100 | 40 | 100 | 2 | 2400 | .0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty+ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.pn order by ow_sale.cn desc range between 0 following and floor(ow_sale.vn-ow_sale.cn) following ), +win2 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc), +win3 as (order by ow_sale.pn desc); -- mvd 4,1,2->3; 1,6,2->5; 1,6,2->7; 2->8; 4,1,2->9; + cn | pn | to_char | prc | to_char | vn | to_char | to_char | to_char +----+-----+-------------------+------+-------------------+----+-------------------+-------------------+------------------- + 4 | 800 | .0000000 | 1 | 1.0000000 | 40 | 1.0000000 | .0000000 | 20.0000000 + 4 | 700 | .0000000 | 1 | 1.0000000 | 40 | 1.0000000 | .0909091 | 17.0000000 + 3 | 600 | .0000000 | 5 | 1.0000000 | 30 | 1.0000000 | .1818182 | 20.0000000 + 3 | 500 | .0000000 | 5 | .5000000 | 30 | .5000000 | .2727273 | 16.0000000 + 1 | 500 | .0000000 | 5 | 1.0000000 | 30 | 1.0000000 | .2727273 | 16.0000000 + 2 | 400 | .0000000 | 0 | .5000000 | 50 | .5000000 | .4545455 | 8.0000000 + 1 | 400 | .0000000 | 0 | 1.0000000 | 50 | 1.0000000 | .4545455 | 8.0000000 + 1 | 300 | .0000000 | 0 | 1.0000000 | 30 | 1.0000000 | .6363636 | 10.0000000 + 3 | 200 | .0000000 | 0 | 1.0000000 | 40 | 1.0000000 | .7272727 | 5.0000000 + 1 | 200 | .0000000 | 0 | 1.0000000 | 10 | 1.0000000 | .7272727 | 20.0000000 + 1 | 100 | .0000000 | 0 | 1.0000000 | 20 | 1.0000000 | .9090909 | 5.0000000 + 2 | 100 | .0000000 | 2400 | 1.0000000 | 40 | 1.0000000 | .9090909 | 2.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc),floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.pn order by ow_sale.pn desc range between floor(ow_sale.pn) following and unbounded following ); -- mvd 3,2,7->6; + vn | qty | prc | qty | dt | to_char | pn +----+------+------+------+------------+-------------------+----- + 20 | 1 | 0 | 1 | 1401-05-01 | .0000000 | 100 + 10 | 1 | 0 | 1 | 1401-03-01 | .0000000 | 200 + 40 | 1 | 0 | 1 | 1401-04-01 | .0000000 | 200 + 40 | 1 | 1 | 1 | 1401-06-01 | .0000000 | 800 + 30 | 12 | 5 | 12 | 1401-06-01 | .0000000 | 500 + 30 | 12 | 5 | 12 | 1401-06-01 | .0000000 | 500 + 30 | 1 | 0 | 1 | 1401-05-02 | .0000000 | 300 + 50 | 1 | 0 | 1 | 1401-06-01 | .0000000 | 400 + 50 | 1 | 0 | 1 | 1401-06-01 | .0000000 | 400 + 40 | 1 | 1 | 1 | 1401-06-01 | .0000000 | 700 + 30 | 12 | 5 | 12 | 1401-06-01 | .0000000 | 600 + 40 | 1100 | 2400 | 1100 | 1401-01-01 | .0000000 | 100 +(12 rows) + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn),floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.vn desc range between floor(ow_sale.prc) following and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.pn asc); -- mvd 4,8,1,2->7; 10,8,4,3,2->9; 10,8,4,3,2->11; + vn | pn | qty | cn | cn | pn | to_char | dt | to_char | prc | to_char +----+-----+------+----+----+-----+-------------------+------------+-------------------+------+------------------- + 40 | 200 | 1 | 3 | 3 | 200 | .0000000 | 1401-04-01 | 1.0000000 | 0 | 1.0000000 + 20 | 100 | 1 | 1 | 1 | 100 | .0000000 | 1401-05-01 | 1.0000000 | 0 | 1.0000000 + 30 | 300 | 1 | 1 | 1 | 300 | .0000000 | 1401-05-02 | 1.0000000 | 0 | 1.0000000 + 50 | 400 | 1 | 1 | 1 | 400 | .0000000 | 1401-06-01 | 1.0000000 | 0 | 1.0000000 + 30 | 500 | 12 | 1 | 1 | 500 | .0000000 | 1401-06-01 | 1.0000000 | 5 | 1.0000000 + 30 | 500 | 12 | 3 | 3 | 500 | .0000000 | 1401-06-01 | 1.0000000 | 5 | 1.0000000 + 40 | 700 | 1 | 4 | 4 | 700 | .0000000 | 1401-06-01 | 1.0000000 | 1 | 1.0000000 + 40 | 100 | 1100 | 2 | 2 | 100 | .0000000 | 1401-01-01 | 1.0000000 | 2400 | 1.0000000 + 10 | 200 | 1 | 1 | 1 | 200 | .0000000 | 1401-03-01 | 1.0000000 | 0 | 1.0000000 + 50 | 400 | 1 | 2 | 2 | 400 | .0000000 | 1401-06-01 | 1.0000000 | 0 | 1.0000000 + 30 | 600 | 12 | 3 | 3 | 600 | .0000000 | 1401-06-01 | 1.0000000 | 5 | 1.0000000 + 40 | 800 | 1 | 4 | 4 | 800 | .0000000 | 1401-06-01 | 1.0000000 | 1 | 1.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn+ow_sale.vn),floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows unbounded preceding ); -- mvd 1,8,3->7; + cn | pn | vn | cn | qty | qty | to_char | dt +----+-----+----+----+------+------+-------------------+------------ + 1 | 200 | 10 | 1 | 1 | 1 | .0000000 | 1401-03-01 + 1 | 300 | 30 | 1 | 1 | 1 | .0000000 | 1401-05-02 + 1 | 400 | 50 | 1 | 1 | 1 | .0000000 | 1401-06-01 + 2 | 400 | 50 | 2 | 1 | 1 | .0000000 | 1401-06-01 + 1 | 500 | 30 | 1 | 12 | 12 | 1066.6666667 | 1401-06-01 + 3 | 500 | 30 | 3 | 12 | 12 | 1600.0000000 | 1401-06-01 + 3 | 600 | 30 | 3 | 12 | 12 | 1920.0000000 | 1401-06-01 + 4 | 700 | 40 | 4 | 1 | 1 | 1933.3333333 | 1401-06-01 + 4 | 800 | 40 | 4 | 1 | 1 | 1942.8571429 | 1401-06-01 + 2 | 100 | 40 | 2 | 1100 | 1100 | .0000000 | 1401-01-01 + 3 | 200 | 40 | 3 | 1 | 1 | .0000000 | 1401-04-01 + 1 | 100 | 20 | 1 | 1 | 1 | .0000000 | 1401-05-01 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn*ow_sale.pn) as int),cast (floor(ow_sale.cn-ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty*ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows unbounded preceding ), +win2 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 5,3,1->4; 7,3->6; 5->8; 5->9; 7,3->10; 5->11; + pn | prc | vn | to_char | cn | to_char | dt | to_char | to_char | to_char | to_char +-----+------+----+-------------------+----+-------------------+------------+-------------------+-------------------+-------------------+------------------- + 100 | 2400 | 40 | .0000000 | 2 | .0000000 | 1401-01-01 | 10000.0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 200 | 0 | 10 | .0000000 | 1 | .0000000 | 1401-03-01 | 40000.0000000 | 2.0000000 | 1.0000000 | 2.0000000 + 200 | 0 | 40 | .0000000 | 3 | .0000000 | 1401-04-01 | 40000.0000000 | 3.0000000 | 1.0000000 | 3.0000000 + 100 | 0 | 20 | .0000000 | 1 | .0000000 | 1401-05-01 | 10000.0000000 | 4.0000000 | 1.0000000 | 4.0000000 + 300 | 0 | 30 | .0000000 | 1 | .0000000 | 1401-05-02 | 90000.0000000 | 5.0000000 | 1.0000000 | 5.0000000 + 400 | 0 | 50 | .0000000 | 1 | .0000000 | 1401-06-01 | 160000.0000000 | 6.0000000 | 1.0000000 | 6.0000000 + 400 | 0 | 50 | .5000000 | 2 | .0000000 | 1401-06-01 | 160000.0000000 | 7.0000000 | 2.0000000 | 7.0000000 + 500 | 5 | 30 | .0000000 | 1 | .0000000 | 1401-06-01 | 250000.0000000 | 8.0000000 | 3.0000000 | 8.0000000 + 500 | 5 | 30 | 2.0000000 | 3 | .0000000 | 1401-06-01 | 250000.0000000 | 9.0000000 | 4.0000000 | 9.0000000 + 600 | 5 | 30 | .0000000 | 3 | .0000000 | 1401-06-01 | 360000.0000000 | 10.0000000 | 5.0000000 | 10.0000000 + 700 | 1 | 40 | .0000000 | 4 | .0000000 | 1401-06-01 | 490000.0000000 | 11.0000000 | 6.0000000 | 11.0000000 + 800 | 1 | 40 | .0000000 | 4 | .0000000 | 1401-06-01 | 640000.0000000 | 12.0000000 | 7.0000000 | 12.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn asc rows 2 preceding ); -- mvd 3,1->2; + qty | to_char | cn +------+-------------------+---- + 12 | .0000000 | 1 + 12 | .0000000 | 3 + 12 | .0000000 | 3 + 1100 | .0000000 | 2 + 1 | .0000000 | 1 + 1 | .0000000 | 3 + 1 | .0000000 | 1 + 1 | .0000000 | 1 + 1 | .0000000 | 1 + 1 | .0000000 | 2 + 1 | .6666667 | 4 + 1 | .6666667 | 4 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn+ow_sale.cn),floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows floor(ow_sale.vn) preceding ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.pn asc), +win3 as (order by ow_sale.cn desc); -- mvd 5,6,2,1->4; 8,6,1->7; 6->9; + pn | vn | qty | to_char | prc | cn | to_char | dt | to_char +-----+----+------+-------------------+------+----+-------------------+------------+------------------- + 700 | 40 | 1 | .0000000 | 1 | 4 | .0000000 | 1401-06-01 | .1666667 + 800 | 40 | 1 | .0000000 | 1 | 4 | .0000000 | 1401-06-01 | .1666667 + 500 | 30 | 12 | .0000000 | 5 | 3 | .0000000 | 1401-06-01 | .4166667 + 200 | 40 | 1 | .0000000 | 0 | 3 | .0000000 | 1401-04-01 | .4166667 + 600 | 30 | 12 | .0000000 | 5 | 3 | .0000000 | 1401-06-01 | .4166667 + 400 | 50 | 1 | .0000000 | 0 | 2 | .0000000 | 1401-06-01 | .5833333 + 100 | 40 | 1100 | .0000000 | 2400 | 2 | .0000000 | 1401-01-01 | .5833333 + 300 | 30 | 1 | .0000000 | 0 | 1 | .0000000 | 1401-05-02 | 1.0000000 + 400 | 50 | 1 | .0000000 | 0 | 1 | .0000000 | 1401-06-01 | 1.0000000 + 500 | 30 | 12 | .0000000 | 5 | 1 | .0000000 | 1401-06-01 | 1.0000000 + 100 | 20 | 1 | .0000000 | 0 | 1 | .0000000 | 1401-05-01 | 1.0000000 + 200 | 10 | 1 | .0000000 | 0 | 1 | .0000000 | 1401-03-01 | 1.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.pn desc rows current row ); -- mvd 1,6,5->7; + cn | qty | qty | cn | pn | vn | to_char +----+------+------+----+-----+----+------------------- + 1 | 1 | 1 | 1 | 200 | 10 | .0000000 + 1 | 1 | 1 | 1 | 100 | 20 | .0000000 + 1 | 1 | 1 | 1 | 300 | 30 | .0000000 + 1 | 12 | 12 | 1 | 500 | 30 | .0000000 + 1 | 1 | 1 | 1 | 400 | 50 | .0000000 + 3 | 12 | 12 | 3 | 500 | 30 | .0000000 + 3 | 12 | 12 | 3 | 600 | 30 | .0000000 + 3 | 1 | 1 | 3 | 200 | 40 | .0000000 + 2 | 1100 | 1100 | 2 | 100 | 40 | .0000000 + 2 | 1 | 1 | 2 | 400 | 50 | .0000000 + 4 | 1 | 1 | 4 | 700 | 40 | .0000000 + 4 | 1 | 1 | 4 | 800 | 40 | .0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.prc,ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc rows current row ), +win2 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 2,7,8->6; 10,2,7,8,1->9; 2,7,8->11; 2,7,8->12; 2->13; 10,2,7,8,1->14; + pn | cn | pn | cn | cn | to_char | dt | vn | to_char | prc | to_char | to_char | to_char | to_char +-----+----+-----+----+----+-------------------+------------+----+-------------------+------+-------------------+-------------------+-------------------+------------------- + 100 | 2 | 100 | 2 | 2 | .0000000 | 1401-01-01 | 40 | .0000000 | 2400 | 1100.0000000 | 100.0000000 | .0000000 | 1.0000000 + 200 | 1 | 200 | 1 | 1 | .0000000 | 1401-03-01 | 10 | .0000000 | 0 | 1.0000000 | 200.0000000 | 10.0000000 | 1.0000000 + 200 | 3 | 200 | 3 | 3 | .0000000 | 1401-04-01 | 40 | .0000000 | 0 | 1.0000000 | 200.0000000 | 40.0000000 | 1.0000000 + 100 | 1 | 100 | 1 | 1 | .0000000 | 1401-05-01 | 20 | .0000000 | 0 | 1.0000000 | 100.0000000 | 20.0000000 | 1.0000000 + 300 | 1 | 300 | 1 | 1 | .0000000 | 1401-05-02 | 30 | .0000000 | 0 | 1.0000000 | 300.0000000 | 30.0000000 | 1.0000000 + 400 | 1 | 400 | 1 | 1 | .0000000 | 1401-06-01 | 50 | .0000000 | 0 | 1.0000000 | 400.0000000 | 50.0000000 | 1.0000000 + 400 | 2 | 400 | 2 | 2 | .0000000 | 1401-06-01 | 50 | .0000000 | 0 | 1.0000000 | 400.0000000 | 50.0000000 | 1.0000000 + 500 | 1 | 500 | 1 | 1 | .0000000 | 1401-06-01 | 30 | .0000000 | 5 | 12.0000000 | 500.0000000 | .0000000 | 1.0000000 + 500 | 3 | 500 | 3 | 3 | .0000000 | 1401-06-01 | 30 | .0000000 | 5 | 12.0000000 | 500.0000000 | .0000000 | 1.0000000 + 600 | 3 | 600 | 3 | 3 | .0000000 | 1401-06-01 | 30 | .0000000 | 5 | 12.0000000 | 600.0000000 | .0000000 | 1.0000000 + 700 | 4 | 700 | 4 | 4 | .0000000 | 1401-06-01 | 40 | .0000000 | 1 | 1.0000000 | 700.0000000 | 41.0000000 | 1.0000000 + 800 | 4 | 800 | 4 | 4 | .0000000 | 1401-06-01 | 40 | .0000000 | 1 | 1.0000000 | 800.0000000 | .0000000 | 1.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty-ow_sale.cn),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.pn desc rows between unbounded preceding and floor(ow_sale.qty) preceding ); -- mvd 1,2,8,4,6->7; + prc | cn | prc | vn | prc | pn | to_char | dt +------+----+------+----+------+-----+-------------------+------------ + 0 | 1 | 0 | 10 | 0 | 200 | .0000000 | 1401-03-01 + 5 | 3 | 5 | 30 | 5 | 600 | .0000000 | 1401-06-01 + 1 | 4 | 1 | 40 | 1 | 800 | .0000000 | 1401-06-01 + 2400 | 2 | 2400 | 40 | 2400 | 100 | .0000000 | 1401-01-01 + 0 | 1 | 0 | 20 | 0 | 100 | .0000000 | 1401-05-01 + 0 | 3 | 0 | 40 | 0 | 200 | .0000000 | 1401-04-01 + 0 | 1 | 0 | 30 | 0 | 300 | .0000000 | 1401-05-02 + 0 | 1 | 0 | 50 | 0 | 400 | .0000000 | 1401-06-01 + 0 | 2 | 0 | 50 | 0 | 400 | .0000000 | 1401-06-01 + 5 | 1 | 5 | 30 | 5 | 500 | .0000000 | 1401-06-01 + 5 | 3 | 5 | 30 | 5 | 500 | .0000000 | 1401-06-01 + 1 | 4 | 1 | 40 | 1 | 700 | .0000000 | 1401-06-01 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc+ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and 2 preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 6,3,7->5; 7->8; + vn | vn | dt | qty | to_char | cn | pn | to_char +----+----+------------+------+-------------------+----+-----+------------------- + 40 | 40 | 1401-01-01 | 1100 | .0000000 | 2 | 100 | .0000000 + 10 | 10 | 1401-03-01 | 1 | .0000000 | 1 | 200 | 4800.0000000 + 40 | 40 | 1401-04-01 | 1 | .0000000 | 3 | 200 | .0000000 + 20 | 20 | 1401-05-01 | 1 | .0000000 | 1 | 100 | .0000000 + 30 | 30 | 1401-05-02 | 1 | .0000000 | 1 | 300 | .0000000 + 50 | 50 | 1401-06-01 | 1 | .0000000 | 1 | 400 | .0000000 + 50 | 50 | 1401-06-01 | 1 | .0000000 | 2 | 400 | .0000000 + 30 | 30 | 1401-06-01 | 12 | .0000000 | 1 | 500 | .0000000 + 30 | 30 | 1401-06-01 | 12 | .0000000 | 3 | 500 | .0000000 + 30 | 30 | 1401-06-01 | 12 | .0000000 | 3 | 600 | .0000000 + 40 | 40 | 1401-06-01 | 1 | .0000000 | 4 | 700 | .0000000 + 40 | 40 | 1401-06-01 | 1 | .0000000 | 4 | 800 | 10.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn+ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between unbounded preceding and current row ); -- mvd 4,5,2,1->3; + pn | vn | to_char | prc | cn +-----+----+-------------------+------+---- + 300 | 30 | .0000000 | 0 | 1 + 400 | 50 | .0000000 | 0 | 1 + 400 | 50 | .0000000 | 0 | 2 + 500 | 30 | .0000000 | 5 | 1 + 500 | 30 | .0000000 | 5 | 3 + 700 | 40 | .0000000 | 1 | 4 + 100 | 20 | .0000000 | 0 | 1 + 100 | 40 | .0000000 | 2400 | 2 + 200 | 10 | .0000000 | 0 | 1 + 200 | 40 | .0000000 | 0 | 3 + 600 | 30 | .0000000 | 5 | 3 + 800 | 40 | .0000000 | 1 | 4 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn/ow_sale.qty) as int),cast (floor(ow_sale.cn*ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 6,1,3->5; 6,1,3->7; 1,9,4->8; 1->10; + cn | cn | pn | vn | to_char | prc | to_char | to_char | qty | to_char +----+----+-----+----+-------------------+------+-------------------+-------------------+------+------------------- + 2 | 2 | 100 | 40 | .0000000 | 2400 | 2400.0000000 | .0000000 | 1100 | .0000000 + 1 | 1 | 200 | 10 | .0000000 | 0 | .0000000 | .0000000 | 1 | .0000000 + 3 | 3 | 200 | 40 | .0000000 | 0 | .0000000 | .0000000 | 1 | .0000000 + 1 | 1 | 100 | 20 | .0000000 | 0 | .0000000 | .0000000 | 1 | 3.0000000 + 1 | 1 | 300 | 30 | .0000000 | 0 | .0000000 | .0000000 | 1 | 1.0000000 + 1 | 1 | 400 | 50 | .0000000 | 0 | .0000000 | .0000000 | 1 | 1.0000000 + 2 | 2 | 400 | 50 | .0000000 | 0 | .0000000 | 1.0000000 | 1 | 3.0000000 + 1 | 1 | 500 | 30 | .0000000 | 5 | 5.0000000 | .0000000 | 12 | 2.0000000 + 3 | 3 | 500 | 30 | .0000000 | 5 | 5.0000000 | .5000000 | 12 | .0000000 + 3 | 3 | 600 | 30 | .0000000 | 5 | 5.0000000 | .5000000 | 12 | .0000000 + 4 | 4 | 700 | 40 | .0000000 | 1 | 1.0000000 | .5000000 | 1 | .0000000 + 4 | 4 | 800 | 40 | .0000000 | 1 | 1.0000000 | .5000000 | 1 | .0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn/ow_sale.vn),floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc rows between unbounded preceding and 8 following ); -- mvd 7,1,3,8->6; + cn | prc | vn | qty | cn | to_char | dt | pn +----+------+----+------+----+-------------------+------------+----- + 1 | 0 | 30 | 1 | 1 | .0000000 | 1401-05-02 | 300 + 1 | 5 | 30 | 12 | 1 | .0000000 | 1401-06-01 | 500 + 3 | 5 | 30 | 12 | 3 | .0000000 | 1401-06-01 | 500 + 2 | 2400 | 40 | 1100 | 2 | .0000000 | 1401-01-01 | 100 + 4 | 1 | 40 | 1 | 4 | .0000000 | 1401-06-01 | 700 + 1 | 0 | 50 | 1 | 1 | .0000000 | 1401-06-01 | 400 + 1 | 0 | 10 | 1 | 1 | .0000000 | 1401-03-01 | 200 + 1 | 0 | 20 | 1 | 1 | .0000000 | 1401-05-01 | 100 + 3 | 5 | 30 | 12 | 3 | .0000000 | 1401-06-01 | 600 + 3 | 0 | 40 | 1 | 3 | .0000000 | 1401-04-01 | 200 + 4 | 1 | 40 | 1 | 4 | .0000000 | 1401-06-01 | 800 + 2 | 0 | 50 | 1 | 2 | .0000000 | 1401-06-01 | 400 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn/ow_sale.cn) as int),cast (floor(ow_sale.pn+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.cn desc rows between unbounded preceding and 4 following ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 5,6,7,2,8->4; 8->9; 6->10; 8->11; + prc | qty | qty | to_char | dt | cn | vn | pn | to_char | to_char | to_char +------+------+------+-------------------+------------+----+----+-----+-------------------+-------------------+------------------- + 2400 | 1100 | 1100 | .0000000 | 1401-01-01 | 2 | 40 | 100 | .0000000 | .0000000 | 20.0000000 + 0 | 1 | 1 | .0000000 | 1401-03-01 | 1 | 10 | 200 | .1818182 | .0000000 | 10.0000000 + 0 | 1 | 1 | .0000000 | 1401-04-01 | 3 | 40 | 200 | .1818182 | .0000000 | 10.0000000 + 0 | 1 | 1 | .0000000 | 1401-05-01 | 1 | 20 | 100 | .0000000 | .0000000 | 20.0000000 + 0 | 1 | 1 | .0000000 | 1401-05-02 | 1 | 30 | 300 | .3636364 | .0000000 | 10.0000000 + 0 | 1 | 1 | .0000000 | 1401-06-01 | 1 | 50 | 400 | .4545455 | .0000000 | 10.0000000 + 0 | 1 | 1 | .0000000 | 1401-06-01 | 2 | 50 | 400 | .4545455 | .0000000 | 10.0000000 + 5 | 12 | 12 | .0000000 | 1401-06-01 | 1 | 30 | 500 | .6363636 | .0000000 | 10.0000000 + 5 | 12 | 12 | .0000000 | 1401-06-01 | 3 | 30 | 500 | .6363636 | .0000000 | 10.0000000 + 5 | 12 | 12 | .0000000 | 1401-06-01 | 3 | 30 | 600 | .8181818 | .0000000 | 10.0000000 + 1 | 1 | 1 | .0000000 | 1401-06-01 | 4 | 40 | 700 | .9090909 | .0000000 | 10.0000000 + 1 | 1 | 1 | .0000000 | 1401-06-01 | 4 | 40 | 800 | 1.0000000 | .0000000 | 10.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.qty order by ow_sale.pn desc); -- mvd 2,8,1->7; 2,8,1->9; 2,8,1->10; 12,1->11; 2,8,1->13; + pn | cn | pn | prc | dt | cn | to_char | vn | to_char | to_char | to_char | qty | to_char +-----+----+-----+------+------------+----+-------------------+----+-------------------+-------------------+-------------------+------+------------------- + 100 | 1 | 100 | 0 | 1401-05-01 | 1 | .0000000 | 20 | 1.0000000 | -99.0000000 | 1.0000000 | 1 | 1.0000000 + 200 | 1 | 200 | 0 | 1401-03-01 | 1 | .0000000 | 10 | 1.0000000 | -199.0000000 | .8750000 | 1 | 1.0000000 + 400 | 2 | 400 | 0 | 1401-06-01 | 2 | .0000000 | 50 | .0000000 | -398.0000000 | .5000000 | 1 | 2.0000000 + 200 | 3 | 200 | 0 | 1401-04-01 | 3 | .0000000 | 40 | .0000000 | -197.0000000 | .8750000 | 1 | 3.0000000 + 600 | 3 | 600 | 5 | 1401-06-01 | 3 | .0000000 | 30 | 4.0000000 | -597.0000000 | .3333333 | 12 | 3.0000000 + 800 | 4 | 800 | 1 | 1401-06-01 | 4 | .0000000 | 40 | .0000000 | -796.0000000 | .1250000 | 1 | 4.0000000 + 300 | 1 | 300 | 0 | 1401-05-02 | 1 | .0000000 | 30 | 1.0000000 | -299.0000000 | .6250000 | 1 | 1.0000000 + 400 | 1 | 400 | 0 | 1401-06-01 | 1 | .0000000 | 50 | 1.0000000 | -399.0000000 | .5000000 | 1 | 1.0000000 + 500 | 1 | 500 | 5 | 1401-06-01 | 1 | .0000000 | 30 | 12.0000000 | -499.0000000 | 1.0000000 | 12 | 1.0000000 + 100 | 2 | 100 | 2400 | 1401-01-01 | 2 | .0000000 | 40 | 550.0000000 | -98.0000000 | 1.0000000 | 1100 | 2.0000000 + 500 | 3 | 500 | 5 | 1401-06-01 | 3 | .0000000 | 30 | 4.0000000 | -497.0000000 | 1.0000000 | 12 | 3.0000000 + 700 | 4 | 700 | 1 | 1401-06-01 | 4 | .0000000 | 40 | .0000000 | -696.0000000 | .2500000 | 1 | 4.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty-ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.cn*ow_sale.qty) preceding and 0 preceding ); -- mvd 5,6,3,7->4; + qty | qty | cn | to_char | prc | dt | pn +------+------+----+-------------------+------+------------+----- + 1 | 1 | 1 | .0000000 | 0 | 1401-05-01 | 100 + 1 | 1 | 1 | .0000000 | 0 | 1401-05-02 | 300 + 1 | 1 | 1 | .0000000 | 0 | 1401-06-01 | 400 + 12 | 12 | 1 | .0000000 | 5 | 1401-06-01 | 500 + 1 | 1 | 3 | .0000000 | 0 | 1401-04-01 | 200 + 12 | 12 | 3 | .0000000 | 5 | 1401-06-01 | 500 + 1 | 1 | 4 | .0000000 | 1 | 1401-06-01 | 800 + 1 | 1 | 1 | .0000000 | 0 | 1401-03-01 | 200 + 1100 | 1100 | 2 | .0000000 | 2400 | 1401-01-01 | 100 + 1 | 1 | 2 | .0000000 | 0 | 1401-06-01 | 400 + 12 | 12 | 3 | .0000000 | 5 | 1401-06-01 | 600 + 1 | 1 | 4 | .0000000 | 1 | 1401-06-01 | 700 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between 0 preceding and floor(ow_sale.vn) preceding ), +win2 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.vn desc); -- mvd 2,4,1->3; 2,4->5; + pn | dt | to_char | vn | to_char +-----+------------+-------------------+----+------------------- + 200 | 1401-03-01 | .0000000 | 10 | 1.0000000 + 300 | 1401-05-02 | .0000000 | 30 | 1.0000000 + 500 | 1401-06-01 | .0000000 | 30 | 1.0000000 + 600 | 1401-06-01 | .0000000 | 30 | 1.0000000 + 500 | 1401-06-01 | .0000000 | 30 | 1.0000000 + 800 | 1401-06-01 | .0000000 | 40 | 1.0000000 + 700 | 1401-06-01 | .0000000 | 40 | 1.0000000 + 400 | 1401-06-01 | .0000000 | 50 | 1.0000000 + 400 | 1401-06-01 | .0000000 | 50 | 1.0000000 + 100 | 1401-05-01 | .0000000 | 20 | 1.0000000 + 100 | 1401-01-01 | .0000000 | 40 | 1.0000000 + 200 | 1401-04-01 | .0000000 | 40 | 1.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.dt,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn-ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between 3 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between 3 preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.vn asc); -- mvd 2,1,6->5; 8->7; 2,1,6->9; 2,1,6->10; + cn | dt | prc | cn | to_char | pn | to_char | vn | to_char | to_char +----+------------+------+----+-------------------+-----+-------------------+----+-------------------+------------------- + 1 | 1401-05-01 | 0 | 1 | .0000000 | 100 | 1.0000000 | 20 | 1.0000000 | 1.0000000 + 3 | 1401-04-01 | 0 | 3 | .0000000 | 200 | 1.0000000 | 40 | 1.0000000 | 1.0000000 + 1 | 1401-05-02 | 0 | 1 | .0000000 | 300 | 1.0000000 | 30 | 1.0000000 | 1.0000000 + 1 | 1401-06-01 | 0 | 1 | .0000000 | 400 | 1.0000000 | 50 | 1.0000000 | 1.0000000 + 1 | 1401-06-01 | 5 | 1 | .0000000 | 500 | 3.0000000 | 30 | 1.0000000 | 1.0000000 + 3 | 1401-06-01 | 5 | 3 | .0000000 | 500 | 4.0000000 | 30 | 1.0000000 | 1.0000000 + 4 | 1401-06-01 | 1 | 4 | .0000000 | 700 | 3.0000000 | 40 | 1.0000000 | 1.0000000 + 2 | 1401-01-01 | 2400 | 2 | .0000000 | 100 | 2.0000000 | 40 | 1.0000000 | 1.0000000 + 1 | 1401-03-01 | 0 | 1 | .0000000 | 200 | 1.0000000 | 10 | 1.0000000 | 1.0000000 + 2 | 1401-06-01 | 0 | 2 | .0000000 | 400 | 2.0000000 | 50 | 1.0000000 | 1.0000000 + 3 | 1401-06-01 | 5 | 3 | .0000000 | 600 | 2.0000000 | 30 | 1.0000000 | 1.0000000 + 4 | 1401-06-01 | 1 | 4 | .0000000 | 800 | 4.0000000 | 40 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc rows between floor(ow_sale.qty) preceding and 8 following ); -- mvd 1,6,4->5; + dt | qty | qty | pn | to_char | vn +------------+------+------+-----+-------------------+---- + 1401-03-01 | 1 | 1 | 200 | .0000000 | 10 + 1401-06-01 | 12 | 12 | 600 | .0000000 | 30 + 1401-06-01 | 1 | 1 | 700 | .0000000 | 40 + 1401-05-01 | 1 | 1 | 100 | .0000000 | 20 + 1401-01-01 | 1100 | 1100 | 100 | .0000000 | 40 + 1401-04-01 | 1 | 1 | 200 | .0000000 | 40 + 1401-05-02 | 1 | 1 | 300 | .0000000 | 30 + 1401-06-01 | 1 | 1 | 400 | .0000000 | 50 + 1401-06-01 | 1 | 1 | 400 | .0000000 | 50 + 1401-06-01 | 12 | 12 | 500 | .0000000 | 30 + 1401-06-01 | 12 | 12 | 500 | .0000000 | 30 + 1401-06-01 | 1 | 1 | 800 | .0000000 | 40 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn-ow_sale.pn),floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.cn asc rows between 1 preceding and 0 following ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.cn desc), +win4 as (partition by ow_sale.cn,ow_sale.qty order by ow_sale.cn desc), +win5 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.vn desc); -- mvd 2,6,7,4->5; 9->8; 7,6,4->10; 6,1->11; 9->12; 6,9,4->13; + qty | prc | qty | pn | to_char | cn | dt | to_char | vn | to_char | to_char | to_char | to_char +------+------+------+-----+-------------------+----+------------+-------------------+----+-------------------+-------------------+-------------------+------------------- + 1 | 0 | 1 | 400 | .0000000 | 2 | 1401-06-01 | .0000000 | 50 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 0 | 1 | 400 | .0000000 | 1 | 1401-06-01 | .0000000 | 50 | .0000000 | 4.0000000 | 1.0000000 | 1.0000000 + 1100 | 2400 | 1100 | 100 | .0000000 | 2 | 1401-01-01 | .1818182 | 40 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 0 | 1 | 200 | .0000000 | 3 | 1401-04-01 | .1818182 | 40 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 1 | 700 | .0000000 | 4 | 1401-06-01 | .1818182 | 40 | .0000000 | 2.0000000 | 1.0000000 | 1.0000000 + 1 | 1 | 1 | 800 | .0000000 | 4 | 1401-06-01 | .1818182 | 40 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 12 | 5 | 12 | 600 | .0000000 | 3 | 1401-06-01 | .5454545 | 30 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 12 | 5 | 12 | 500 | .0000000 | 3 | 1401-06-01 | .5454545 | 30 | .0000000 | 2.0000000 | 1.0000000 | 1.0000000 + 12 | 5 | 12 | 500 | .0000000 | 1 | 1401-06-01 | .5454545 | 30 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 0 | 1 | 300 | .0000000 | 1 | 1401-05-02 | .5454545 | 30 | .0000000 | 3.0000000 | 1.0000000 | 1.0000000 + 1 | 0 | 1 | 100 | .0000000 | 1 | 1401-05-01 | .9090909 | 20 | .0000000 | 2.0000000 | 1.0000000 | 1.0000000 + 1 | 0 | 1 | 200 | .0000000 | 1 | 1401-03-01 | 1.0000000 | 10 | .0000000 | 1.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn/ow_sale.vn)) OVER(partition by ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows between 0 preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows between 0 preceding and unbounded following ), +win2 as (partition by ow_sale.vn order by ow_sale.cn desc), +win3 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.dt order by ow_sale.cn asc); -- mvd 3,4->2; 4,1->5; 3,4,7,1,8->6; 3,4->9; 4,1->10; 4,1->11; + vn | to_char | prc | cn | to_char | to_char | dt | pn | to_char | to_char | to_char +----+-------------------+------+----+-------------------+-------------------+------------+-----+-------------------+-------------------+------------------- + 40 | .0000000 | 1 | 4 | 1.0000000 | 1.0000000 | 1401-06-01 | 700 | 2.0000000 | 1.0000000 | .0000000 + 40 | .0000000 | 1 | 4 | 1.0000000 | 1.0000000 | 1401-06-01 | 800 | 1.0000000 | 2.0000000 | .0000000 + 10 | 3.5000000 | 0 | 1 | 1.0000000 | 1.0000000 | 1401-03-01 | 200 | 6.0000000 | 1.0000000 | .0000000 + 40 | 3.2000000 | 0 | 3 | 3.0000000 | 1.0000000 | 1401-04-01 | 200 | 5.0000000 | 3.0000000 | .6666667 + 20 | .7500000 | 0 | 1 | 1.0000000 | 1.0000000 | 1401-05-01 | 100 | 4.0000000 | 1.0000000 | .0000000 + 30 | .6666667 | 0 | 1 | 3.0000000 | 1.0000000 | 1401-05-02 | 300 | 3.0000000 | 3.0000000 | .6666667 + 50 | .5000000 | 0 | 1 | 2.0000000 | 1.0000000 | 1401-06-01 | 400 | 2.0000000 | 2.0000000 | 1.0000000 + 50 | .0000000 | 0 | 2 | 1.0000000 | 1.0000000 | 1401-06-01 | 400 | 1.0000000 | 1.0000000 | .0000000 + 30 | 2.6666667 | 5 | 1 | 3.0000000 | 1.0000000 | 1401-06-01 | 500 | 3.0000000 | 4.0000000 | .6666667 + 30 | .0000000 | 5 | 3 | 1.0000000 | 1.0000000 | 1401-06-01 | 500 | 2.0000000 | 2.0000000 | .0000000 + 30 | .0000000 | 5 | 3 | 1.0000000 | 1.0000000 | 1401-06-01 | 600 | 1.0000000 | 1.0000000 | .0000000 + 40 | .0000000 | 2400 | 2 | 4.0000000 | 1.0000000 | 1401-01-01 | 100 | 1.0000000 | 4.0000000 | 1.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn-ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc rows between current row and current row ); -- mvd 4,5,6->3; + prc | prc | to_char | cn | vn | pn +------+------+-------------------+----+----+----- + 0 | 0 | .0000000 | 1 | 20 | 100 + 0 | 0 | .0000000 | 1 | 10 | 200 + 0 | 0 | .0000000 | 3 | 40 | 200 + 0 | 0 | .0000000 | 2 | 50 | 400 + 5 | 5 | .0000000 | 3 | 30 | 600 + 1 | 1 | .0000000 | 4 | 40 | 800 + 2400 | 2400 | .0000000 | 2 | 40 | 100 + 0 | 0 | .0000000 | 1 | 30 | 300 + 0 | 0 | .0000000 | 1 | 50 | 400 + 5 | 5 | .0000000 | 1 | 30 | 500 + 5 | 5 | .0000000 | 3 | 30 | 500 + 1 | 1 | .0000000 | 4 | 40 | 700 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.vn desc rows between current row and current row ), +win2 as (order by ow_sale.cn asc); -- mvd 1,5,2,3,6->4; 1->7; 1->8; + cn | vn | qty | to_char | dt | pn | to_char | to_char +----+----+------+-------------------+------------+-----+-------------------+------------------- + 1 | 50 | 1 | .0000000 | 1401-06-01 | 400 | 1.0000000 | 1.0000000 + 1 | 30 | 1 | .0000000 | 1401-05-02 | 300 | 1.0000000 | 1.0000000 + 1 | 20 | 1 | .0000000 | 1401-05-01 | 100 | 1.0000000 | 1.0000000 + 1 | 10 | 1 | .0000000 | 1401-03-01 | 200 | 1.0000000 | 1.0000000 + 1 | 30 | 12 | .0000000 | 1401-06-01 | 500 | 1.0000000 | 1.0000000 + 2 | 40 | 1100 | .0000000 | 1401-01-01 | 100 | 2.0000000 | 6.0000000 + 2 | 50 | 1 | .0000000 | 1401-06-01 | 400 | 2.0000000 | 6.0000000 + 3 | 30 | 12 | .0000000 | 1401-06-01 | 600 | 3.0000000 | 8.0000000 + 3 | 40 | 1 | .0000000 | 1401-04-01 | 200 | 3.0000000 | 8.0000000 + 3 | 30 | 12 | .0000000 | 1401-06-01 | 500 | 3.0000000 | 8.0000000 + 4 | 40 | 1 | .0000000 | 1401-06-01 | 700 | 4.0000000 | 11.0000000 + 4 | 40 | 1 | .0000000 | 1401-06-01 | 800 | 4.0000000 | 11.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn/ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows between current row and floor(ow_sale.cn-ow_sale.cn) following ); -- mvd 5,2,6->4; + prc | vn | vn | to_char | dt | pn +------+----+----+-------------------+------------+----- + 0 | 10 | 10 | .0000000 | 1401-03-01 | 200 + 0 | 30 | 30 | .0000000 | 1401-05-02 | 300 + 5 | 30 | 30 | .0000000 | 1401-06-01 | 500 + 5 | 30 | 30 | .0000000 | 1401-06-01 | 500 + 5 | 30 | 30 | .0000000 | 1401-06-01 | 600 + 1 | 40 | 40 | .0000000 | 1401-06-01 | 700 + 1 | 40 | 40 | .0000000 | 1401-06-01 | 800 + 0 | 50 | 50 | .0000000 | 1401-06-01 | 400 + 0 | 50 | 50 | .0000000 | 1401-06-01 | 400 + 2400 | 40 | 40 | .0000000 | 1401-01-01 | 100 + 0 | 40 | 40 | .0000000 | 1401-04-01 | 200 + 0 | 20 | 20 | .0000000 | 1401-05-01 | 100 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows between current row and floor(ow_sale.qty-ow_sale.qty) following ), +win2 as (order by ow_sale.cn asc); -- mvd 8,9,1->7; 9->10; + vn | prc | pn | vn | pn | prc | to_char | dt | cn | to_char +----+------+-----+----+-----+------+-------------------+------------+----+------------------- + 20 | 0 | 100 | 20 | 100 | 0 | .0000000 | 1401-05-01 | 1 | 1.0000000 + 10 | 0 | 200 | 10 | 200 | 0 | .0000000 | 1401-03-01 | 1 | 1.0000000 + 30 | 0 | 300 | 30 | 300 | 0 | .0000000 | 1401-05-02 | 1 | 1.0000000 + 50 | 0 | 400 | 50 | 400 | 0 | .0000000 | 1401-06-01 | 1 | 1.0000000 + 30 | 5 | 500 | 30 | 500 | 5 | .0000000 | 1401-06-01 | 1 | 1.0000000 + 40 | 2400 | 100 | 40 | 100 | 2400 | .0000000 | 1401-01-01 | 2 | 6.0000000 + 50 | 0 | 400 | 50 | 400 | 0 | .0000000 | 1401-06-01 | 2 | 6.0000000 + 40 | 0 | 200 | 40 | 200 | 0 | .0000000 | 1401-04-01 | 3 | 8.0000000 + 30 | 5 | 500 | 30 | 500 | 5 | .0000000 | 1401-06-01 | 3 | 8.0000000 + 30 | 5 | 600 | 30 | 600 | 5 | .0000000 | 1401-06-01 | 3 | 8.0000000 + 40 | 1 | 700 | 40 | 700 | 1 | .0000000 | 1401-06-01 | 4 | 11.0000000 + 40 | 1 | 800 | 40 | 800 | 1 | .0000000 | 1401-06-01 | 4 | 11.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.cn desc rows between current row and unbounded following ); -- mvd 1,8,2,9,5->7; + cn | vn | prc | cn | pn | pn | to_char | dt | qty +----+----+------+----+-----+-----+-------------------+------------+------ + 1 | 10 | 0 | 1 | 200 | 200 | .0000000 | 1401-03-01 | 1 + 3 | 40 | 0 | 3 | 200 | 200 | .0000000 | 1401-04-01 | 1 + 1 | 20 | 0 | 1 | 100 | 100 | .0000000 | 1401-05-01 | 1 + 2 | 50 | 0 | 2 | 400 | 400 | .0000000 | 1401-06-01 | 1 + 4 | 40 | 1 | 4 | 800 | 800 | .0000000 | 1401-06-01 | 1 + 3 | 30 | 5 | 3 | 600 | 600 | .0000000 | 1401-06-01 | 12 + 2 | 40 | 2400 | 2 | 100 | 100 | .0000000 | 1401-01-01 | 1100 + 1 | 30 | 0 | 1 | 300 | 300 | .0000000 | 1401-05-02 | 1 + 1 | 50 | 0 | 1 | 400 | 400 | .0000000 | 1401-06-01 | 1 + 4 | 40 | 1 | 4 | 700 | 700 | .0000000 | 1401-06-01 | 1 + 1 | 30 | 5 | 1 | 500 | 500 | .0000000 | 1401-06-01 | 12 + 3 | 30 | 5 | 3 | 500 | 500 | .0000000 | 1401-06-01 | 12 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ); -- mvd 5->4; 5->6; 5->7; + vn | qty | pn | to_char | cn | to_char | to_char +----+------+-----+-------------------+----+-------------------+------------------- + 10 | 1 | 200 | 880.0000000 | 1 | 5.0000000 | 1.0000000 + 20 | 1 | 100 | 475.0000000 | 1 | 4.0000000 | 1.0000000 + 30 | 1 | 300 | 266.6666667 | 1 | 3.0000000 | 1.0000000 + 50 | 1 | 400 | 200.0000000 | 1 | 2.0000000 | 1.0000000 + 30 | 12 | 500 | .0000000 | 1 | 1.0000000 | 12.0000000 + 40 | 1 | 200 | 66.6666667 | 3 | 3.0000000 | 1.0000000 + 30 | 12 | 500 | .0000000 | 3 | 2.0000000 | 12.0000000 + 30 | 12 | 600 | .0000000 | 3 | 1.0000000 | 12.0000000 + 40 | 1100 | 100 | 50.0000000 | 2 | 2.0000000 | 1.0000000 + 50 | 1 | 400 | .0000000 | 2 | 1.0000000 | 1.0000000 + 40 | 1 | 700 | .0000000 | 4 | 2.0000000 | 1.0000000 + 40 | 1 | 800 | .0000000 | 4 | 1.0000000 | 1.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn+ow_sale.cn),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.vn desc rows between floor(ow_sale.pn) following and floor(ow_sale.prc*ow_sale.vn) following ); -- mvd 4,5->3; + prc | qty | to_char | cn | vn +------+------+-------------------+----+---- + 0 | 1 | .0000000 | 1 | 10 + 0 | 1 | .0000000 | 1 | 20 + 0 | 1 | .0000000 | 1 | 30 + 5 | 12 | .0000000 | 1 | 30 + 5 | 12 | .0000000 | 3 | 30 + 5 | 12 | .0000000 | 3 | 30 + 2400 | 1100 | .0000000 | 2 | 40 + 0 | 1 | .0000000 | 3 | 40 + 1 | 1 | .0000000 | 4 | 40 + 1 | 1 | .0000000 | 4 | 40 + 0 | 1 | .0000000 | 1 | 50 + 0 | 1 | .0000000 | 2 | 50 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn/ow_sale.vn),floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.pn)) OVER(partition by ow_sale.dt order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.cn) following and 3 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty*ow_sale.qty)) OVER(partition by ow_sale.dt order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.cn) following and 3 following ), +win2 as (partition by ow_sale.dt order by ow_sale.cn desc); -- mvd 4,1->3; 4,1->5; 4,2->6; 4,2->7; 4,1->8; 4,2->9; + vn | dt | to_char | cn | to_char | to_char | to_char | to_char | to_char +----+------------+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 10 | 1401-03-01 | .0000000 | 1 | .0000000 | 1.0000000 | 400.0000000 | .0000000 | 1.0000000 + 20 | 1401-05-01 | .0000000 | 1 | .0000000 | 1.0000000 | 200.0000000 | .0000000 | 1.0000000 + 30 | 1401-05-02 | .0000000 | 1 | 1.0000000 | 1.0000000 | 600.0000000 | 1.0000000 | 1.0000000 + 30 | 1401-06-01 | .0000000 | 1 | .0000000 | 1.0000000 | 1600.0000000 | .0000000 | 144.0000000 + 30 | 1401-06-01 | .0000000 | 3 | .0000000 | .5714286 | 1600.0000000 | .0000000 | 144.0000000 + 30 | 1401-06-01 | .0000000 | 3 | .0000000 | .5714286 | 1600.0000000 | .0000000 | 144.0000000 + 40 | 1401-04-01 | .0000000 | 3 | .0000000 | 1.0000000 | 400.0000000 | .0000000 | 1.0000000 + 50 | 1401-06-01 | .0000000 | 1 | .0000000 | 1.0000000 | 1600.0000000 | .0000000 | 144.0000000 + 40 | 1401-01-01 | .0000000 | 2 | .0000000 | 1.0000000 | 200.0000000 | .0000000 | 1210000.0000000 + 40 | 1401-06-01 | .0000000 | 4 | .0000000 | .2857143 | 1600.0000000 | .0000000 | 1.0000000 + 40 | 1401-06-01 | .0000000 | 4 | .0000000 | .2857143 | 1600.0000000 | .0000000 | 1.0000000 + 50 | 1401-06-01 | .0000000 | 2 | .0000000 | .7142857 | 1600.0000000 | .0000000 | 144.0000000 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between 8 following and unbounded following ); -- mvd 1,3,4->2; + cn | to_char | vn | pn +----+-------------------+----+----- + 1 | .0000000 | 10 | 200 + 1 | .0000000 | 20 | 100 + 1 | .0000000 | 30 | 300 + 1 | .0000000 | 30 | 500 + 1 | .0000000 | 50 | 400 + 3 | .0000000 | 30 | 500 + 3 | .0000000 | 30 | 600 + 3 | .0000000 | 40 | 200 + 2 | .0000000 | 40 | 100 + 2 | .0000000 | 50 | 400 + 4 | .0000000 | 40 | 700 + 4 | .0000000 | 40 | 800 +(12 rows) + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn*ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.pn) following and unbounded following ), +win2 as (order by ow_sale.vn asc); -- mvd 3,4->2; 4->5; + dt | to_char | prc | vn | to_char +------------+-------------------+------+----+------------------- + 1401-03-01 | .0000000 | 0 | 10 | 1.0000000 + 1401-05-01 | .0000000 | 0 | 20 | 2.0000000 + 1401-06-01 | .0000000 | 5 | 30 | 3.0000000 + 1401-06-01 | .0000000 | 5 | 30 | 4.0000000 + 1401-05-02 | .0000000 | 0 | 30 | 5.0000000 + 1401-06-01 | .0000000 | 5 | 30 | 6.0000000 + 1401-01-01 | .0000000 | 2400 | 40 | 7.0000000 + 1401-04-01 | .0000000 | 0 | 40 | 8.0000000 + 1401-06-01 | .0000000 | 1 | 40 | 9.0000000 + 1401-06-01 | .0000000 | 1 | 40 | 10.0000000 + 1401-06-01 | .0000000 | 0 | 50 | 11.0000000 + 1401-06-01 | .0000000 | 0 | 50 | 12.0000000 +(12 rows) + +-- FIRST_VALUE() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 3->7; + qty | qty | vn | pn | cn | cn | to_char +------+------+----+-----+----+----+------------------- + 1100 | 1100 | 40 | 100 | 2 | 2 | 2400.0000000 + 1 | 1 | 10 | 200 | 1 | 1 | 2400.0000000 + 1 | 1 | 40 | 200 | 3 | 3 | 2400.0000000 + 1 | 1 | 20 | 100 | 1 | 1 | 2400.0000000 + 1 | 1 | 30 | 300 | 1 | 1 | 2400.0000000 + 1 | 1 | 50 | 400 | 1 | 1 | 2400.0000000 + 1 | 1 | 50 | 400 | 2 | 2 | 2400.0000000 + 12 | 12 | 30 | 500 | 1 | 1 | 2400.0000000 + 12 | 12 | 30 | 500 | 3 | 3 | 2400.0000000 + 12 | 12 | 30 | 600 | 3 | 3 | 2400.0000000 + 1 | 1 | 40 | 700 | 4 | 4 | 2400.0000000 + 1 | 1 | 40 | 800 | 4 | 4 | 2400.0000000 +(12 rows) + +-- FIRST_VALUE() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc); -- mvd 2,5->4; 2,5->6; 2,5->7; + pn | cn | qty | to_char | vn | to_char | to_char +-----+----+------+-------------------+----+-------------------+------------------- + 100 | 2 | 1100 | 2398.0000000 | 40 | 2.0000000 | 2.0000000 + 200 | 1 | 1 | 2398.0000000 | 10 | 2.0000000 | 2.0000000 + 200 | 3 | 1 | 2398.0000000 | 40 | 2.0000000 | 2.0000000 + 100 | 1 | 1 | 2398.0000000 | 20 | 2.0000000 | 2.0000000 + 300 | 1 | 1 | 2398.0000000 | 30 | 2.0000000 | 2.0000000 + 400 | 1 | 1 | 2398.0000000 | 50 | 2.0000000 | 2.0000000 + 400 | 2 | 1 | 2398.0000000 | 50 | 2.0000000 | 2.0000000 + 500 | 1 | 12 | 2398.0000000 | 30 | 2.0000000 | 2.0000000 + 500 | 3 | 12 | 2398.0000000 | 30 | 2.0000000 | 2.0000000 + 600 | 3 | 12 | 2398.0000000 | 30 | 2.0000000 | 2.0000000 + 700 | 4 | 1 | 2398.0000000 | 40 | 2.0000000 | 2.0000000 + 800 | 4 | 1 | 2398.0000000 | 40 | 2.0000000 | 2.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc range unbounded preceding ); -- mvd 6->5; + pn | prc | prc | cn | to_char | vn +-----+------+------+----+-------------------+---- + 100 | 2400 | 2400 | 2 | 42.0000000 | 40 + 200 | 0 | 0 | 1 | 42.0000000 | 10 + 200 | 0 | 0 | 3 | 42.0000000 | 40 + 100 | 0 | 0 | 1 | 42.0000000 | 20 + 300 | 0 | 0 | 1 | 42.0000000 | 30 + 400 | 0 | 0 | 1 | 42.0000000 | 50 + 400 | 0 | 0 | 2 | 42.0000000 | 50 + 500 | 5 | 5 | 1 | 42.0000000 | 30 + 500 | 5 | 5 | 3 | 42.0000000 | 30 + 600 | 5 | 5 | 3 | 42.0000000 | 30 + 700 | 1 | 1 | 4 | 42.0000000 | 40 + 800 | 1 | 1 | 4 | 42.0000000 | 40 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn asc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn/ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.vn asc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn asc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn asc range unbounded preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc range unbounded preceding ); -- mvd 6->5; 6->7; 6->8; 6->9; 6->10; +ERROR: division by zero +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc range 2 preceding ); -- mvd 4->3; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc range ... + ^ +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc range 3 preceding ); -- mvd 7->6; 7->8; 7->9; 7->10; 7->11; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 7: WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc range 3... + ^ +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range current row ); -- mvd 4->5; + qty | qty | prc | cn | to_char +------+------+------+----+------------------- + 1100 | 1100 | 2400 | 2 | 2500.0000000 + 1 | 1 | 0 | 1 | 200.0000000 + 1 | 1 | 0 | 3 | 200.0000000 + 1 | 1 | 0 | 1 | 100.0000000 + 1 | 1 | 0 | 1 | 300.0000000 + 1 | 1 | 0 | 1 | 400.0000000 + 1 | 1 | 0 | 2 | 400.0000000 + 12 | 12 | 5 | 1 | 505.0000000 + 12 | 12 | 5 | 3 | 505.0000000 + 12 | 12 | 5 | 3 | 605.0000000 + 1 | 1 | 1 | 4 | 701.0000000 + 1 | 1 | 1 | 4 | 801.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.cn asc range current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range current row ); -- mvd 3->2; 3->4; + pn | to_char | cn | to_char +-----+-------------------+----+------------------- + 100 | 2.0000000 | 2 | -1060.0000000 + 200 | .0000000 | 1 | 9.0000000 + 200 | .0000000 | 3 | 39.0000000 + 100 | .0000000 | 1 | 19.0000000 + 300 | .0000000 | 1 | 29.0000000 + 400 | .0000000 | 1 | 49.0000000 + 400 | .0000000 | 2 | 49.0000000 + 500 | .0000000 | 1 | 18.0000000 + 500 | .0000000 | 3 | 18.0000000 + 600 | .0000000 | 3 | 18.0000000 + 700 | 1.0000000 | 4 | 39.0000000 + 800 | 1.0000000 | 4 | 39.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range between unbounded preceding and floor(ow_sale.qty) preceding ); -- mvd 4->5; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range b... + ^ +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and floor(ow_sale.vn) preceding ); -- mvd 3->2; 3->4; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 4: WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc range b... + ^ +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and current row ); -- mvd 5->4; + prc | qty | pn | to_char | vn +------+------+-----+-------------------+---- + 2400 | 1100 | 100 | 2200.0000000 | 40 + 0 | 1 | 200 | 2200.0000000 | 10 + 0 | 1 | 200 | 2200.0000000 | 40 + 0 | 1 | 100 | 2200.0000000 | 20 + 0 | 1 | 300 | 2200.0000000 | 30 + 0 | 1 | 400 | 2200.0000000 | 50 + 0 | 1 | 400 | 2200.0000000 | 50 + 5 | 12 | 500 | 2200.0000000 | 30 + 5 | 12 | 500 | 2200.0000000 | 30 + 5 | 12 | 600 | 2200.0000000 | 30 + 1 | 1 | 700 | 2200.0000000 | 40 + 1 | 1 | 800 | 2200.0000000 | 40 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.vn desc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn/ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc range between unbounded preceding and current row ); -- mvd 1->5; 1->6; 1->7; + vn | pn | vn | cn | to_char | to_char | to_char +----+-----+----+----+-------------------+-------------------+------------------- + 40 | 100 | 40 | 2 | 200.0000000 | 1100.0000000 | 1.0000000 + 10 | 200 | 10 | 1 | 200.0000000 | 1100.0000000 | 1.0000000 + 40 | 200 | 40 | 3 | 200.0000000 | 1100.0000000 | 1.0000000 + 20 | 100 | 20 | 1 | 200.0000000 | 1100.0000000 | 1.0000000 + 30 | 300 | 30 | 1 | 200.0000000 | 1100.0000000 | 1.0000000 + 50 | 400 | 50 | 1 | 200.0000000 | 1100.0000000 | 1.0000000 + 50 | 400 | 50 | 2 | 200.0000000 | 1100.0000000 | 1.0000000 + 30 | 500 | 30 | 1 | 200.0000000 | 1100.0000000 | 1.0000000 + 30 | 500 | 30 | 3 | 200.0000000 | 1100.0000000 | 1.0000000 + 30 | 600 | 30 | 3 | 200.0000000 | 1100.0000000 | 1.0000000 + 40 | 700 | 40 | 4 | 200.0000000 | 1100.0000000 | 1.0000000 + 40 | 800 | 40 | 4 | 200.0000000 | 1100.0000000 | 1.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between unbounded preceding and 0 following ); -- mvd 8->7; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range ... + ^ +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn desc range between unbounded preceding and floor(ow_sale.prc) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between unbounded preceding and floor(ow_sale.prc) following ); -- mvd 1->4; 1->5; 1->6; 1->7; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 6: WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range ... + ^ +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and unbounded following ); -- mvd 3->2; + prc | to_char | cn +------+-------------------+---- + 2400 | 4.0000000 | 2 + 0 | 4.0000000 | 1 + 0 | 4.0000000 | 3 + 0 | 4.0000000 | 1 + 0 | 4.0000000 | 1 + 0 | 4.0000000 | 1 + 0 | 4.0000000 | 2 + 5 | 4.0000000 | 1 + 5 | 4.0000000 | 3 + 5 | 4.0000000 | 3 + 1 | 4.0000000 | 4 + 1 | 4.0000000 | 4 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.cn desc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.cn desc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn desc range between unbounded preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between unbounded preceding and unbounded following ); -- mvd 6->5; 6->7; 6->8; 6->9; + qty | qty | qty | vn | to_char | cn | to_char | to_char | to_char +------+------+------+----+-------------------+----+-------------------+-------------------+------------------- + 1100 | 1100 | 1100 | 40 | 3500.0000000 | 2 | 2400.0000000 | 2400.0000000 | 100.0000000 + 1 | 1 | 1 | 10 | 3500.0000000 | 1 | 2400.0000000 | 2400.0000000 | 100.0000000 + 1 | 1 | 1 | 40 | 3500.0000000 | 3 | 2400.0000000 | 2400.0000000 | 100.0000000 + 1 | 1 | 1 | 20 | 3500.0000000 | 1 | 2400.0000000 | 2400.0000000 | 100.0000000 + 1 | 1 | 1 | 30 | 3500.0000000 | 1 | 2400.0000000 | 2400.0000000 | 100.0000000 + 1 | 1 | 1 | 50 | 3500.0000000 | 1 | 2400.0000000 | 2400.0000000 | 100.0000000 + 1 | 1 | 1 | 50 | 3500.0000000 | 2 | 2400.0000000 | 2400.0000000 | 100.0000000 + 12 | 12 | 12 | 30 | 3500.0000000 | 1 | 2400.0000000 | 2400.0000000 | 100.0000000 + 12 | 12 | 12 | 30 | 3500.0000000 | 3 | 2400.0000000 | 2400.0000000 | 100.0000000 + 12 | 12 | 12 | 30 | 3500.0000000 | 3 | 2400.0000000 | 2400.0000000 | 100.0000000 + 1 | 1 | 1 | 40 | 3500.0000000 | 4 | 2400.0000000 | 2400.0000000 | 100.0000000 + 1 | 1 | 1 | 40 | 3500.0000000 | 4 | 2400.0000000 | 2400.0000000 | 100.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.prc,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range between floor(ow_sale.prc) preceding and 1 preceding ); -- mvd 5->4; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range b... + ^ +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between floor(ow_sale.qty*ow_sale.prc) preceding and floor(ow_sale.pn-ow_sale.cn) preceding ); -- mvd 6->5; 6->7; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 4: WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range ... + ^ +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range between 4 preceding and current row ); -- mvd 4->6; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range b... + ^ +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.cn asc range between floor(ow_sale.pn) preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range between floor(ow_sale.pn) preceding and current row ); -- mvd 4->3; 4->5; 4->6; 4->7; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 6: WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range b... + ^ +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between floor(ow_sale.vn) preceding and 0 following ); -- mvd 4->3; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range ... + ^ +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.cn desc range between 3 preceding and floor(ow_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.cn desc range between 3 preceding and floor(ow_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn/ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.cn desc range between 3 preceding and floor(ow_sale.cn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between 3 preceding and floor(ow_sale.cn) following ); -- mvd 3->2; 3->4; 3->5; 3->6; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 6: WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range ... + ^ +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc range between 1 preceding and unbounded following ); -- mvd 3->2; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc range ... + ^ +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range between floor(ow_sale.qty) preceding and unbounded following ); -- mvd 2->7; 2->8; 2->9; 2->10; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 6: WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range b... + ^ +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc range between current row and current row ); -- mvd 6->5; + vn | dt | qty | qty | to_char | pn +----+------------+------+------+-------------------+----- + 40 | 1401-01-01 | 1100 | 1100 | 40.0000000 | 100 + 10 | 1401-03-01 | 1 | 1 | 10.0000000 | 200 + 40 | 1401-04-01 | 1 | 1 | 40.0000000 | 200 + 20 | 1401-05-01 | 1 | 1 | 20.0000000 | 100 + 30 | 1401-05-02 | 1 | 1 | 30.0000000 | 300 + 50 | 1401-06-01 | 1 | 1 | 50.0000000 | 400 + 50 | 1401-06-01 | 1 | 1 | 50.0000000 | 400 + 30 | 1401-06-01 | 12 | 12 | 30.0000000 | 500 + 30 | 1401-06-01 | 12 | 12 | 30.0000000 | 500 + 30 | 1401-06-01 | 12 | 12 | 30.0000000 | 600 + 40 | 1401-06-01 | 1 | 1 | 40.0000000 | 700 + 40 | 1401-06-01 | 1 | 1 | 40.0000000 | 800 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn desc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between current row and current row ); -- mvd 5->4; 5->6; 5->7; 5->8; 5->9; 5->10; + pn | pn | dt | to_char | cn | to_char | to_char | to_char | to_char | to_char +-----+-----+------------+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 100 | 100 | 1401-01-01 | 1100.0000000 | 2 | 2400.0000000 | 44000.0000000 | 100.0000000 | 2.0000000 | 2.0000000 + 200 | 200 | 1401-03-01 | 1.0000000 | 1 | .0000000 | 10.0000000 | 200.0000000 | 1.0000000 | 1.0000000 + 200 | 200 | 1401-04-01 | 1.0000000 | 3 | .0000000 | 40.0000000 | 200.0000000 | 3.0000000 | 3.0000000 + 100 | 100 | 1401-05-01 | 1.0000000 | 1 | .0000000 | 20.0000000 | 100.0000000 | 1.0000000 | 1.0000000 + 300 | 300 | 1401-05-02 | 1.0000000 | 1 | .0000000 | 30.0000000 | 300.0000000 | 1.0000000 | 1.0000000 + 400 | 400 | 1401-06-01 | 1.0000000 | 1 | .0000000 | 50.0000000 | 400.0000000 | 1.0000000 | 1.0000000 + 400 | 400 | 1401-06-01 | 1.0000000 | 2 | .0000000 | 50.0000000 | 400.0000000 | 2.0000000 | 2.0000000 + 500 | 500 | 1401-06-01 | 12.0000000 | 1 | 5.0000000 | 360.0000000 | 500.0000000 | 1.0000000 | 1.0000000 + 500 | 500 | 1401-06-01 | 12.0000000 | 3 | 5.0000000 | 360.0000000 | 500.0000000 | 3.0000000 | 3.0000000 + 600 | 600 | 1401-06-01 | 12.0000000 | 3 | 5.0000000 | 360.0000000 | 600.0000000 | 3.0000000 | 3.0000000 + 700 | 700 | 1401-06-01 | 1.0000000 | 4 | 1.0000000 | 40.0000000 | 700.0000000 | 4.0000000 | 4.0000000 + 800 | 800 | 1401-06-01 | 1.0000000 | 4 | 1.0000000 | 40.0000000 | 800.0000000 | 4.0000000 | 4.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range between current row and 2 following ); -- mvd 6->5; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range b... + ^ +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.cn desc range between current row and 0 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between current row and 0 following ); -- mvd 5->6; 5->7; 5->8; 5->9; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 6: WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range ... + ^ +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc range between current row and unbounded following ); -- mvd 5->4; + qty | qty | pn | to_char | vn +------+------+-----+-------------------+---- + 1100 | 1100 | 100 | 1102.0000000 | 40 + 1 | 1 | 200 | 2.0000000 | 10 + 1 | 1 | 200 | 4.0000000 | 40 + 1 | 1 | 100 | 2.0000000 | 20 + 1 | 1 | 300 | 2.0000000 | 30 + 1 | 1 | 400 | 2.0000000 | 50 + 1 | 1 | 400 | 3.0000000 | 50 + 12 | 12 | 500 | 13.0000000 | 30 + 12 | 12 | 500 | 15.0000000 | 30 + 12 | 12 | 600 | 15.0000000 | 30 + 1 | 1 | 700 | 5.0000000 | 40 + 1 | 1 | 800 | 5.0000000 | 40 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.cn desc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn desc range between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between current row and unbounded following ); -- mvd 6->5; 6->7; 6->8; 6->9; 6->10; 6->11; + qty | pn | qty | qty | to_char | cn | to_char | to_char | to_char | to_char | to_char +------+-----+------+------+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 1100 | 100 | 1100 | 1100 | 2400.0000000 | 2 | 2400.0000000 | 80.0000000 | 2.0000000 | 40.0000000 | 100.0000000 + 1 | 200 | 1 | 1 | .0000000 | 1 | .0000000 | 20.0000000 | 1.0000000 | 10.0000000 | 200.0000000 + 1 | 200 | 1 | 1 | .0000000 | 3 | .0000000 | 80.0000000 | 3.0000000 | 40.0000000 | 200.0000000 + 1 | 100 | 1 | 1 | .0000000 | 1 | .0000000 | 40.0000000 | 1.0000000 | 20.0000000 | 100.0000000 + 1 | 300 | 1 | 1 | .0000000 | 1 | .0000000 | 60.0000000 | 1.0000000 | 30.0000000 | 300.0000000 + 1 | 400 | 1 | 1 | .0000000 | 1 | .0000000 | 100.0000000 | 1.0000000 | 50.0000000 | 400.0000000 + 1 | 400 | 1 | 1 | .0000000 | 2 | .0000000 | 100.0000000 | 2.0000000 | 50.0000000 | 400.0000000 + 12 | 500 | 12 | 12 | 5.0000000 | 1 | 5.0000000 | 60.0000000 | 1.0000000 | 30.0000000 | 500.0000000 + 12 | 500 | 12 | 12 | 5.0000000 | 3 | 5.0000000 | 60.0000000 | 3.0000000 | 30.0000000 | 500.0000000 + 12 | 600 | 12 | 12 | 5.0000000 | 3 | 5.0000000 | 60.0000000 | 3.0000000 | 30.0000000 | 600.0000000 + 1 | 700 | 1 | 1 | 1.0000000 | 4 | 1.0000000 | 80.0000000 | 4.0000000 | 40.0000000 | 700.0000000 + 1 | 800 | 1 | 1 | 1.0000000 | 4 | 1.0000000 | 80.0000000 | 4.0000000 | 40.0000000 | 800.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between floor(ow_sale.cn*ow_sale.qty) following and 0 following ); -- mvd 7->6; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range ... + ^ +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range between 1 following and floor(ow_sale.pn/ow_sale.cn) following ); -- mvd 3->2; 3->4; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 4: WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range b... + ^ +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range between 0 following and unbounded following ); -- mvd 3->2; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range b... + ^ +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.prc,ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.vn desc range between 3 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn desc range between 3 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.vn desc range between 3 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc range between 3 following and unbounded following ); -- mvd 5->7; 5->8; 5->9; 5->10; 5->11; 5->12; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 8: WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc range ... + ^ +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc rows unbounded preceding ); -- mvd 6->5; + pn | prc | pn | prc | to_char | cn +-----+------+-----+------+-------------------+---- + 100 | 2400 | 100 | 2400 | 40.0000000 | 2 + 200 | 0 | 200 | 0 | 40.0000000 | 1 + 200 | 0 | 200 | 0 | 40.0000000 | 3 + 100 | 0 | 100 | 0 | 40.0000000 | 1 + 300 | 0 | 300 | 0 | 40.0000000 | 1 + 400 | 0 | 400 | 0 | 40.0000000 | 1 + 400 | 0 | 400 | 0 | 40.0000000 | 2 + 500 | 5 | 500 | 5 | 40.0000000 | 1 + 500 | 5 | 500 | 5 | 40.0000000 | 3 + 600 | 5 | 600 | 5 | 40.0000000 | 3 + 700 | 1 | 700 | 1 | 40.0000000 | 4 + 800 | 1 | 800 | 1 | 40.0000000 | 4 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty/ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc/ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows unbounded preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows unbounded preceding ); -- mvd 3->2; 3->4; 3->5; 3->6; 3->7; + vn | to_char | pn | to_char | to_char | to_char | to_char +----+-------------------+-----+-------------------+-------------------+-------------------+------------------- + 40 | 2.0000000 | 100 | 27.0000000 | 2.0000000 | 40.0000000 | 4800.0000000 + 10 | 2.0000000 | 200 | 27.0000000 | 2.0000000 | 40.0000000 | 4800.0000000 + 40 | 2.0000000 | 200 | 27.0000000 | 2.0000000 | 40.0000000 | 4800.0000000 + 20 | 2.0000000 | 100 | 27.0000000 | 2.0000000 | 40.0000000 | 4800.0000000 + 30 | 2.0000000 | 300 | 27.0000000 | 2.0000000 | 40.0000000 | 4800.0000000 + 50 | 2.0000000 | 400 | 27.0000000 | 2.0000000 | 40.0000000 | 4800.0000000 + 50 | 2.0000000 | 400 | 27.0000000 | 2.0000000 | 40.0000000 | 4800.0000000 + 30 | 2.0000000 | 500 | 27.0000000 | 2.0000000 | 40.0000000 | 4800.0000000 + 30 | 2.0000000 | 500 | 27.0000000 | 2.0000000 | 40.0000000 | 4800.0000000 + 30 | 2.0000000 | 600 | 27.0000000 | 2.0000000 | 40.0000000 | 4800.0000000 + 40 | 2.0000000 | 700 | 27.0000000 | 2.0000000 | 40.0000000 | 4800.0000000 + 40 | 2.0000000 | 800 | 27.0000000 | 2.0000000 | 40.0000000 | 4800.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc rows 1 preceding ); -- mvd 3->6; + qty | qty | pn | cn | vn | to_char +------+------+-----+----+----+------------------- + 1100 | 1100 | 100 | 2 | 40 | 40.0000000 + 1 | 1 | 200 | 1 | 10 | 40.0000000 + 1 | 1 | 200 | 3 | 40 | 10.0000000 + 1 | 1 | 100 | 1 | 20 | 40.0000000 + 1 | 1 | 300 | 1 | 30 | 20.0000000 + 1 | 1 | 400 | 1 | 50 | 30.0000000 + 1 | 1 | 400 | 2 | 50 | 50.0000000 + 12 | 12 | 500 | 1 | 30 | 50.0000000 + 12 | 12 | 500 | 3 | 30 | 30.0000000 + 12 | 12 | 600 | 3 | 30 | 30.0000000 + 1 | 1 | 700 | 4 | 40 | 30.0000000 + 1 | 1 | 800 | 4 | 40 | 40.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn asc rows floor(ow_sale.prc/ow_sale.pn) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn asc rows floor(ow_sale.prc/ow_sale.pn) preceding ); -- mvd 1,2->6; 1,2->7; 1,2->8; + cn | pn | cn | dt | pn | to_char | to_char | to_char +----+-----+----+------------+-----+-------------------+-------------------+------------------- + 2 | 100 | 2 | 1401-01-01 | 100 | .0000000 | 2400.0000000 | 100.0000000 + 1 | 200 | 1 | 1401-03-01 | 200 | .0000000 | .0000000 | 200.0000000 + 3 | 200 | 3 | 1401-04-01 | 200 | .0000000 | .0000000 | 200.0000000 + 1 | 100 | 1 | 1401-05-01 | 100 | .0000000 | .0000000 | 100.0000000 + 1 | 300 | 1 | 1401-05-02 | 300 | .0000000 | .0000000 | 300.0000000 + 1 | 400 | 1 | 1401-06-01 | 400 | .0000000 | .0000000 | 400.0000000 + 2 | 400 | 2 | 1401-06-01 | 400 | .0000000 | .0000000 | 400.0000000 + 1 | 500 | 1 | 1401-06-01 | 500 | .0000000 | 5.0000000 | 500.0000000 + 3 | 500 | 3 | 1401-06-01 | 500 | .0000000 | 5.0000000 | 500.0000000 + 3 | 600 | 3 | 1401-06-01 | 600 | .0000000 | 5.0000000 | 600.0000000 + 4 | 700 | 4 | 1401-06-01 | 700 | .0000000 | 1.0000000 | 700.0000000 + 4 | 800 | 4 | 1401-06-01 | 800 | .0000000 | 1.0000000 | 800.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc rows current row ); -- mvd 5->4; + pn | dt | vn | to_char | cn +-----+------------+----+-------------------+---- + 100 | 1401-01-01 | 40 | 40.0000000 | 2 + 200 | 1401-03-01 | 10 | 10.0000000 | 1 + 200 | 1401-04-01 | 40 | 40.0000000 | 3 + 100 | 1401-05-01 | 20 | 20.0000000 | 1 + 300 | 1401-05-02 | 30 | 30.0000000 | 1 + 400 | 1401-06-01 | 50 | 50.0000000 | 1 + 400 | 1401-06-01 | 50 | 50.0000000 | 2 + 500 | 1401-06-01 | 30 | 30.0000000 | 1 + 500 | 1401-06-01 | 30 | 30.0000000 | 3 + 600 | 1401-06-01 | 30 | 30.0000000 | 3 + 700 | 1401-06-01 | 40 | 40.0000000 | 4 + 800 | 1401-06-01 | 40 | 40.0000000 | 4 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn/ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows current row ); -- mvd 1->3; 1->4; 1->5; 1->6; 1->7; 1->8; +ERROR: division by zero +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc rows between unbounded preceding and floor(ow_sale.prc-ow_sale.prc) preceding ); -- mvd 1,4->3; + cn | cn | to_char | pn +----+----+-------------------+----- + 2 | 2 | -2300.0000000 | 100 + 1 | 1 | -2300.0000000 | 200 + 3 | 3 | -2300.0000000 | 200 + 1 | 1 | -2300.0000000 | 100 + 1 | 1 | -2300.0000000 | 300 + 1 | 1 | -2300.0000000 | 400 + 2 | 2 | -2300.0000000 | 400 + 1 | 1 | -2300.0000000 | 500 + 3 | 3 | -2300.0000000 | 500 + 3 | 3 | -2300.0000000 | 600 + 4 | 4 | -2300.0000000 | 700 + 4 | 4 | -2300.0000000 | 800 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and 1 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and 1 preceding ); -- mvd 3->5; 3->6; + pn | vn | cn | vn | to_char | to_char +-----+----+----+----+-------------------+------------------- + 100 | 40 | 2 | 40 | .0000000 | .0000000 + 200 | 10 | 1 | 10 | 1140.0000000 | 1100.0000000 + 200 | 40 | 3 | 40 | 1140.0000000 | 1100.0000000 + 100 | 20 | 1 | 20 | 1140.0000000 | 1100.0000000 + 300 | 30 | 1 | 30 | 1140.0000000 | 1100.0000000 + 400 | 50 | 1 | 50 | 1140.0000000 | 1100.0000000 + 400 | 50 | 2 | 50 | 1140.0000000 | 1100.0000000 + 500 | 30 | 1 | 30 | 1140.0000000 | 1100.0000000 + 500 | 30 | 3 | 30 | 1140.0000000 | 1100.0000000 + 600 | 30 | 3 | 30 | 1140.0000000 | 1100.0000000 + 700 | 40 | 4 | 40 | 1140.0000000 | 1100.0000000 + 800 | 40 | 4 | 40 | 1140.0000000 | 1100.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 1->2; + cn | to_char +----+------------------- + 2 | 100.0000000 + 1 | 100.0000000 + 3 | 100.0000000 + 1 | 100.0000000 + 1 | 100.0000000 + 1 | 100.0000000 + 2 | 100.0000000 + 1 | 100.0000000 + 3 | 100.0000000 + 3 | 100.0000000 + 4 | 100.0000000 + 4 | 100.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and current row ); -- mvd 1,4->3; 1,4->5; + vn | prc | to_char | pn | to_char +----+------+-------------------+-----+------------------- + 40 | 2400 | 44000.0000000 | 100 | 38.0000000 + 10 | 0 | 44000.0000000 | 200 | 38.0000000 + 40 | 0 | 44000.0000000 | 200 | 38.0000000 + 20 | 0 | 44000.0000000 | 100 | 38.0000000 + 30 | 0 | 44000.0000000 | 300 | 38.0000000 + 50 | 0 | 44000.0000000 | 400 | 38.0000000 + 50 | 0 | 44000.0000000 | 400 | 38.0000000 + 30 | 5 | 44000.0000000 | 500 | 38.0000000 + 30 | 5 | 44000.0000000 | 500 | 38.0000000 + 30 | 5 | 44000.0000000 | 600 | 38.0000000 + 40 | 1 | 44000.0000000 | 700 | 38.0000000 + 40 | 1 | 44000.0000000 | 800 | 38.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.pn asc rows between unbounded preceding and floor(ow_sale.qty) following ); -- mvd 1,2->4; + vn | pn | dt | to_char +----+-----+------------+------------------- + 40 | 100 | 1401-01-01 | 44000.0000000 + 10 | 200 | 1401-03-01 | 44000.0000000 + 40 | 200 | 1401-04-01 | 44000.0000000 + 20 | 100 | 1401-05-01 | 44000.0000000 + 30 | 300 | 1401-05-02 | 44000.0000000 + 50 | 400 | 1401-06-01 | 44000.0000000 + 50 | 400 | 1401-06-01 | 44000.0000000 + 30 | 500 | 1401-06-01 | 44000.0000000 + 30 | 500 | 1401-06-01 | 44000.0000000 + 30 | 600 | 1401-06-01 | 44000.0000000 + 40 | 700 | 1401-06-01 | 44000.0000000 + 40 | 800 | 1401-06-01 | 44000.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 1 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 1 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 1 following ); -- mvd 3->2; 3->4; 3->5; 3->6; + pn | to_char | vn | to_char | to_char | to_char +-----+-------------------+----+-------------------+-------------------+------------------- + 100 | .0000000 | 40 | -2360.0000000 | 3500.0000000 | 2402.0000000 + 200 | .0000000 | 10 | -2360.0000000 | 3500.0000000 | 2402.0000000 + 200 | .0000000 | 40 | -2360.0000000 | 3500.0000000 | 2402.0000000 + 100 | .0000000 | 20 | -2360.0000000 | 3500.0000000 | 2402.0000000 + 300 | .0000000 | 30 | -2360.0000000 | 3500.0000000 | 2402.0000000 + 400 | .0000000 | 50 | -2360.0000000 | 3500.0000000 | 2402.0000000 + 400 | .0000000 | 50 | -2360.0000000 | 3500.0000000 | 2402.0000000 + 500 | .0000000 | 30 | -2360.0000000 | 3500.0000000 | 2402.0000000 + 500 | .0000000 | 30 | -2360.0000000 | 3500.0000000 | 2402.0000000 + 600 | .0000000 | 30 | -2360.0000000 | 3500.0000000 | 2402.0000000 + 700 | .0000000 | 40 | -2360.0000000 | 3500.0000000 | 2402.0000000 + 800 | .0000000 | 40 | -2360.0000000 | 3500.0000000 | 2402.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 4,5->3; + qty | qty | to_char | cn | pn +------+------+-------------------+----+----- + 1100 | 1100 | 1098.0000000 | 2 | 100 + 1 | 1 | 1098.0000000 | 1 | 200 + 1 | 1 | 1098.0000000 | 3 | 200 + 1 | 1 | 1098.0000000 | 1 | 100 + 1 | 1 | 1098.0000000 | 1 | 300 + 1 | 1 | 1098.0000000 | 1 | 400 + 1 | 1 | 1098.0000000 | 2 | 400 + 12 | 12 | 1098.0000000 | 1 | 500 + 12 | 12 | 1098.0000000 | 3 | 500 + 12 | 12 | 1098.0000000 | 3 | 600 + 1 | 1 | 1098.0000000 | 4 | 700 + 1 | 1 | 1098.0000000 | 4 | 800 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn*ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 3->4; 3->5; 3->6; 3->7; 3->8; 3->9; + pn | vn | cn | to_char | to_char | to_char | to_char | to_char | to_char +-----+----+----+-------------------+-------------------+-------------------+-------------------+-------------------+------------------- + 100 | 40 | 2 | 2440.0000000 | 2400.0000000 | 1140.0000000 | 10000.0000000 | 2.0000000 | 4.0000000 + 200 | 10 | 1 | 2440.0000000 | 2400.0000000 | 1140.0000000 | 10000.0000000 | 2.0000000 | 4.0000000 + 200 | 40 | 3 | 2440.0000000 | 2400.0000000 | 1140.0000000 | 10000.0000000 | 2.0000000 | 4.0000000 + 100 | 20 | 1 | 2440.0000000 | 2400.0000000 | 1140.0000000 | 10000.0000000 | 2.0000000 | 4.0000000 + 300 | 30 | 1 | 2440.0000000 | 2400.0000000 | 1140.0000000 | 10000.0000000 | 2.0000000 | 4.0000000 + 400 | 50 | 1 | 2440.0000000 | 2400.0000000 | 1140.0000000 | 10000.0000000 | 2.0000000 | 4.0000000 + 400 | 50 | 2 | 2440.0000000 | 2400.0000000 | 1140.0000000 | 10000.0000000 | 2.0000000 | 4.0000000 + 500 | 30 | 1 | 2440.0000000 | 2400.0000000 | 1140.0000000 | 10000.0000000 | 2.0000000 | 4.0000000 + 500 | 30 | 3 | 2440.0000000 | 2400.0000000 | 1140.0000000 | 10000.0000000 | 2.0000000 | 4.0000000 + 600 | 30 | 3 | 2440.0000000 | 2400.0000000 | 1140.0000000 | 10000.0000000 | 2.0000000 | 4.0000000 + 700 | 40 | 4 | 2440.0000000 | 2400.0000000 | 1140.0000000 | 10000.0000000 | 2.0000000 | 4.0000000 + 800 | 40 | 4 | 2440.0000000 | 2400.0000000 | 1140.0000000 | 10000.0000000 | 2.0000000 | 4.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.prc) preceding and floor(ow_sale.qty) preceding ); -- mvd 3->2; + cn | to_char | vn +----+-------------------+---- + 2 | .0000000 | 40 + 1 | .0000000 | 10 + 3 | .0000000 | 40 + 1 | .0000000 | 20 + 1 | .0000000 | 30 + 1 | .0000000 | 50 + 2 | .0000000 | 50 + 1 | .0000000 | 30 + 3 | .0000000 | 30 + 3 | .0000000 | 30 + 4 | 30.0000000 | 40 + 4 | 40.0000000 | 40 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.cn desc rows between 3 preceding and floor(ow_sale.prc+ow_sale.pn) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.cn desc rows between 3 preceding and floor(ow_sale.prc+ow_sale.pn) preceding ); -- mvd 3,1->4; 3,1->5; 3,1->6; 3,1->7; + pn | pn | cn | to_char | to_char | to_char | to_char +-----+-----+----+-------------------+-------------------+-------------------+------------------- + 100 | 100 | 2 | .0000000 | .0000000 | .0000000 | .0000000 + 200 | 200 | 1 | .0000000 | .0000000 | .0000000 | .0000000 + 200 | 200 | 3 | .0000000 | .0000000 | .0000000 | .0000000 + 100 | 100 | 1 | .0000000 | .0000000 | .0000000 | .0000000 + 300 | 300 | 1 | .0000000 | .0000000 | .0000000 | .0000000 + 400 | 400 | 1 | .0000000 | .0000000 | .0000000 | .0000000 + 400 | 400 | 2 | .0000000 | .0000000 | .0000000 | .0000000 + 500 | 500 | 1 | .0000000 | .0000000 | .0000000 | .0000000 + 500 | 500 | 3 | .0000000 | .0000000 | .0000000 | .0000000 + 600 | 600 | 3 | .0000000 | .0000000 | .0000000 | .0000000 + 700 | 700 | 4 | .0000000 | .0000000 | .0000000 | .0000000 + 800 | 800 | 4 | .0000000 | .0000000 | .0000000 | .0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between 3 preceding and current row ); -- mvd 4->7; + qty | pn | qty | vn | prc | qty | to_char +------+-----+------+----+------+------+------------------- + 1100 | 100 | 1100 | 40 | 2400 | 1100 | 2400.0000000 + 1 | 200 | 1 | 10 | 0 | 1 | 2400.0000000 + 1 | 200 | 1 | 40 | 0 | 1 | 2400.0000000 + 1 | 100 | 1 | 20 | 0 | 1 | 2400.0000000 + 1 | 300 | 1 | 30 | 0 | 1 | .0000000 + 1 | 400 | 1 | 50 | 0 | 1 | .0000000 + 1 | 400 | 1 | 50 | 0 | 1 | .0000000 + 12 | 500 | 12 | 30 | 5 | 12 | .0000000 + 12 | 500 | 12 | 30 | 5 | 12 | .0000000 + 12 | 600 | 12 | 30 | 5 | 12 | .0000000 + 1 | 700 | 1 | 40 | 1 | 1 | 5.0000000 + 1 | 800 | 1 | 40 | 1 | 1 | 5.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.pn+ow_sale.vn) preceding and current row ); -- mvd 4->7; 4->8; 4->9; + vn | dt | qty | pn | cn | pn | to_char | to_char | to_char +----+------------+------+-----+----+-----+-------------------+-------------------+------------------- + 40 | 1401-01-01 | 1100 | 100 | 2 | 100 | 1100.0000000 | 100.0000000 | 102.0000000 + 10 | 1401-03-01 | 1 | 200 | 1 | 200 | 1100.0000000 | 100.0000000 | 102.0000000 + 40 | 1401-04-01 | 1 | 200 | 3 | 200 | 1100.0000000 | 100.0000000 | 102.0000000 + 20 | 1401-05-01 | 1 | 100 | 1 | 100 | 1100.0000000 | 100.0000000 | 102.0000000 + 30 | 1401-05-02 | 1 | 300 | 1 | 300 | 1100.0000000 | 100.0000000 | 102.0000000 + 50 | 1401-06-01 | 1 | 400 | 1 | 400 | 1100.0000000 | 100.0000000 | 102.0000000 + 50 | 1401-06-01 | 1 | 400 | 2 | 400 | 1100.0000000 | 100.0000000 | 102.0000000 + 30 | 1401-06-01 | 12 | 500 | 1 | 500 | 1100.0000000 | 100.0000000 | 102.0000000 + 30 | 1401-06-01 | 12 | 500 | 3 | 500 | 1100.0000000 | 100.0000000 | 102.0000000 + 30 | 1401-06-01 | 12 | 600 | 3 | 600 | 1100.0000000 | 100.0000000 | 102.0000000 + 40 | 1401-06-01 | 1 | 700 | 4 | 700 | 1100.0000000 | 100.0000000 | 102.0000000 + 40 | 1401-06-01 | 1 | 800 | 4 | 800 | 1100.0000000 | 100.0000000 | 102.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.qty+ow_sale.vn) preceding and floor(ow_sale.prc) following ); -- mvd 1->4; + vn | pn | qty | to_char +----+-----+------+------------------- + 40 | 100 | 1100 | 1.0000000 + 10 | 200 | 1 | 1.0000000 + 40 | 200 | 1 | 1.0000000 + 20 | 100 | 1 | 1.0000000 + 30 | 300 | 1 | 1.0000000 + 50 | 400 | 1 | 1.0000000 + 50 | 400 | 1 | 1.0000000 + 30 | 500 | 12 | 1.0000000 + 30 | 500 | 12 | 1.0000000 + 30 | 600 | 12 | 1.0000000 + 40 | 700 | 1 | 1.0000000 + 40 | 800 | 1 | 1.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.cn desc rows between 0 preceding and 4 following ); -- mvd 1,5->4; 1,5->6; 1,5->7; + cn | pn | prc | to_char | vn | to_char | to_char +----+-----+------+-------------------+----+-------------------+------------------- + 2 | 100 | 2400 | 40.0000000 | 40 | 1100.0000000 | 10000.0000000 + 1 | 200 | 0 | 10.0000000 | 10 | 1.0000000 | 40000.0000000 + 3 | 200 | 0 | 40.0000000 | 40 | 1.0000000 | 40000.0000000 + 1 | 100 | 0 | 20.0000000 | 20 | 1.0000000 | 10000.0000000 + 1 | 300 | 0 | 30.0000000 | 30 | 1.0000000 | 90000.0000000 + 1 | 400 | 0 | 50.0000000 | 50 | 1.0000000 | 160000.0000000 + 2 | 400 | 0 | 50.0000000 | 50 | 1.0000000 | 160000.0000000 + 1 | 500 | 5 | 30.0000000 | 30 | 12.0000000 | 250000.0000000 + 3 | 500 | 5 | 30.0000000 | 30 | 12.0000000 | 250000.0000000 + 3 | 600 | 5 | 30.0000000 | 30 | 12.0000000 | 360000.0000000 + 4 | 700 | 1 | 40.0000000 | 40 | 1.0000000 | 490000.0000000 + 4 | 800 | 1 | 40.0000000 | 40 | 1.0000000 | 640000.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.vn asc rows between 0 preceding and unbounded following ); -- mvd 2,7->6; + dt | vn | qty | cn | qty | to_char | pn +------------+----+------+----+------+-------------------+----- + 1401-01-01 | 40 | 1100 | 2 | 1100 | -98.0000000 | 100 + 1401-03-01 | 10 | 1 | 1 | 1 | -199.0000000 | 200 + 1401-04-01 | 40 | 1 | 3 | 1 | -197.0000000 | 200 + 1401-05-01 | 20 | 1 | 1 | 1 | -99.0000000 | 100 + 1401-05-02 | 30 | 1 | 1 | 1 | -299.0000000 | 300 + 1401-06-01 | 50 | 1 | 1 | 1 | -399.0000000 | 400 + 1401-06-01 | 50 | 1 | 2 | 1 | -398.0000000 | 400 + 1401-06-01 | 30 | 12 | 1 | 12 | -499.0000000 | 500 + 1401-06-01 | 30 | 12 | 3 | 12 | -497.0000000 | 500 + 1401-06-01 | 30 | 12 | 3 | 12 | -597.0000000 | 600 + 1401-06-01 | 40 | 1 | 4 | 1 | -696.0000000 | 700 + 1401-06-01 | 40 | 1 | 4 | 1 | -796.0000000 | 800 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn/ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc,ow_sale.pn asc rows between 1 preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn/ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc,ow_sale.pn asc rows between 1 preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc,ow_sale.pn asc rows between 1 preceding and unbounded following ); -- mvd 6,7->5; 6,7->8; 6,7->9; 6,7->10; 6,7->11; + prc | cn | qty | dt | to_char | vn | pn | to_char | to_char | to_char | to_char +------+----+------+------------+-------------------+----+-----+-------------------+-------------------+-------------------+------------------- + 2400 | 2 | 1100 | 1401-01-01 | 1060.0000000 | 40 | 100 | 20.0000000 | 100.0000000 | .0000000 | 96000.0000000 + 0 | 1 | 1 | 1401-03-01 | 1060.0000000 | 10 | 200 | 20.0000000 | 100.0000000 | .0000000 | 96000.0000000 + 0 | 3 | 1 | 1401-04-01 | -9.0000000 | 40 | 200 | 10.0000000 | 200.0000000 | .0000000 | .0000000 + 0 | 1 | 1 | 1401-05-01 | -39.0000000 | 20 | 100 | 13.0000000 | 200.0000000 | .0000000 | .0000000 + 0 | 1 | 1 | 1401-05-02 | -19.0000000 | 30 | 300 | 20.0000000 | 100.0000000 | .0000000 | .0000000 + 0 | 1 | 1 | 1401-06-01 | -29.0000000 | 50 | 400 | 30.0000000 | 300.0000000 | .0000000 | .0000000 + 0 | 2 | 1 | 1401-06-01 | -49.0000000 | 50 | 400 | 50.0000000 | 400.0000000 | .0000000 | .0000000 + 5 | 1 | 12 | 1401-06-01 | -49.0000000 | 30 | 500 | 25.0000000 | 400.0000000 | .0000000 | .0000000 + 5 | 3 | 12 | 1401-06-01 | -18.0000000 | 30 | 500 | 30.0000000 | 500.0000000 | .0000000 | 150.0000000 + 5 | 3 | 12 | 1401-06-01 | -18.0000000 | 30 | 600 | 10.0000000 | 500.0000000 | .0000000 | 150.0000000 + 1 | 4 | 1 | 1401-06-01 | -18.0000000 | 40 | 700 | 10.0000000 | 600.0000000 | .0000000 | 150.0000000 + 1 | 4 | 1 | 1401-06-01 | -39.0000000 | 40 | 800 | 10.0000000 | 700.0000000 | .0000000 | 40.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.pn desc rows between current row and current row ); -- mvd 1,4,5->3; + cn | qty | to_char | vn | pn +----+------+-------------------+----+----- + 2 | 1100 | 100.0000000 | 40 | 100 + 1 | 1 | 200.0000000 | 10 | 200 + 3 | 1 | 200.0000000 | 40 | 200 + 1 | 1 | 100.0000000 | 20 | 100 + 1 | 1 | 300.0000000 | 30 | 300 + 1 | 1 | 400.0000000 | 50 | 400 + 2 | 1 | 400.0000000 | 50 | 400 + 1 | 12 | 500.0000000 | 30 | 500 + 3 | 12 | 500.0000000 | 30 | 500 + 3 | 12 | 600.0000000 | 30 | 600 + 4 | 1 | 700.0000000 | 40 | 700 + 4 | 1 | 800.0000000 | 40 | 800 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.pn asc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.pn asc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn/ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.pn asc rows between current row and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.pn asc rows between current row and current row ); -- mvd 4,2->3; 4,2->5; 4,2->6; 4,2->7; 4,2->8; +ERROR: division by zero +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between current row and floor(ow_sale.cn/ow_sale.qty) following ); -- mvd 4->5; + pn | cn | qty | vn | to_char +-----+----+------+----+------------------- + 100 | 2 | 1100 | 40 | 1140.0000000 + 200 | 1 | 1 | 10 | 11.0000000 + 200 | 3 | 1 | 40 | 41.0000000 + 100 | 1 | 1 | 20 | 21.0000000 + 300 | 1 | 1 | 30 | 31.0000000 + 400 | 1 | 1 | 50 | 51.0000000 + 400 | 2 | 1 | 50 | 51.0000000 + 500 | 1 | 12 | 30 | 42.0000000 + 500 | 3 | 12 | 30 | 42.0000000 + 600 | 3 | 12 | 30 | 42.0000000 + 700 | 4 | 1 | 40 | 41.0000000 + 800 | 4 | 1 | 40 | 41.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn*ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between current row and 0 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between current row and 0 following ); -- mvd 2->5; 2->6; 2->7; + dt | cn | pn | prc | to_char | to_char | to_char +------------+----+-----+------+-------------------+-------------------+------------------- + 1401-01-01 | 2 | 100 | 2400 | .0000000 | 40.0000000 | 96000.0000000 + 1401-03-01 | 1 | 200 | 0 | .0000000 | 10.0000000 | .0000000 + 1401-04-01 | 3 | 200 | 0 | .0000000 | 40.0000000 | .0000000 + 1401-05-01 | 1 | 100 | 0 | .0000000 | 20.0000000 | .0000000 + 1401-05-02 | 1 | 300 | 0 | .0000000 | 30.0000000 | .0000000 + 1401-06-01 | 1 | 400 | 0 | .0000000 | 50.0000000 | .0000000 + 1401-06-01 | 2 | 400 | 0 | .0000000 | 50.0000000 | .0000000 + 1401-06-01 | 1 | 500 | 5 | .0000000 | 30.0000000 | 150.0000000 + 1401-06-01 | 3 | 500 | 5 | .0000000 | 30.0000000 | 150.0000000 + 1401-06-01 | 3 | 600 | 5 | .0000000 | 30.0000000 | 150.0000000 + 1401-06-01 | 4 | 700 | 1 | .0000000 | 40.0000000 | 40.0000000 + 1401-06-01 | 4 | 800 | 1 | .0000000 | 40.0000000 | 40.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.pn desc rows between current row and unbounded following ); -- mvd 3->2; + dt | to_char | pn +------------+-------------------+----- + 1401-01-01 | 1100.0000000 | 100 + 1401-03-01 | 1.0000000 | 200 + 1401-04-01 | 1.0000000 | 200 + 1401-05-01 | 1.0000000 | 100 + 1401-05-02 | 1.0000000 | 300 + 1401-06-01 | 1.0000000 | 400 + 1401-06-01 | 1.0000000 | 400 + 1401-06-01 | 12.0000000 | 500 + 1401-06-01 | 12.0000000 | 500 + 1401-06-01 | 12.0000000 | 600 + 1401-06-01 | 1.0000000 | 700 + 1401-06-01 | 1.0000000 | 800 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty/ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ); -- mvd 1->7; 1->8; 1->9; + cn | cn | cn | cn | cn | pn | to_char | to_char | to_char +----+----+----+----+----+-----+-------------------+-------------------+------------------- + 2 | 2 | 2 | 2 | 2 | 100 | 40.0000000 | 550.0000000 | 100.0000000 + 1 | 1 | 1 | 1 | 1 | 200 | 10.0000000 | 1.0000000 | 200.0000000 + 3 | 3 | 3 | 3 | 3 | 200 | 40.0000000 | .0000000 | 200.0000000 + 1 | 1 | 1 | 1 | 1 | 100 | 20.0000000 | 1.0000000 | 100.0000000 + 1 | 1 | 1 | 1 | 1 | 300 | 30.0000000 | 1.0000000 | 300.0000000 + 1 | 1 | 1 | 1 | 1 | 400 | 50.0000000 | 1.0000000 | 400.0000000 + 2 | 2 | 2 | 2 | 2 | 400 | 50.0000000 | .0000000 | 400.0000000 + 1 | 1 | 1 | 1 | 1 | 500 | 30.0000000 | 12.0000000 | 500.0000000 + 3 | 3 | 3 | 3 | 3 | 500 | 30.0000000 | 4.0000000 | 500.0000000 + 3 | 3 | 3 | 3 | 3 | 600 | 30.0000000 | 4.0000000 | 600.0000000 + 4 | 4 | 4 | 4 | 4 | 700 | 40.0000000 | .0000000 | 700.0000000 + 4 | 4 | 4 | 4 | 4 | 800 | 40.0000000 | .0000000 | 800.0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.pn asc rows between 1 following and 0 following ); -- mvd 3->2; + prc | to_char | pn +------+-------------------+----- + 2400 | .0000000 | 100 + 0 | .0000000 | 200 + 0 | .0000000 | 200 + 0 | .0000000 | 100 + 0 | .0000000 | 300 + 0 | .0000000 | 400 + 0 | .0000000 | 400 + 5 | .0000000 | 500 + 5 | .0000000 | 500 + 5 | .0000000 | 600 + 1 | .0000000 | 700 + 1 | .0000000 | 800 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn asc rows between 1 following and 2 following ); -- mvd 1,5,2->4; 1,5,2->6; 1,5,2->7; + cn | pn | prc | to_char | vn | to_char | to_char +----+-----+------+-------------------+----+-------------------+------------------- + 2 | 100 | 2400 | 1.0000000 | 40 | 10.0000000 | 9.0000000 + 1 | 200 | 0 | 3.0000000 | 10 | 40.0000000 | 39.0000000 + 3 | 200 | 0 | 1.0000000 | 40 | 20.0000000 | 19.0000000 + 1 | 100 | 0 | 1.0000000 | 20 | 30.0000000 | 29.0000000 + 1 | 300 | 0 | 1.0000000 | 30 | 50.0000000 | 49.0000000 + 1 | 400 | 0 | 2.0000000 | 50 | 50.0000000 | 49.0000000 + 2 | 400 | 0 | 1.0000000 | 50 | 30.0000000 | 18.0000000 + 1 | 500 | 5 | 3.0000000 | 30 | 30.0000000 | 18.0000000 + 3 | 500 | 5 | 3.0000000 | 30 | 30.0000000 | 18.0000000 + 3 | 600 | 5 | 4.0000000 | 30 | 40.0000000 | 39.0000000 + 4 | 700 | 1 | 4.0000000 | 40 | 40.0000000 | 39.0000000 + 4 | 800 | 1 | .0000000 | 40 | .0000000 | .0000000 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.vn) following and unbounded following ); -- mvd 3->2; + prc | to_char | pn +------+-------------------+----- + 2400 | .0000000 | 100 + 0 | 41.0000000 | 200 + 0 | .0000000 | 200 + 0 | .0000000 | 100 + 0 | .0000000 | 300 + 0 | .0000000 | 400 + 0 | .0000000 | 400 + 5 | .0000000 | 500 + 5 | .0000000 | 500 + 5 | .0000000 | 600 + 1 | .0000000 | 700 + 1 | .0000000 | 800 +(12 rows) + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between 1 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between 1 following and unbounded following ); -- mvd 1->2; 1->3; 1->4; 1->5; 1->6; 1->7; + pn | to_char | to_char | to_char | to_char | to_char | to_char +-----+-------------------+-------------------+-------------------+-------------------+-------------------+------------------- + 100 | .0000000 | -1.0000000 | 1.0000000 | 200.0000000 | .0000000 | .0000000 + 200 | .0000000 | -3.0000000 | 3.0000000 | 200.0000000 | .0000000 | .0000000 + 200 | .0000000 | -1.0000000 | 1.0000000 | 100.0000000 | .0000000 | .0000000 + 100 | .0000000 | -1.0000000 | 1.0000000 | 300.0000000 | .0000000 | .0000000 + 300 | .0000000 | -1.0000000 | 1.0000000 | 400.0000000 | .0000000 | .0000000 + 400 | .0000000 | -2.0000000 | 2.0000000 | 400.0000000 | .0000000 | .0000000 + 400 | .0000000 | 4.0000000 | 1.0000000 | 500.0000000 | .0000000 | 5.0000000 + 500 | .0000000 | 2.0000000 | 3.0000000 | 500.0000000 | .0000000 | 5.0000000 + 500 | .0000000 | 2.0000000 | 3.0000000 | 600.0000000 | .0000000 | 5.0000000 + 600 | 1.0000000 | -3.0000000 | 4.0000000 | 700.0000000 | .0000000 | 1.0000000 + 700 | 1.0000000 | -3.0000000 | 4.0000000 | 800.0000000 | .0000000 | 1.0000000 + 800 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 +(12 rows) + +-- FIRST_VALUE() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc,ow_sale.pn asc); -- mvd 5,2,8->7; + cn | qty | qty | dt | vn | vn | to_char | pn +----+------+------+------------+----+----+-------------------+----- + 1 | 1 | 1 | 1401-03-01 | 10 | 10 | .0000000 | 200 + 1 | 1 | 1 | 1401-05-01 | 20 | 20 | .0000000 | 100 + 1 | 1 | 1 | 1401-05-02 | 30 | 30 | .0000000 | 300 + 3 | 1 | 1 | 1401-04-01 | 40 | 40 | .0000000 | 200 + 4 | 1 | 1 | 1401-06-01 | 40 | 40 | .0000000 | 700 + 4 | 1 | 1 | 1401-06-01 | 40 | 40 | .0000000 | 800 + 1 | 1 | 1 | 1401-06-01 | 50 | 50 | .0000000 | 400 + 2 | 1 | 1 | 1401-06-01 | 50 | 50 | .0000000 | 400 + 1 | 12 | 12 | 1401-06-01 | 30 | 30 | .0000000 | 500 + 3 | 12 | 12 | 1401-06-01 | 30 | 30 | .0000000 | 500 + 3 | 12 | 12 | 1401-06-01 | 30 | 30 | .0000000 | 600 + 2 | 1100 | 1100 | 1401-01-01 | 40 | 40 | .0000000 | 100 +(12 rows) + +-- FIRST_VALUE() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc); -- mvd 3,4,1,5->2; 3,4,1,5->6; 3,4,1,5->7; + vn | to_char | cn | dt | pn | to_char | to_char +----+-------------------+----+------------+-----+-------------------+------------------- + 10 | 1.0000000 | 1 | 1401-03-01 | 200 | 1.0000000 | 2.0000000 + 40 | 1.0000000 | 3 | 1401-04-01 | 200 | 3.0000000 | 4.0000000 + 20 | 1.0000000 | 1 | 1401-05-01 | 100 | 1.0000000 | 2.0000000 + 30 | 1.0000000 | 3 | 1401-06-01 | 600 | 3.0000000 | 15.0000000 + 40 | 1.0000000 | 4 | 1401-06-01 | 800 | 4.0000000 | 5.0000000 + 50 | 1.0000000 | 2 | 1401-06-01 | 400 | 2.0000000 | 3.0000000 + 40 | 1.0000000 | 2 | 1401-01-01 | 100 | 2.0000000 | 1102.0000000 + 30 | 1.0000000 | 1 | 1401-05-02 | 300 | 1.0000000 | 2.0000000 + 30 | 1.0000000 | 1 | 1401-06-01 | 500 | 1.0000000 | 13.0000000 + 30 | 1.0000000 | 3 | 1401-06-01 | 500 | 3.0000000 | 15.0000000 + 40 | 1.0000000 | 4 | 1401-06-01 | 700 | 4.0000000 | 5.0000000 + 50 | 1.0000000 | 1 | 1401-06-01 | 400 | 1.0000000 | 2.0000000 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.cn desc range unbounded preceding ); -- mvd 1,3,4->2; + prc | to_char | cn | pn +------+-------------------+----+----- + 0 | .0000000 | 1 | 100 + 2400 | 2400.0000000 | 2 | 100 + 0 | .0000000 | 1 | 200 + 0 | .0000000 | 3 | 200 + 5 | 5.0000000 | 3 | 600 + 1 | 1.0000000 | 4 | 800 + 0 | .0000000 | 1 | 300 + 0 | .0000000 | 1 | 400 + 0 | .0000000 | 2 | 400 + 5 | 5.0000000 | 1 | 500 + 5 | 5.0000000 | 3 | 500 + 1 | 1.0000000 | 4 | 700 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.qty)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc range unbounded preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc range unbounded preceding ); -- mvd 6,2,4->5; 6,2,4->7; 6,2,4->8; 6,2,4->9; 6,2,4->10; + vn | qty | dt | pn | to_char | cn | to_char | to_char | to_char | to_char +----+------+------------+-----+-------------------+----+-------------------+-------------------+-------------------+------------------- + 30 | 1 | 1401-05-02 | 300 | 300.0000000 | 1 | 1.0000000 | 29.0000000 | 1.0000000 | 30.0000000 + 50 | 1 | 1401-06-01 | 400 | 400.0000000 | 1 | 1.0000000 | 49.0000000 | 1.0000000 | 50.0000000 + 30 | 12 | 1401-06-01 | 600 | 600.0000000 | 3 | 3.0000000 | 18.0000000 | 7.0000000 | 30.0000000 + 40 | 1 | 1401-06-01 | 700 | 700.0000000 | 4 | 4.0000000 | 39.0000000 | .0000000 | 40.0000000 + 20 | 1 | 1401-05-01 | 100 | 100.0000000 | 1 | 1.0000000 | 19.0000000 | 1.0000000 | 20.0000000 + 40 | 1100 | 1401-01-01 | 100 | 100.0000000 | 2 | 2.0000000 | -1060.0000000 | -1300.0000000 | 40.0000000 + 10 | 1 | 1401-03-01 | 200 | 200.0000000 | 1 | 1.0000000 | 9.0000000 | 1.0000000 | 10.0000000 + 40 | 1 | 1401-04-01 | 200 | 200.0000000 | 3 | 3.0000000 | 39.0000000 | 1.0000000 | 40.0000000 + 50 | 1 | 1401-06-01 | 400 | 400.0000000 | 2 | 2.0000000 | 49.0000000 | 1.0000000 | 50.0000000 + 30 | 12 | 1401-06-01 | 500 | 500.0000000 | 1 | 1.0000000 | 18.0000000 | 7.0000000 | 30.0000000 + 30 | 12 | 1401-06-01 | 500 | 500.0000000 | 3 | 3.0000000 | 18.0000000 | 7.0000000 | 30.0000000 + 40 | 1 | 1401-06-01 | 800 | 800.0000000 | 4 | 4.0000000 | 39.0000000 | .0000000 | 40.0000000 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc range floor(ow_sale.prc) preceding ); -- mvd 5,2,6->4; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.d... + ^ +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn desc range 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn desc range 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn-ow_sale.prc)) OVER(partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn desc range 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn desc range 1 preceding ); -- mvd 5,2->4; 5,2->6; 5,2->7; 5,2->8; 5,2->9; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 7: WINDOW win1 as (partition by ow_sale.qty order by ow_sale.or... + ^ +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc range current row ); -- mvd 2,4,5->7; + qty | prc | qty | cn | pn | qty | to_char +------+------+------+----+-----+------+------------------- + 1 | 0 | 1 | 1 | 300 | 1 | .0000000 + 1 | 0 | 1 | 1 | 400 | 1 | .0000000 + 1 | 0 | 1 | 2 | 400 | 1 | .0000000 + 1 | 1 | 1 | 4 | 700 | 1 | 4.0000000 + 12 | 5 | 12 | 1 | 500 | 12 | 5.0000000 + 12 | 5 | 12 | 3 | 500 | 12 | 15.0000000 + 1 | 0 | 1 | 1 | 100 | 1 | .0000000 + 1 | 0 | 1 | 1 | 200 | 1 | .0000000 + 1 | 0 | 1 | 3 | 200 | 1 | .0000000 + 1 | 1 | 1 | 4 | 800 | 1 | 4.0000000 + 12 | 5 | 12 | 3 | 600 | 12 | 15.0000000 + 1100 | 2400 | 1100 | 2 | 100 | 1100 | 4800.0000000 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc range current row ); -- mvd 5,6,2,1->4; 5,6,2,1->7; 5,6,2,1->8; 5,6,2,1->9; 5,6,2,1->10; + pn | qty | vn | to_char | prc | cn | to_char | to_char | to_char | to_char +-----+------+----+-------------------+------+----+-------------------+-------------------+-------------------+------------------- + 300 | 1 | 30 | 300.0000000 | 0 | 1 | 1.0000000 | 31.0000000 | .0000000 | 1.0000000 + 400 | 1 | 50 | 400.0000000 | 0 | 1 | 1.0000000 | 51.0000000 | .0000000 | 1.0000000 + 600 | 12 | 30 | 600.0000000 | 5 | 3 | 12.0000000 | 42.0000000 | 5.0000000 | 12.0000000 + 800 | 1 | 40 | 800.0000000 | 1 | 4 | 1.0000000 | 41.0000000 | 1.0000000 | 1.0000000 + 100 | 1 | 20 | 100.0000000 | 0 | 1 | 1.0000000 | 21.0000000 | .0000000 | 1.0000000 + 200 | 1 | 10 | 200.0000000 | 0 | 1 | 1.0000000 | 11.0000000 | .0000000 | 1.0000000 + 500 | 12 | 30 | 500.0000000 | 5 | 1 | 12.0000000 | 42.0000000 | 5.0000000 | 12.0000000 + 100 | 1100 | 40 | 100.0000000 | 2400 | 2 | 1100.0000000 | 1140.0000000 | 2400.0000000 | 1100.0000000 + 400 | 1 | 50 | 400.0000000 | 0 | 2 | 1.0000000 | 51.0000000 | .0000000 | 1.0000000 + 200 | 1 | 40 | 200.0000000 | 0 | 3 | 1.0000000 | 41.0000000 | .0000000 | 1.0000000 + 500 | 12 | 30 | 500.0000000 | 5 | 3 | 12.0000000 | 42.0000000 | 5.0000000 | 12.0000000 + 700 | 1 | 40 | 700.0000000 | 1 | 4 | 1.0000000 | 41.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn/ow_sale.prc) preceding ); -- mvd 4,6->5; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (partition by ow_sale.prc order by ow_sale.or... + ^ +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc range between unbounded preceding and floor(ow_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc range between unbounded preceding and floor(ow_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc/ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc range between unbounded preceding and floor(ow_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc range between unbounded preceding and floor(ow_sale.pn) preceding ); -- mvd 1,5->4; 1,5->6; 1,5->7; 1,5->8; 1,5->9; 1,5->10; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 8: WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.v... + ^ +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.vn desc range between unbounded preceding and current row ); -- mvd 5,6,2,3->4; + pn | qty | vn | to_char | cn | dt +-----+------+----+-------------------+----+------------ + 200 | 1 | 10 | 200.0000000 | 1 | 1401-03-01 + 300 | 1 | 30 | 300.0000000 | 1 | 1401-05-02 + 400 | 1 | 50 | 400.0000000 | 1 | 1401-06-01 + 100 | 1 | 20 | 100.0000000 | 1 | 1401-05-01 + 500 | 12 | 30 | 500.0000000 | 1 | 1401-06-01 + 500 | 12 | 30 | 500.0000000 | 3 | 1401-06-01 + 600 | 12 | 30 | 500.0000000 | 3 | 1401-06-01 + 100 | 1100 | 40 | 100.0000000 | 2 | 1401-01-01 + 200 | 1 | 40 | 200.0000000 | 3 | 1401-04-01 + 700 | 1 | 40 | 700.0000000 | 4 | 1401-06-01 + 800 | 1 | 40 | 700.0000000 | 4 | 1401-06-01 + 400 | 1 | 50 | 400.0000000 | 2 | 1401-06-01 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc range between unbounded preceding and current row ); -- mvd 5,6,2->4; 5,6,2->7; 5,6,2->8; 5,6,2->9; + prc | pn | prc | to_char | dt | cn | to_char | to_char | to_char +------+-----+------+-------------------+------------+----+-------------------+-------------------+------------------- + 0 | 100 | 0 | .0000000 | 1401-05-01 | 1 | 100.0000000 | 200.0000000 | 20.0000000 + 0 | 200 | 0 | .0000000 | 1401-04-01 | 3 | 200.0000000 | 400.0000000 | 40.0000000 + 0 | 300 | 0 | .0000000 | 1401-05-02 | 1 | 300.0000000 | 600.0000000 | 30.0000000 + 0 | 400 | 0 | .0000000 | 1401-06-01 | 1 | 400.0000000 | 800.0000000 | 50.0000000 + 5 | 500 | 5 | .0000000 | 1401-06-01 | 1 | 505.0000000 | 1000.0000000 | 30.0000000 + 5 | 500 | 5 | .0000000 | 1401-06-01 | 3 | 505.0000000 | 1000.0000000 | 30.0000000 + 1 | 700 | 1 | .0000000 | 1401-06-01 | 4 | 701.0000000 | 1400.0000000 | 40.0000000 + 2400 | 100 | 2400 | .0000000 | 1401-01-01 | 2 | 2500.0000000 | 200.0000000 | 40.0000000 + 0 | 200 | 0 | .0000000 | 1401-03-01 | 1 | 200.0000000 | 400.0000000 | 10.0000000 + 0 | 400 | 0 | .0000000 | 1401-06-01 | 2 | 400.0000000 | 800.0000000 | 50.0000000 + 5 | 600 | 5 | .0000000 | 1401-06-01 | 3 | 605.0000000 | 1200.0000000 | 30.0000000 + 1 | 800 | 1 | .0000000 | 1401-06-01 | 4 | 801.0000000 | 1600.0000000 | 40.0000000 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and 2 following ); -- mvd 1,4->7; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.v... + ^ +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc*ow_sale.prc)) OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn/ow_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn/ow_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.prc)) OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn/ow_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn/ow_sale.cn) following ); -- mvd 3,4,5,6,7->2; 3,4,5,6,7->8; 3,4,5,6,7->9; 3,4,5,6,7->10; 3,4,5,6,7->11; 3,4,5,6,7->12; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 8: WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.p... + ^ +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc range between unbounded preceding and unbounded following ); -- mvd 6,4,1,3->5; + qty | cn | pn | vn | to_char | dt +------+----+-----+----+-------------------+------------ + 1 | 3 | 200 | 40 | 1.0000000 | 1401-04-01 + 1 | 1 | 100 | 20 | 1.0000000 | 1401-05-01 + 1 | 1 | 300 | 30 | 1.0000000 | 1401-05-02 + 1 | 1 | 400 | 50 | 1.0000000 | 1401-06-01 + 1 | 2 | 400 | 50 | 1.0000000 | 1401-06-01 + 12 | 3 | 600 | 30 | 12.0000000 | 1401-06-01 + 1 | 4 | 800 | 40 | 1.0000000 | 1401-06-01 + 1100 | 2 | 100 | 40 | 1100.0000000 | 1401-01-01 + 1 | 1 | 200 | 10 | 1.0000000 | 1401-03-01 + 12 | 1 | 500 | 30 | 12.0000000 | 1401-06-01 + 12 | 3 | 500 | 30 | 12.0000000 | 1401-06-01 + 1 | 4 | 700 | 40 | 1.0000000 | 1401-06-01 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.qty)) OVER(partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc range between unbounded preceding and unbounded following ); -- mvd 1,4->5; 1,4->6; 1,4->7; 1,4->8; 1,4->9; + vn | prc | qty | pn | to_char | to_char | to_char | to_char | to_char +----+------+------+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 30 | 0 | 1 | 300 | 1.0000000 | 30.0000000 | 301.0000000 | 30.0000000 | 1.0000000 + 50 | 0 | 1 | 400 | 1.0000000 | 50.0000000 | 401.0000000 | 50.0000000 | 1.0000000 + 50 | 0 | 1 | 400 | 1.0000000 | 50.0000000 | 401.0000000 | 50.0000000 | 1.0000000 + 30 | 5 | 12 | 500 | 17.0000000 | 25.0000000 | 512.0000000 | 30.0000000 | 1.0000000 + 30 | 5 | 12 | 500 | 17.0000000 | 25.0000000 | 512.0000000 | 30.0000000 | 1.0000000 + 40 | 1 | 1 | 800 | 2.0000000 | 39.0000000 | 801.0000000 | 40.0000000 | 4.0000000 + 40 | 2400 | 1100 | 100 | 3500.0000000 | -2360.0000000 | 1200.0000000 | 40.0000000 | 2.0000000 + 20 | 0 | 1 | 100 | 3500.0000000 | -2360.0000000 | 1200.0000000 | 40.0000000 | 2.0000000 + 10 | 0 | 1 | 200 | 1.0000000 | 10.0000000 | 201.0000000 | 10.0000000 | 1.0000000 + 40 | 0 | 1 | 200 | 1.0000000 | 10.0000000 | 201.0000000 | 10.0000000 | 1.0000000 + 30 | 5 | 12 | 600 | 17.0000000 | 25.0000000 | 612.0000000 | 30.0000000 | 3.0000000 + 40 | 1 | 1 | 700 | 2.0000000 | 39.0000000 | 701.0000000 | 40.0000000 | 4.0000000 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc range between 4 preceding and floor(ow_sale.qty*ow_sale.pn) preceding ); -- mvd 8,2->7; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.p... + ^ +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc range between 3 preceding and 3 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc range between 3 preceding and 3 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc range between 3 preceding and 3 preceding ); -- mvd 4,5,6,7,2->3; 4,5,6,7,2->8; 4,5,6,7,2->9; 4,5,6,7,2->10; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 6: WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.p... + ^ +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc range between floor(ow_sale.qty+ow_sale.vn) preceding and current row ); -- mvd 5,6,1,7->4; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.... + ^ +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn/ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc range between floor(ow_sale.cn*ow_sale.cn) preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc range between floor(ow_sale.cn*ow_sale.cn) preceding and current row ); -- mvd 3,4->5; 3,4->6; 3,4->7; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 5: WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty order by... + ^ +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc range between 4 preceding and 4 following ); -- mvd 3,4->2; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn order by ... + ^ +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc range between 4 preceding and floor(ow_sale.vn) following ); -- mvd 4,5->3; 4,5->6; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 4: WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.v... + ^ +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc range between 1 preceding and unbounded following ); -- mvd 2,3,6->5; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.c... + ^ +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.prc)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc range between floor(ow_sale.prc) preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc range between floor(ow_sale.prc) preceding and unbounded following ); -- mvd 4,5,1,6->3; 4,5,1,6->7; 4,5,1,6->8; 4,5,1,6->9; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 6: WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.p... + ^ +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc range between current row and current row ); -- mvd 2,7,4->6; + vn | cn | pn | qty | qty | to_char | dt +----+----+-----+------+------+-------------------+------------ + 40 | 3 | 200 | 1 | 1 | .0000000 | 1401-04-01 + 20 | 1 | 100 | 1 | 1 | .0000000 | 1401-05-01 + 30 | 1 | 500 | 12 | 12 | 5.0000000 | 1401-06-01 + 30 | 3 | 500 | 12 | 12 | 5.0000000 | 1401-06-01 + 30 | 3 | 600 | 12 | 12 | 5.0000000 | 1401-06-01 + 10 | 1 | 200 | 1 | 1 | .0000000 | 1401-03-01 + 30 | 1 | 300 | 1 | 1 | .0000000 | 1401-05-02 + 50 | 1 | 400 | 1 | 1 | .0000000 | 1401-06-01 + 50 | 2 | 400 | 1 | 1 | .0000000 | 1401-06-01 + 40 | 4 | 700 | 1 | 1 | 1.0000000 | 1401-06-01 + 40 | 4 | 800 | 1 | 1 | 1.0000000 | 1401-06-01 + 40 | 2 | 100 | 1100 | 1100 | 2400.0000000 | 1401-01-01 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc/ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc range between current row and current row ); -- mvd 1,3,4,5->2; 1,3,4,5->6; 1,3,4,5->7; + cn | to_char | vn | qty | pn | to_char | to_char +----+-------------------+----+------+-----+-------------------+------------------- + 1 | .0000000 | 20 | 1 | 100 | .0000000 | 20.0000000 + 1 | .0000000 | 10 | 1 | 200 | .0000000 | 10.0000000 + 3 | .0000000 | 40 | 1 | 200 | .0000000 | 40.0000000 + 1 | 5.0000000 | 30 | 12 | 500 | .0000000 | 30.0000000 + 3 | 5.0000000 | 30 | 12 | 500 | .0000000 | 30.0000000 + 4 | 1.0000000 | 40 | 1 | 700 | .0000000 | 40.0000000 + 2 | 2400.0000000 | 40 | 1100 | 100 | 24.0000000 | 40.0000000 + 1 | .0000000 | 30 | 1 | 300 | .0000000 | 30.0000000 + 1 | .0000000 | 50 | 1 | 400 | .0000000 | 50.0000000 + 2 | .0000000 | 50 | 1 | 400 | .0000000 | 50.0000000 + 3 | 5.0000000 | 30 | 12 | 600 | .0000000 | 30.0000000 + 4 | 1.0000000 | 40 | 1 | 800 | .0000000 | 40.0000000 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.vn desc range between current row and floor(ow_sale.qty) following ); -- mvd 5,8->7; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord... + ^ +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc range between current row and floor(ow_sale.pn+ow_sale.vn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc range between current row and floor(ow_sale.pn+ow_sale.vn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc range between current row and floor(ow_sale.pn+ow_sale.vn) following ); -- mvd 3,4->2; 3,4->5; 3,4->6; 3,4->7; 3,4->8; 3,4->9; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 8: WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.c... + ^ +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc range between current row and unbounded following ); -- mvd 3,4,1->2; + pn | to_char | cn | vn +-----+-------------------+----+---- + 200 | 10.0000000 | 1 | 10 + 100 | 20.0000000 | 1 | 20 + 600 | 30.0000000 | 3 | 30 + 200 | 40.0000000 | 3 | 40 + 800 | 40.0000000 | 4 | 40 + 400 | 50.0000000 | 2 | 50 + 300 | 30.0000000 | 1 | 30 + 500 | 30.0000000 | 1 | 30 + 500 | 30.0000000 | 3 | 30 + 100 | 40.0000000 | 2 | 40 + 700 | 40.0000000 | 4 | 40 + 400 | 50.0000000 | 1 | 50 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.prc)) OVER(partition by ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(partition by ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc range between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc range between current row and unbounded following ); -- mvd 3,4,5,1,6,7->2; 3,4,5,1,6,7->8; 3,4,5,1,6,7->9; 3,4,5,1,6,7->10; 3,4,5,1,6,7->11; + qty | to_char | prc | cn | dt | vn | pn | to_char | to_char | to_char | to_char +------+-------------------+------+----+------------+----+-----+-------------------+-------------------+-------------------+------------------- + 1 | 200.0000000 | 0 | 1 | 1401-03-01 | 10 | 200 | 1.0000000 | 11.0000000 | 1.0000000 | .0000000 + 1 | 300.0000000 | 0 | 1 | 1401-05-02 | 30 | 300 | 1.0000000 | 31.0000000 | 1.0000000 | .0000000 + 1 | 175.0000000 | 1 | 4 | 1401-06-01 | 40 | 700 | 3.0000000 | 41.0000000 | 4.0000000 | 1.0000000 + 1 | 200.0000000 | 1 | 4 | 1401-06-01 | 40 | 800 | 3.0000000 | 41.0000000 | 4.0000000 | 1.0000000 + 1 | 400.0000000 | 0 | 1 | 1401-06-01 | 50 | 400 | 1.0000000 | 51.0000000 | 1.0000000 | .0000000 + 1 | 100.0000000 | 0 | 1 | 1401-05-01 | 20 | 100 | 1.0000000 | 21.0000000 | 1.0000000 | .0000000 + 12 | 500.0000000 | 5 | 1 | 1401-06-01 | 30 | 500 | -4.0000000 | 42.0000000 | 1.0000000 | 5.0000000 + 12 | 166.0000000 | 5 | 3 | 1401-06-01 | 30 | 500 | -2.0000000 | 42.0000000 | 3.0000000 | 5.0000000 + 12 | 200.0000000 | 5 | 3 | 1401-06-01 | 30 | 600 | -2.0000000 | 42.0000000 | 3.0000000 | 5.0000000 + 1100 | 50.0000000 | 2400 | 2 | 1401-01-01 | 40 | 100 | -2398.0000000 | 1140.0000000 | 2.0000000 | 2400.0000000 + 1 | 66.0000000 | 0 | 3 | 1401-04-01 | 40 | 200 | 3.0000000 | 41.0000000 | 3.0000000 | .0000000 + 1 | 200.0000000 | 0 | 2 | 1401-06-01 | 50 | 400 | 2.0000000 | 51.0000000 | 2.0000000 | .0000000 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc range between 0 following and floor(ow_sale.prc/ow_sale.prc) following ); -- mvd 3,1,4,5->2; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.... + ^ +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc range between 1 following and 3 following ); -- mvd 1,3,4->2; 1,3,4->5; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 4: WINDOW win1 as (partition by ow_sale.qty,ow_sale.qty,ow_sale... + ^ +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc range between floor(ow_sale.pn) following and unbounded following ); -- mvd 3,5->4; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn order by... + ^ +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn-ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc range between 2 following and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc range between 2 following and unbounded following ); -- mvd 1,5,3->4; 1,5,3->6; 1,5,3->7; 1,5,3->8; 1,5,3->9; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 7: WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.p... + ^ +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc rows unbounded preceding ); -- mvd 3,1->2; + vn | to_char | cn +----+-------------------+---- + 10 | 9.0000000 | 1 + 20 | 19.0000000 | 1 + 30 | 29.0000000 | 1 + 30 | 29.0000000 | 1 + 50 | 49.0000000 | 1 + 30 | 27.0000000 | 3 + 30 | 27.0000000 | 3 + 40 | 37.0000000 | 3 + 40 | 38.0000000 | 2 + 50 | 48.0000000 | 2 + 40 | 36.0000000 | 4 + 40 | 36.0000000 | 4 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.vn)) OVER(partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.vn desc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.vn desc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn*ow_sale.pn)) OVER(partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.vn desc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.vn desc rows unbounded preceding ); -- mvd 3,4,1->2; 3,4,1->5; 3,4,1->6; 3,4,1->7; 3,4,1->8; 3,4,1->9; + vn | to_char | prc | cn | to_char | to_char | to_char | to_char | to_char +----+-------------------+------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 40 | 1.0000000 | 1 | 4 | 4.0000000 | -39.0000000 | 700.0000000 | 28000.0000000 | 5.0000000 + 40 | 1.0000000 | 1 | 4 | 4.0000000 | -39.0000000 | 700.0000000 | 28000.0000000 | 5.0000000 + 10 | .0000000 | 0 | 1 | 1.0000000 | -9.0000000 | 200.0000000 | 2000.0000000 | 1.0000000 + 40 | .0000000 | 0 | 3 | 1.0000000 | -9.0000000 | 200.0000000 | 2000.0000000 | 1.0000000 + 20 | .0000000 | 0 | 1 | 1.0000000 | -9.0000000 | 200.0000000 | 2000.0000000 | 1.0000000 + 30 | .0000000 | 0 | 1 | 1.0000000 | -9.0000000 | 200.0000000 | 2000.0000000 | 1.0000000 + 50 | .0000000 | 0 | 1 | 1.0000000 | -9.0000000 | 200.0000000 | 2000.0000000 | 1.0000000 + 50 | .0000000 | 0 | 2 | 1.0000000 | -9.0000000 | 200.0000000 | 2000.0000000 | 1.0000000 + 30 | 5.0000000 | 5 | 1 | 1.0000000 | -18.0000000 | 500.0000000 | 15000.0000000 | 6.0000000 + 30 | 5.0000000 | 5 | 3 | 1.0000000 | -18.0000000 | 500.0000000 | 15000.0000000 | 6.0000000 + 30 | 5.0000000 | 5 | 3 | 1.0000000 | -18.0000000 | 500.0000000 | 15000.0000000 | 6.0000000 + 40 | 2400.0000000 | 2400 | 2 | 2.0000000 | 1060.0000000 | 100.0000000 | 4000.0000000 | 2402.0000000 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows 6 preceding ); -- mvd 3,4,5->2; + vn | to_char | prc | cn | pn +----+-------------------+------+----+----- + 30 | 1.0000000 | 0 | 1 | 300 + 50 | 1.0000000 | 0 | 1 | 400 + 50 | 1.0000000 | 0 | 2 | 400 + 40 | 1.0000000 | 1 | 4 | 700 + 30 | 12.0000000 | 5 | 1 | 500 + 30 | 12.0000000 | 5 | 3 | 500 + 20 | 1.0000000 | 0 | 1 | 100 + 10 | 1.0000000 | 0 | 1 | 200 + 40 | 1.0000000 | 0 | 3 | 200 + 40 | 1.0000000 | 1 | 4 | 800 + 30 | 12.0000000 | 5 | 3 | 600 + 40 | 1100.0000000 | 2400 | 2 | 100 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn/ow_sale.cn)) OVER(partition by ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows floor(ow_sale.cn+ow_sale.cn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows floor(ow_sale.cn+ow_sale.cn) preceding ); -- mvd 1->7; 1->8; 1->9; + pn | prc | pn | pn | cn | cn | to_char | to_char | to_char +-----+------+-----+-----+----+----+-------------------+-------------------+------------------- + 300 | 0 | 300 | 300 | 1 | 1 | .0000000 | 1.0000000 | 300.0000000 + 400 | 0 | 400 | 400 | 1 | 1 | .0000000 | 1.0000000 | 400.0000000 + 400 | 0 | 400 | 400 | 2 | 2 | .0000000 | 1.0000000 | 400.0000000 + 500 | 5 | 500 | 500 | 1 | 1 | 5.0000000 | 1.0000000 | 505.0000000 + 500 | 5 | 500 | 500 | 3 | 3 | 5.0000000 | 1.0000000 | 505.0000000 + 800 | 1 | 800 | 800 | 4 | 4 | 1.0000000 | 1.0000000 | 801.0000000 + 100 | 2400 | 100 | 100 | 2 | 2 | 2400.0000000 | 1.0000000 | 2500.0000000 + 100 | 0 | 100 | 100 | 1 | 1 | 2400.0000000 | 1.0000000 | 2500.0000000 + 200 | 0 | 200 | 200 | 1 | 1 | .0000000 | 1.0000000 | 200.0000000 + 200 | 0 | 200 | 200 | 3 | 3 | .0000000 | 1.0000000 | 200.0000000 + 600 | 5 | 600 | 600 | 3 | 3 | 5.0000000 | 1.0000000 | 605.0000000 + 700 | 1 | 700 | 700 | 4 | 4 | 1.0000000 | 1.0000000 | 701.0000000 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows current row ); -- mvd 4,5->3; + qty | dt | to_char | cn | vn +------+------------+-------------------+----+---- + 1 | 1401-03-01 | .0000000 | 1 | 10 + 1 | 1401-05-01 | .0000000 | 1 | 20 + 1 | 1401-05-02 | .0000000 | 1 | 30 + 12 | 1401-06-01 | 5.0000000 | 1 | 30 + 1 | 1401-06-01 | .0000000 | 1 | 50 + 12 | 1401-06-01 | 5.0000000 | 3 | 30 + 12 | 1401-06-01 | 5.0000000 | 3 | 30 + 1 | 1401-04-01 | .0000000 | 3 | 40 + 1100 | 1401-01-01 | 2400.0000000 | 2 | 40 + 1 | 1401-06-01 | .0000000 | 2 | 50 + 1 | 1401-06-01 | 1.0000000 | 4 | 40 + 1 | 1401-06-01 | 1.0000000 | 4 | 40 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.pn)) OVER(partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.cn)) OVER(partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc rows current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc rows current row ); -- mvd 1,4,6->7; 1,4,6->8; 1,4,6->9; 1,4,6->10; 1,4,6->11; + prc | qty | cn | vn | prc | pn | to_char | to_char | to_char | to_char | to_char +------+------+----+----+------+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | 1 | 4 | 40 | 1 | 700 | 700.0000000 | 701.0000000 | 700.0000000 | 5.0000000 | 44.0000000 + 1 | 1 | 4 | 40 | 1 | 800 | 800.0000000 | 801.0000000 | 800.0000000 | 5.0000000 | 44.0000000 + 0 | 1 | 1 | 10 | 0 | 200 | 200.0000000 | 200.0000000 | .0000000 | 2.0000000 | 11.0000000 + 0 | 1 | 3 | 40 | 0 | 200 | 200.0000000 | 200.0000000 | .0000000 | 4.0000000 | 43.0000000 + 0 | 1 | 1 | 20 | 0 | 100 | 100.0000000 | 100.0000000 | .0000000 | 2.0000000 | 21.0000000 + 0 | 1 | 1 | 30 | 0 | 300 | 300.0000000 | 300.0000000 | .0000000 | 2.0000000 | 31.0000000 + 0 | 1 | 1 | 50 | 0 | 400 | 400.0000000 | 400.0000000 | .0000000 | 2.0000000 | 51.0000000 + 0 | 1 | 2 | 50 | 0 | 400 | 400.0000000 | 400.0000000 | .0000000 | 3.0000000 | 52.0000000 + 5 | 12 | 1 | 30 | 5 | 500 | 500.0000000 | 505.0000000 | 2500.0000000 | 13.0000000 | 31.0000000 + 5 | 12 | 3 | 30 | 5 | 500 | 500.0000000 | 505.0000000 | 2500.0000000 | 15.0000000 | 33.0000000 + 5 | 12 | 3 | 30 | 5 | 600 | 600.0000000 | 605.0000000 | 3000.0000000 | 15.0000000 | 33.0000000 + 2400 | 1100 | 2 | 40 | 2400 | 100 | 100.0000000 | 2500.0000000 | 240000.0000000 | 1102.0000000 | 42.0000000 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and 5 preceding ); -- mvd 6,1,7->5; + vn | qty | dt | vn | to_char | cn | pn +----+------+------------+----+-------------------+----+----- + 10 | 1 | 1401-03-01 | 10 | .0000000 | 1 | 200 + 20 | 1 | 1401-05-01 | 20 | .0000000 | 1 | 100 + 30 | 12 | 1401-06-01 | 30 | .0000000 | 3 | 600 + 40 | 1 | 1401-04-01 | 40 | .0000000 | 3 | 200 + 40 | 1 | 1401-06-01 | 40 | .0000000 | 4 | 800 + 50 | 1 | 1401-06-01 | 50 | .0000000 | 2 | 400 + 30 | 1 | 1401-05-02 | 30 | .0000000 | 1 | 300 + 30 | 12 | 1401-06-01 | 30 | .0000000 | 1 | 500 + 30 | 12 | 1401-06-01 | 30 | .0000000 | 3 | 500 + 40 | 1100 | 1401-01-01 | 40 | .0000000 | 2 | 100 + 40 | 1 | 1401-06-01 | 40 | .0000000 | 4 | 700 + 50 | 1 | 1401-06-01 | 50 | .0000000 | 1 | 400 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn/ow_sale.pn)) OVER(partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between unbounded preceding and 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between unbounded preceding and 1 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between unbounded preceding and 1 preceding ); -- mvd 8,1,2->7; 8,1,2->9; 8,1,2->10; 8,1,2->11; + cn | vn | qty | cn | qty | dt | to_char | prc | to_char | to_char | to_char +----+----+------+----+------+------------+-------------------+------+-------------------+-------------------+------------------- + 1 | 10 | 1 | 1 | 1 | 1401-03-01 | .0000000 | 0 | .0000000 | .0000000 | .0000000 + 3 | 40 | 1 | 3 | 1 | 1401-04-01 | 10.0000000 | 0 | .0000000 | 1.0000000 | 200.0000000 + 1 | 20 | 1 | 1 | 1 | 1401-05-01 | 10.0000000 | 0 | .0000000 | 1.0000000 | 200.0000000 + 1 | 30 | 1 | 1 | 1 | 1401-05-02 | 10.0000000 | 0 | .0000000 | 1.0000000 | 200.0000000 + 1 | 50 | 1 | 1 | 1 | 1401-06-01 | 10.0000000 | 0 | .0000000 | 1.0000000 | 200.0000000 + 2 | 50 | 1 | 2 | 1 | 1401-06-01 | 10.0000000 | 0 | .0000000 | 1.0000000 | 200.0000000 + 1 | 30 | 12 | 1 | 12 | 1401-06-01 | .0000000 | 5 | .0000000 | .0000000 | .0000000 + 3 | 30 | 12 | 3 | 12 | 1401-06-01 | 30.0000000 | 5 | .0000000 | 12.0000000 | 500.0000000 + 3 | 30 | 12 | 3 | 12 | 1401-06-01 | 30.0000000 | 5 | .0000000 | 12.0000000 | 500.0000000 + 2 | 40 | 1100 | 2 | 1100 | 1401-01-01 | .0000000 | 2400 | .0000000 | .0000000 | .0000000 + 4 | 40 | 1 | 4 | 1 | 1401-06-01 | .0000000 | 1 | .0000000 | .0000000 | .0000000 + 4 | 40 | 1 | 4 | 1 | 1401-06-01 | 40.0000000 | 1 | .0000000 | 1.0000000 | 700.0000000 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn/ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and current row ); -- mvd 4,5->3; +ERROR: division by zero (seg0 slice2 localhost:18507 pid=8624) +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows between unbounded preceding and current row ); -- mvd 4,5,2,6->3; 4,5,2,6->7; 4,5,2,6->8; 4,5,2,6->9; 4,5,2,6->10; + qty | vn | to_char | cn | dt | pn | to_char | to_char | to_char | to_char +------+----+-------------------+----+------------+-----+-------------------+-------------------+-------------------+------------------- + 1 | 10 | 1.0000000 | 1 | 1401-03-01 | 200 | .0000000 | .0000000 | 2.0000000 | 1.0000000 + 12 | 30 | 12.0000000 | 3 | 1401-06-01 | 600 | -9.0000000 | 5.0000000 | 24.0000000 | -2.0000000 + 1 | 40 | 1.0000000 | 4 | 1401-06-01 | 700 | 3.0000000 | 1.0000000 | 2.0000000 | 3.0000000 + 1100 | 40 | 1100.0000000 | 2 | 1401-01-01 | 100 | -1098.0000000 | 2400.0000000 | 2200.0000000 | -2398.0000000 + 1 | 40 | 1.0000000 | 3 | 1401-04-01 | 200 | 2.0000000 | .0000000 | 2.0000000 | 3.0000000 + 1 | 20 | 1.0000000 | 1 | 1401-05-01 | 100 | .0000000 | .0000000 | 2.0000000 | 1.0000000 + 1 | 30 | 1.0000000 | 1 | 1401-05-02 | 300 | .0000000 | .0000000 | 2.0000000 | 1.0000000 + 12 | 30 | 12.0000000 | 1 | 1401-06-01 | 500 | -11.0000000 | 5.0000000 | 24.0000000 | -4.0000000 + 12 | 30 | 12.0000000 | 3 | 1401-06-01 | 500 | -11.0000000 | 5.0000000 | 24.0000000 | -4.0000000 + 1 | 40 | 1.0000000 | 4 | 1401-06-01 | 800 | 3.0000000 | 1.0000000 | 2.0000000 | 3.0000000 + 1 | 50 | 1.0000000 | 1 | 1401-06-01 | 400 | .0000000 | .0000000 | 2.0000000 | 1.0000000 + 1 | 50 | 1.0000000 | 2 | 1401-06-01 | 400 | .0000000 | .0000000 | 2.0000000 | 1.0000000 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.vn asc rows between unbounded preceding and floor(ow_sale.cn-ow_sale.vn) following ); -- mvd 6,7,1,2->5; +ERROR: ROWS parameter cannot be negative (seg0 slice2 localhost:18507 pid=8697) +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(partition by ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.pn-ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.pn-ow_sale.qty) following ); -- mvd 6,1,4->5; 6,1,4->7; 6,1,4->8; 6,1,4->9; +ERROR: ROWS parameter cannot be negative (seg2 slice4 localhost:18509 pid=8734) +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc,ow_sale.vn asc rows between unbounded preceding and unbounded following ); -- mvd 4,5,6,7->3; + prc | pn | to_char | cn | dt | vn | qty +------+-----+-------------------+----+------------+----+------ + 0 | 200 | 1.0000000 | 3 | 1401-04-01 | 40 | 1 + 0 | 100 | 1.0000000 | 1 | 1401-05-01 | 20 | 1 + 5 | 500 | 17.0000000 | 1 | 1401-06-01 | 30 | 12 + 5 | 500 | 17.0000000 | 3 | 1401-06-01 | 30 | 12 + 5 | 600 | 17.0000000 | 3 | 1401-06-01 | 30 | 12 + 2400 | 100 | 3500.0000000 | 2 | 1401-01-01 | 40 | 1100 + 0 | 200 | 1.0000000 | 1 | 1401-03-01 | 10 | 1 + 0 | 300 | 1.0000000 | 1 | 1401-05-02 | 30 | 1 + 0 | 400 | 1.0000000 | 1 | 1401-06-01 | 50 | 1 + 0 | 400 | 1.0000000 | 2 | 1401-06-01 | 50 | 1 + 1 | 700 | 1.0000000 | 4 | 1401-06-01 | 40 | 1 + 1 | 800 | 1.0000000 | 4 | 1401-06-01 | 40 | 1 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(partition by ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(partition by ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and unbounded following ); -- mvd 4,5,6->3; 4,5,6->7; 4,5,6->8; + pn | dt | to_char | prc | cn | vn | to_char | to_char +-----+------------+-------------------+------+----+----+-------------------+------------------- + 200 | 1401-03-01 | 1.0000000 | 0 | 1 | 10 | .0000000 | 1.0000000 + 100 | 1401-05-01 | 1.0000000 | 0 | 1 | 20 | .0000000 | 1.0000000 + 300 | 1401-05-02 | 1.0000000 | 0 | 1 | 30 | .0000000 | 1.0000000 + 200 | 1401-04-01 | 3.0000000 | 0 | 3 | 40 | .0000000 | 3.0000000 + 400 | 1401-06-01 | 1.0000000 | 0 | 1 | 50 | .0000000 | 1.0000000 + 700 | 1401-06-01 | 4.0000000 | 1 | 4 | 40 | 1.0000000 | 4.0000000 + 800 | 1401-06-01 | 4.0000000 | 1 | 4 | 40 | 1.0000000 | 4.0000000 + 500 | 1401-06-01 | 1.0000000 | 5 | 1 | 30 | 5.0000000 | 1.0000000 + 500 | 1401-06-01 | 3.0000000 | 5 | 3 | 30 | 5.0000000 | 3.0000000 + 600 | 1401-06-01 | 3.0000000 | 5 | 3 | 30 | 5.0000000 | 3.0000000 + 400 | 1401-06-01 | 2.0000000 | 0 | 2 | 50 | .0000000 | 2.0000000 + 100 | 1401-01-01 | 2.0000000 | 2400 | 2 | 40 | 2400.0000000 | 2.0000000 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.vn-ow_sale.cn) preceding and 0 preceding ); -- mvd 5,6->4; + dt | qty | qty | to_char | prc | pn +------------+------+------+-------------------+------+----- + 1401-05-02 | 1 | 1 | 330.0000000 | 0 | 300 + 1401-06-01 | 1 | 1 | 450.0000000 | 0 | 400 + 1401-06-01 | 1 | 1 | 450.0000000 | 0 | 400 + 1401-06-01 | 12 | 12 | 530.0000000 | 5 | 500 + 1401-06-01 | 12 | 12 | 530.0000000 | 5 | 500 + 1401-06-01 | 1 | 1 | 740.0000000 | 1 | 700 + 1401-05-01 | 1 | 1 | 120.0000000 | 0 | 100 + 1401-01-01 | 1100 | 1100 | 140.0000000 | 2400 | 100 + 1401-03-01 | 1 | 1 | 210.0000000 | 0 | 200 + 1401-04-01 | 1 | 1 | 210.0000000 | 0 | 200 + 1401-06-01 | 12 | 12 | 630.0000000 | 5 | 600 + 1401-06-01 | 1 | 1 | 840.0000000 | 1 | 800 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(partition by ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.cn-ow_sale.qty) preceding and 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(partition by ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.cn-ow_sale.qty) preceding and 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.cn-ow_sale.qty) preceding and 2 preceding ); -- mvd 3,5,6,7,2->4; 3,5,6,7,2->8; 3,5,6,7,2->9; 3,5,6,7,2->10; +ERROR: ROWS parameter cannot be negative (seg1 slice3 localhost:18508 pid=8951) +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between 9 preceding and current row ); -- mvd 2,1,4->3; + qty | vn | to_char | pn +------+----+-------------------+----- + 1 | 10 | 200.0000000 | 200 + 1 | 20 | 100.0000000 | 100 + 1 | 30 | 300.0000000 | 300 + 1 | 40 | 200.0000000 | 200 + 1 | 40 | 200.0000000 | 700 + 1 | 40 | 200.0000000 | 800 + 1 | 50 | 400.0000000 | 400 + 1 | 50 | 400.0000000 | 400 + 12 | 30 | 6000.0000000 | 500 + 12 | 30 | 6000.0000000 | 500 + 12 | 30 | 6000.0000000 | 600 + 1100 | 40 | 110000.0000000 | 100 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.pn)) OVER(partition by ow_sale.qty,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.cn desc rows between 0 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.vn)) OVER(partition by ow_sale.qty,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.cn desc rows between 0 preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.cn desc rows between 0 preceding and current row ); -- mvd 3,5,1->4; 3,5,1->6; 3,5,1->7; 3,5,1->8; + qty | dt | cn | to_char | vn | to_char | to_char | to_char +------+------------+----+-------------------+----+-------------------+-------------------+------------------- + 1 | 1401-03-01 | 1 | 9.0000000 | 10 | -199.0000000 | 2.0000000 | 210.0000000 + 1 | 1401-05-01 | 1 | 19.0000000 | 20 | -99.0000000 | 2.0000000 | 120.0000000 + 1 | 1401-05-02 | 1 | 29.0000000 | 30 | -299.0000000 | 2.0000000 | 330.0000000 + 1 | 1401-04-01 | 3 | 37.0000000 | 40 | -197.0000000 | 2.0000000 | 240.0000000 + 1 | 1401-06-01 | 4 | 36.0000000 | 40 | -696.0000000 | 2.0000000 | 740.0000000 + 1 | 1401-06-01 | 4 | 36.0000000 | 40 | -796.0000000 | 2.0000000 | 840.0000000 + 1 | 1401-06-01 | 1 | 49.0000000 | 50 | -399.0000000 | 2.0000000 | 450.0000000 + 1 | 1401-06-01 | 2 | 48.0000000 | 50 | -398.0000000 | 2.0000000 | 450.0000000 + 12 | 1401-06-01 | 1 | 29.0000000 | 30 | -499.0000000 | 24.0000000 | 530.0000000 + 12 | 1401-06-01 | 3 | 27.0000000 | 30 | -497.0000000 | 24.0000000 | 530.0000000 + 12 | 1401-06-01 | 3 | 27.0000000 | 30 | -597.0000000 | 24.0000000 | 630.0000000 + 1100 | 1401-01-01 | 2 | 38.0000000 | 40 | -98.0000000 | 2200.0000000 | 140.0000000 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.qty/ow_sale.pn) preceding and floor(ow_sale.pn) following ); -- mvd 3->2; + pn | to_char | vn +-----+-------------------+---- + 200 | 201.0000000 | 10 + 100 | 101.0000000 | 20 + 300 | 301.0000000 | 30 + 500 | 501.0000000 | 30 + 500 | 503.0000000 | 30 + 600 | 603.0000000 | 30 + 100 | 102.0000000 | 40 + 200 | 203.0000000 | 40 + 700 | 704.0000000 | 40 + 800 | 804.0000000 | 40 + 400 | 401.0000000 | 50 + 400 | 402.0000000 | 50 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.prc)) OVER(partition by ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.vn asc rows between floor(ow_sale.qty) preceding and 2 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.vn asc rows between floor(ow_sale.qty) preceding and 2 following ); -- mvd 1,6,2->5; 1,6,2->7; + cn | pn | qty | cn | to_char | vn | to_char +----+-----+------+----+-------------------+----+------------------- + 1 | 300 | 1 | 1 | 30.0000000 | 30 | 1.0000000 + 1 | 400 | 1 | 1 | 50.0000000 | 50 | 1.0000000 + 2 | 400 | 1 | 2 | 50.0000000 | 50 | 1.0000000 + 1 | 500 | 12 | 1 | 30.0000000 | 30 | -4.0000000 + 3 | 500 | 12 | 3 | 30.0000000 | 30 | -4.0000000 + 4 | 800 | 1 | 4 | 40.0000000 | 40 | 3.0000000 + 2 | 100 | 1100 | 2 | 40.0000000 | 40 | -2398.0000000 + 1 | 100 | 1 | 1 | 40.0000000 | 20 | -2398.0000000 + 1 | 200 | 1 | 1 | 10.0000000 | 10 | 1.0000000 + 3 | 200 | 1 | 3 | 10.0000000 | 40 | 1.0000000 + 3 | 600 | 12 | 3 | 30.0000000 | 30 | -2.0000000 + 4 | 700 | 1 | 4 | 40.0000000 | 40 | 3.0000000 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between floor(ow_sale.qty+ow_sale.vn) preceding and unbounded following ); -- mvd 2,1,7,8->6; + dt | cn | prc | pn | dt | to_char | vn | qty +------------+----+------+-----+------------+-------------------+----+------ + 1401-03-01 | 1 | 0 | 200 | 1401-03-01 | 1.0000000 | 10 | 1 + 1401-05-02 | 1 | 0 | 300 | 1401-05-02 | 1.0000000 | 30 | 1 + 1401-06-01 | 1 | 0 | 400 | 1401-06-01 | 1.0000000 | 50 | 1 + 1401-01-01 | 2 | 2400 | 100 | 1401-01-01 | 1100.0000000 | 40 | 1100 + 1401-04-01 | 3 | 0 | 200 | 1401-04-01 | 1.0000000 | 40 | 1 + 1401-05-01 | 1 | 0 | 100 | 1401-05-01 | 1.0000000 | 20 | 1 + 1401-06-01 | 1 | 5 | 500 | 1401-06-01 | 12.0000000 | 30 | 12 + 1401-06-01 | 2 | 0 | 400 | 1401-06-01 | 1.0000000 | 50 | 1 + 1401-06-01 | 3 | 5 | 500 | 1401-06-01 | 12.0000000 | 30 | 12 + 1401-06-01 | 3 | 5 | 600 | 1401-06-01 | 12.0000000 | 30 | 12 + 1401-06-01 | 4 | 1 | 700 | 1401-06-01 | 1.0000000 | 40 | 1 + 1401-06-01 | 4 | 1 | 800 | 1401-06-01 | 1.0000000 | 40 | 1 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.qty)) OVER(partition by ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc rows between 0 preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc rows between 0 preceding and unbounded following ); -- mvd 4,5,6,7->3; 4,5,6,7->8; 4,5,6,7->9; 4,5,6,7->10; 4,5,6,7->11; + cn | cn | to_char | prc | dt | qty | pn | to_char | to_char | to_char | to_char +----+----+-------------------+------+------------+------+-----+-------------------+-------------------+-------------------+------------------- + 1 | 1 | 1.0000000 | 0 | 1401-05-01 | 1 | 100 | 21.0000000 | 21.0000000 | -20.0000000 | 1.0000000 + 3 | 3 | 3.0000000 | 0 | 1401-04-01 | 1 | 200 | 41.0000000 | 43.0000000 | -40.0000000 | 1.0000000 + 1 | 1 | 1.0000000 | 0 | 1401-05-02 | 1 | 300 | 31.0000000 | 31.0000000 | -30.0000000 | 1.0000000 + 1 | 1 | 1.0000000 | 0 | 1401-06-01 | 1 | 400 | 51.0000000 | 51.0000000 | -50.0000000 | 1.0000000 + 2 | 2 | 2.0000000 | 0 | 1401-06-01 | 1 | 400 | 51.0000000 | 52.0000000 | -50.0000000 | 1.0000000 + 4 | 4 | 4.0000000 | 1 | 1401-06-01 | 1 | 700 | 41.0000000 | 44.0000000 | -39.0000000 | 1.0000000 + 3 | 3 | 3.0000000 | 5 | 1401-06-01 | 12 | 600 | 42.0000000 | 33.0000000 | -25.0000000 | 12.0000000 + 1 | 1 | 1.0000000 | 0 | 1401-03-01 | 1 | 200 | 11.0000000 | 11.0000000 | -10.0000000 | 1.0000000 + 4 | 4 | 4.0000000 | 1 | 1401-06-01 | 1 | 800 | 41.0000000 | 44.0000000 | -39.0000000 | 1.0000000 + 1 | 1 | 1.0000000 | 5 | 1401-06-01 | 12 | 500 | 42.0000000 | 31.0000000 | -25.0000000 | 12.0000000 + 3 | 3 | 3.0000000 | 5 | 1401-06-01 | 12 | 500 | 42.0000000 | 33.0000000 | -25.0000000 | 12.0000000 + 2 | 2 | 2.0000000 | 2400 | 1401-01-01 | 1100 | 100 | 1140.0000000 | 42.0000000 | 2360.0000000 | 1100.0000000 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.cn desc rows between current row and current row ); -- mvd 5,6,1,3,2->4; + qty | pn | vn | to_char | dt | cn +------+-----+----+-------------------+------------+---- + 1 | 200 | 10 | .0000000 | 1401-03-01 | 1 + 1 | 300 | 30 | .0000000 | 1401-05-02 | 1 + 1 | 400 | 50 | .0000000 | 1401-06-01 | 1 + 1 | 100 | 20 | .0000000 | 1401-05-01 | 1 + 12 | 500 | 30 | 5.0000000 | 1401-06-01 | 1 + 1100 | 100 | 40 | 2400.0000000 | 1401-01-01 | 2 + 1 | 400 | 50 | .0000000 | 1401-06-01 | 2 + 12 | 500 | 30 | 5.0000000 | 1401-06-01 | 3 + 12 | 600 | 30 | 5.0000000 | 1401-06-01 | 3 + 1 | 200 | 40 | .0000000 | 1401-04-01 | 3 + 1 | 700 | 40 | 1.0000000 | 1401-06-01 | 4 + 1 | 800 | 40 | 1.0000000 | 1401-06-01 | 4 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.cn)) OVER(partition by ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn/ow_sale.qty)) OVER(partition by ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between current row and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between current row and current row ); -- mvd 2,5,6,7->4; 2,5,6,7->8; 2,5,6,7->9; + pn | cn | cn | to_char | dt | vn | qty | to_char | to_char +-----+----+----+-------------------+------------+----+------+-------------------+------------------- + 200 | 3 | 3 | 1.0000000 | 1401-04-01 | 40 | 1 | 3.0000000 | 200.0000000 + 100 | 1 | 1 | 1.0000000 | 1401-05-01 | 20 | 1 | 1.0000000 | 100.0000000 + 500 | 1 | 1 | 12.0000000 | 1401-06-01 | 30 | 12 | 6.0000000 | 41.0000000 + 500 | 3 | 3 | 12.0000000 | 1401-06-01 | 30 | 12 | 8.0000000 | 41.0000000 + 600 | 3 | 3 | 12.0000000 | 1401-06-01 | 30 | 12 | 8.0000000 | 50.0000000 + 200 | 1 | 1 | 1.0000000 | 1401-03-01 | 10 | 1 | 1.0000000 | 200.0000000 + 300 | 1 | 1 | 1.0000000 | 1401-05-02 | 30 | 1 | 1.0000000 | 300.0000000 + 400 | 1 | 1 | 1.0000000 | 1401-06-01 | 50 | 1 | 1.0000000 | 400.0000000 + 400 | 2 | 2 | 1.0000000 | 1401-06-01 | 50 | 1 | 2.0000000 | 400.0000000 + 700 | 4 | 4 | 1.0000000 | 1401-06-01 | 40 | 1 | 5.0000000 | 700.0000000 + 800 | 4 | 4 | 1.0000000 | 1401-06-01 | 40 | 1 | 5.0000000 | 800.0000000 + 100 | 2 | 2 | 1100.0000000 | 1401-01-01 | 40 | 1100 | 2402.0000000 | .0000000 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between current row and 8 following ); -- mvd 5,3,6,7->4; + dt | prc | qty | to_char | cn | vn | pn +------------+------+------+-------------------+----+----+----- + 1401-05-01 | 0 | 1 | 1.0000000 | 1 | 20 | 100 + 1401-03-01 | 0 | 1 | 1.0000000 | 1 | 10 | 200 + 1401-06-01 | 0 | 1 | 2.0000000 | 2 | 50 | 400 + 1401-04-01 | 0 | 1 | 3.0000000 | 3 | 40 | 200 + 1401-06-01 | 5 | 12 | 8.0000000 | 3 | 30 | 600 + 1401-06-01 | 1 | 1 | 5.0000000 | 4 | 40 | 800 + 1401-05-02 | 0 | 1 | 1.0000000 | 1 | 30 | 300 + 1401-06-01 | 0 | 1 | 1.0000000 | 1 | 50 | 400 + 1401-06-01 | 5 | 12 | 6.0000000 | 1 | 30 | 500 + 1401-01-01 | 2400 | 1100 | 2402.0000000 | 2 | 40 | 100 + 1401-06-01 | 5 | 12 | 8.0000000 | 3 | 30 | 500 + 1401-06-01 | 1 | 1 | 5.0000000 | 4 | 40 | 700 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.qty)) OVER(partition by ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn asc rows between current row and floor(ow_sale.qty-ow_sale.vn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc-ow_sale.pn)) OVER(partition by ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn asc rows between current row and floor(ow_sale.qty-ow_sale.vn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn asc rows between current row and floor(ow_sale.qty-ow_sale.vn) following ); -- mvd 3,4,5->2; 3,4,5->6; 3,4,5->7; 3,4,5->8; 3,4,5->9; +ERROR: ROWS parameter cannot be negative (seg0 slice3 localhost:18507 pid=9401) +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc,ow_sale.cn asc rows between current row and unbounded following ); -- mvd 4,5,6,1->3; + pn | qty | to_char | prc | cn | vn +-----+------+-------------------+------+----+---- + 300 | 1 | .0000000 | 0 | 1 | 30 + 400 | 1 | .0000000 | 0 | 1 | 50 + 400 | 1 | .0000000 | 0 | 2 | 50 + 700 | 1 | 700.0000000 | 1 | 4 | 40 + 500 | 12 | 2500.0000000 | 5 | 1 | 30 + 500 | 12 | 2500.0000000 | 5 | 3 | 30 + 100 | 1 | .0000000 | 0 | 1 | 20 + 200 | 1 | .0000000 | 0 | 1 | 10 + 200 | 1 | .0000000 | 0 | 3 | 40 + 800 | 1 | 800.0000000 | 1 | 4 | 40 + 600 | 12 | 3000.0000000 | 5 | 3 | 30 + 100 | 1100 | 240000.0000000 | 2400 | 2 | 40 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.cn)) OVER(partition by ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.pn)) OVER(partition by ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc rows between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc rows between current row and unbounded following ); -- mvd 7->6; 7->8; 7->9; 7->10; 7->11; + cn | cn | pn | qty | qty | to_char | vn | to_char | to_char | to_char | to_char +----+----+-----+------+------+-------------------+----+-------------------+-------------------+-------------------+------------------- + 1 | 1 | 200 | 1 | 1 | 1.0000000 | 10 | -200.0000000 | 1.0000000 | 1.0000000 | 210.0000000 + 1 | 1 | 100 | 1 | 1 | 1.0000000 | 20 | -100.0000000 | 1.0000000 | 1.0000000 | 120.0000000 + 1 | 1 | 300 | 1 | 1 | 1.0000000 | 30 | -300.0000000 | 1.0000000 | 1.0000000 | 330.0000000 + 1 | 1 | 500 | 12 | 12 | 1.0000000 | 30 | -495.0000000 | 12.0000000 | 6.0000000 | 530.0000000 + 3 | 3 | 500 | 12 | 12 | 3.0000000 | 30 | -495.0000000 | 12.0000000 | 8.0000000 | 530.0000000 + 3 | 3 | 600 | 12 | 12 | 3.0000000 | 30 | -595.0000000 | 12.0000000 | 8.0000000 | 630.0000000 + 2 | 2 | 100 | 1100 | 1100 | 2.0000000 | 40 | 2300.0000000 | 1100.0000000 | 2402.0000000 | 140.0000000 + 3 | 3 | 200 | 1 | 1 | 3.0000000 | 40 | -200.0000000 | 1.0000000 | 3.0000000 | 240.0000000 + 4 | 4 | 700 | 1 | 1 | 4.0000000 | 40 | -699.0000000 | 1.0000000 | 5.0000000 | 740.0000000 + 4 | 4 | 800 | 1 | 1 | 4.0000000 | 40 | -799.0000000 | 1.0000000 | 5.0000000 | 840.0000000 + 1 | 1 | 400 | 1 | 1 | 1.0000000 | 50 | -400.0000000 | 1.0000000 | 1.0000000 | 450.0000000 + 2 | 2 | 400 | 1 | 1 | 2.0000000 | 50 | -400.0000000 | 1.0000000 | 2.0000000 | 450.0000000 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.pn asc rows between floor(ow_sale.cn) following and 4 following ); -- mvd 6,7,1,8->5; + vn | cn | cn | prc | to_char | dt | qty | pn +----+----+----+------+-------------------+------------+------+----- + 40 | 3 | 3 | 0 | .0000000 | 1401-04-01 | 1 | 200 + 20 | 1 | 1 | 0 | .0000000 | 1401-05-01 | 1 | 100 + 30 | 1 | 1 | 5 | .0000000 | 1401-06-01 | 12 | 500 + 30 | 3 | 3 | 5 | .0000000 | 1401-06-01 | 12 | 500 + 30 | 3 | 3 | 5 | .0000000 | 1401-06-01 | 12 | 600 + 40 | 2 | 2 | 2400 | .0000000 | 1401-01-01 | 1100 | 100 + 10 | 1 | 1 | 0 | .0000000 | 1401-03-01 | 1 | 200 + 30 | 1 | 1 | 0 | .0000000 | 1401-05-02 | 1 | 300 + 40 | 4 | 4 | 1 | .0000000 | 1401-06-01 | 1 | 700 + 40 | 4 | 4 | 1 | .0000000 | 1401-06-01 | 1 | 800 + 50 | 1 | 1 | 0 | .0000000 | 1401-06-01 | 1 | 400 + 50 | 2 | 2 | 0 | .0000000 | 1401-06-01 | 1 | 400 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.pn desc rows between 2 following and floor(ow_sale.pn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc/ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.pn desc rows between 2 following and floor(ow_sale.pn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.pn desc rows between 2 following and floor(ow_sale.pn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.pn desc rows between 2 following and floor(ow_sale.pn) following ); -- mvd 3,6,2->5; 3,6,2->7; 3,6,2->8; 3,6,2->9; 3,6,2->10; + vn | pn | cn | vn | to_char | qty | to_char | to_char | to_char | to_char +----+-----+----+----+-------------------+------+-------------------+-------------------+-------------------+------------------- + 10 | 200 | 1 | 10 | .0000000 | 1 | 300.0000000 | .0000000 | .0000000 | 1.0000000 + 20 | 100 | 1 | 20 | .0000000 | 1 | 400.0000000 | .0000000 | .0000000 | 1.0000000 + 30 | 300 | 1 | 30 | .0000000 | 1 | .0000000 | .0000000 | .0000000 | .0000000 + 50 | 400 | 1 | 50 | .0000000 | 1 | .0000000 | .0000000 | .0000000 | .0000000 + 40 | 100 | 2 | 40 | .0000000 | 1100 | .0000000 | .0000000 | .0000000 | .0000000 + 40 | 200 | 3 | 40 | .0000000 | 1 | .0000000 | .0000000 | .0000000 | .0000000 + 30 | 500 | 1 | 30 | .0000000 | 12 | .0000000 | .0000000 | .0000000 | .0000000 + 50 | 400 | 2 | 50 | .0000000 | 1 | .0000000 | .0000000 | .0000000 | .0000000 + 30 | 500 | 3 | 30 | .0000000 | 12 | .0000000 | .0000000 | .0000000 | .0000000 + 30 | 600 | 3 | 30 | .0000000 | 12 | .0000000 | .0000000 | .0000000 | .0000000 + 40 | 700 | 4 | 40 | .0000000 | 1 | .0000000 | .0000000 | .0000000 | .0000000 + 40 | 800 | 4 | 40 | .0000000 | 1 | .0000000 | .0000000 | .0000000 | .0000000 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between 0 following and unbounded following ); -- mvd 3,2,5->4; + prc | vn | cn | to_char | pn +------+----+----+-------------------+----- + 0 | 10 | 1 | 199.0000000 | 200 + 0 | 20 | 1 | 99.0000000 | 100 + 0 | 30 | 1 | 299.0000000 | 300 + 5 | 30 | 1 | 488.0000000 | 500 + 5 | 30 | 3 | 488.0000000 | 500 + 5 | 30 | 3 | 588.0000000 | 600 + 2400 | 40 | 2 | -1000.0000000 | 100 + 0 | 40 | 3 | 199.0000000 | 200 + 1 | 40 | 4 | 699.0000000 | 700 + 1 | 40 | 4 | 799.0000000 | 800 + 0 | 50 | 1 | 399.0000000 | 400 + 0 | 50 | 2 | 399.0000000 | 400 +(12 rows) + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between 1 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between 1 following and unbounded following ); -- mvd 4,5,6,1,7->3; 4,5,6,1,7->8; 4,5,6,1,7->9; 4,5,6,1,7->10; + vn | qty | to_char | prc | cn | dt | pn | to_char | to_char | to_char +----+------+-------------------+------+----+------------+-----+-------------------+-------------------+------------------- + 10 | 1 | .0000000 | 0 | 1 | 1401-03-01 | 200 | .0000000 | .0000000 | .0000000 + 30 | 12 | .0000000 | 5 | 3 | 1401-06-01 | 600 | .0000000 | .0000000 | .0000000 + 40 | 1 | .0000000 | 1 | 4 | 1401-06-01 | 800 | .0000000 | .0000000 | .0000000 + 20 | 1 | .0000000 | 0 | 1 | 1401-05-01 | 100 | .0000000 | .0000000 | .0000000 + 30 | 1 | .0000000 | 0 | 1 | 1401-05-02 | 300 | .0000000 | .0000000 | .0000000 + 30 | 12 | 5.0000000 | 5 | 1 | 1401-06-01 | 500 | 5.0000000 | 500.0000000 | 512.0000000 + 30 | 12 | .0000000 | 5 | 3 | 1401-06-01 | 500 | .0000000 | .0000000 | .0000000 + 40 | 1100 | .0000000 | 2400 | 2 | 1401-01-01 | 100 | .0000000 | .0000000 | .0000000 + 40 | 1 | .0000000 | 0 | 3 | 1401-04-01 | 200 | .0000000 | .0000000 | .0000000 + 40 | 1 | .0000000 | 1 | 4 | 1401-06-01 | 700 | .0000000 | .0000000 | .0000000 + 50 | 1 | .0000000 | 0 | 1 | 1401-06-01 | 400 | .0000000 | 400.0000000 | 401.0000000 + 50 | 1 | .0000000 | 0 | 2 | 1401-06-01 | 400 | .0000000 | .0000000 | .0000000 +(12 rows) + +-- LAST_VALUE() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc); -- mvd 6,7->5; + pn | qty | prc | qty | to_char | cn | vn +-----+------+------+------+-------------------+----+---- + 100 | 1100 | 2400 | 1100 | 2402.0000000 | 2 | 40 + 200 | 1 | 0 | 1 | 1.0000000 | 1 | 10 + 200 | 1 | 0 | 1 | 3.0000000 | 3 | 40 + 100 | 1 | 0 | 1 | 1.0000000 | 1 | 20 + 300 | 1 | 0 | 1 | 1.0000000 | 1 | 30 + 400 | 1 | 0 | 1 | 1.0000000 | 1 | 50 + 400 | 1 | 0 | 1 | 2.0000000 | 2 | 50 + 500 | 12 | 5 | 12 | 6.0000000 | 1 | 30 + 500 | 12 | 5 | 12 | 8.0000000 | 3 | 30 + 600 | 12 | 5 | 12 | 8.0000000 | 3 | 30 + 700 | 1 | 1 | 1 | 5.0000000 | 4 | 40 + 800 | 1 | 1 | 1 | 5.0000000 | 4 | 40 +(12 rows) + +-- LAST_VALUE() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn/ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 1->3; 1->4; 1->5; 1->6; 1->7; + pn | pn | to_char | to_char | to_char | to_char | to_char +-----+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 100 | 100 | -98.0000000 | -1098.0000000 | 100.0000000 | .0000000 | 20.0000000 + 200 | 200 | -199.0000000 | -1098.0000000 | 100.0000000 | .0000000 | 20.0000000 + 200 | 200 | -197.0000000 | -1098.0000000 | 100.0000000 | .0000000 | 20.0000000 + 100 | 100 | -99.0000000 | -1098.0000000 | 100.0000000 | .0000000 | 20.0000000 + 300 | 300 | -299.0000000 | -1098.0000000 | 100.0000000 | .0000000 | 20.0000000 + 400 | 400 | -399.0000000 | -1098.0000000 | 100.0000000 | .0000000 | 20.0000000 + 400 | 400 | -398.0000000 | -1098.0000000 | 100.0000000 | .0000000 | 20.0000000 + 500 | 500 | -499.0000000 | -1098.0000000 | 100.0000000 | .0000000 | 20.0000000 + 500 | 500 | -497.0000000 | -1098.0000000 | 100.0000000 | .0000000 | 20.0000000 + 600 | 600 | -597.0000000 | -1098.0000000 | 100.0000000 | .0000000 | 20.0000000 + 700 | 700 | -696.0000000 | -1098.0000000 | 100.0000000 | .0000000 | 20.0000000 + 800 | 800 | -796.0000000 | -1098.0000000 | 100.0000000 | .0000000 | 20.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range unbounded preceding ); -- mvd 4->3; + prc | vn | to_char | cn +------+----+-------------------+---- + 2400 | 40 | 20.0000000 | 2 + 0 | 10 | 10.0000000 | 1 + 0 | 40 | 13.0000000 | 3 + 0 | 20 | 20.0000000 | 1 + 0 | 30 | 30.0000000 | 1 + 0 | 50 | 50.0000000 | 1 + 0 | 50 | 25.0000000 | 2 + 5 | 30 | 30.0000000 | 1 + 5 | 30 | 10.0000000 | 3 + 5 | 30 | 10.0000000 | 3 + 1 | 40 | 10.0000000 | 4 + 1 | 40 | 10.0000000 | 4 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn asc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range unbounded preceding ); -- mvd 4->3; 4->5; 4->6; 4->7; 4->8; + qty | qty | to_char | cn | to_char | to_char | to_char | to_char +------+------+-------------------+----+-------------------+-------------------+-------------------+------------------- + 1100 | 1100 | -2300.0000000 | 2 | 100.0000000 | 100.0000000 | 200.0000000 | 1100.0000000 + 1 | 1 | 200.0000000 | 1 | 100.0000000 | 200.0000000 | 200.0000000 | 1100.0000000 + 1 | 1 | 200.0000000 | 3 | 100.0000000 | 200.0000000 | 600.0000000 | 1100.0000000 + 1 | 1 | 100.0000000 | 1 | 100.0000000 | 100.0000000 | 100.0000000 | 1100.0000000 + 1 | 1 | 300.0000000 | 1 | 100.0000000 | 300.0000000 | 300.0000000 | 1100.0000000 + 1 | 1 | 400.0000000 | 1 | 100.0000000 | 400.0000000 | 400.0000000 | 1100.0000000 + 1 | 1 | 400.0000000 | 2 | 100.0000000 | 400.0000000 | 800.0000000 | 1100.0000000 + 12 | 12 | 495.0000000 | 1 | 100.0000000 | 500.0000000 | 500.0000000 | 1100.0000000 + 12 | 12 | 495.0000000 | 3 | 100.0000000 | 500.0000000 | 1500.0000000 | 1100.0000000 + 12 | 12 | 595.0000000 | 3 | 100.0000000 | 600.0000000 | 1800.0000000 | 1100.0000000 + 1 | 1 | 699.0000000 | 4 | 100.0000000 | 700.0000000 | 2800.0000000 | 1100.0000000 + 1 | 1 | 799.0000000 | 4 | 100.0000000 | 800.0000000 | 3200.0000000 | 1100.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc range 4 preceding ); -- mvd 1->5; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc range ... + ^ +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn*ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.pn desc range 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn+ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.pn desc range 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc-ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn desc range 1 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc range 1 preceding ); -- mvd 7->6; 7->8; 7->9; 7->10; 7->11; 7->12; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 8: WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc range ... + ^ +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc/ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc range current row ); -- mvd 3->2; +ERROR: division by zero +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn asc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn asc range current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range current row ); -- mvd 4->3; 4->5; 4->6; 4->7; 4->8; + cn | qty | to_char | pn | to_char | to_char | to_char | to_char +----+------+-------------------+-----+-------------------+-------------------+-------------------+------------------- + 2 | 1100 | -1098.0000000 | 100 | 100.0000000 | 40.0000000 | 140.0000000 | 40.0000000 + 1 | 1 | .0000000 | 200 | 200.0000000 | 10.0000000 | 210.0000000 | 10.0000000 + 3 | 1 | 2.0000000 | 200 | 200.0000000 | 40.0000000 | 240.0000000 | 40.0000000 + 1 | 1 | .0000000 | 100 | 100.0000000 | 20.0000000 | 120.0000000 | 20.0000000 + 1 | 1 | .0000000 | 300 | 300.0000000 | 30.0000000 | 330.0000000 | 30.0000000 + 1 | 1 | .0000000 | 400 | 400.0000000 | 50.0000000 | 450.0000000 | 50.0000000 + 2 | 1 | 1.0000000 | 400 | 400.0000000 | 50.0000000 | 450.0000000 | 50.0000000 + 1 | 12 | -11.0000000 | 500 | 500.0000000 | 30.0000000 | 530.0000000 | 30.0000000 + 3 | 12 | -9.0000000 | 500 | 500.0000000 | 30.0000000 | 530.0000000 | 30.0000000 + 3 | 12 | -9.0000000 | 600 | 600.0000000 | 30.0000000 | 630.0000000 | 30.0000000 + 4 | 1 | 3.0000000 | 700 | 700.0000000 | 40.0000000 | 740.0000000 | 40.0000000 + 4 | 1 | 3.0000000 | 800 | 800.0000000 | 40.0000000 | 840.0000000 | 40.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and floor(ow_sale.qty/ow_sale.pn) preceding ); -- mvd 2->5; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range b... + ^ +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and 3 preceding ); -- mvd 4->5; 4->6; 4->7; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 5: WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc range b... + ^ +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 3->2; + qty | to_char | cn +------+-------------------+---- + 1100 | 2400.0000000 | 2 + 1 | .0000000 | 1 + 1 | .0000000 | 3 + 1 | .0000000 | 1 + 1 | .0000000 | 1 + 1 | .0000000 | 1 + 1 | .0000000 | 2 + 12 | 5.0000000 | 1 + 12 | 5.0000000 | 3 + 12 | 5.0000000 | 3 + 1 | 1.0000000 | 4 + 1 | 1.0000000 | 4 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and current row ); -- mvd 3->6; 3->7; 3->8; 3->9; + qty | qty | cn | dt | vn | to_char | to_char | to_char | to_char +------+------+----+------------+----+-------------------+-------------------+-------------------+------------------- + 1100 | 1100 | 2 | 1401-01-01 | 40 | 40.0000000 | 2400.0000000 | 2.0000000 | 100.0000000 + 1 | 1 | 1 | 1401-03-01 | 10 | 10.0000000 | 2400.0000000 | 1.0000000 | 200.0000000 + 1 | 1 | 3 | 1401-04-01 | 40 | 40.0000000 | 2400.0000000 | 3.0000000 | 200.0000000 + 1 | 1 | 1 | 1401-05-01 | 20 | 20.0000000 | 2400.0000000 | 1.0000000 | 100.0000000 + 1 | 1 | 1 | 1401-05-02 | 30 | 30.0000000 | 2400.0000000 | 1.0000000 | 300.0000000 + 1 | 1 | 1 | 1401-06-01 | 50 | 50.0000000 | 2400.0000000 | 1.0000000 | 400.0000000 + 1 | 1 | 2 | 1401-06-01 | 50 | 50.0000000 | 2400.0000000 | 2.0000000 | 400.0000000 + 12 | 12 | 1 | 1401-06-01 | 30 | 30.0000000 | 2400.0000000 | 1.0000000 | 500.0000000 + 12 | 12 | 3 | 1401-06-01 | 30 | 30.0000000 | 2400.0000000 | 3.0000000 | 500.0000000 + 12 | 12 | 3 | 1401-06-01 | 30 | 30.0000000 | 2400.0000000 | 3.0000000 | 600.0000000 + 1 | 1 | 4 | 1401-06-01 | 40 | 40.0000000 | 2400.0000000 | 4.0000000 | 700.0000000 + 1 | 1 | 4 | 1401-06-01 | 40 | 40.0000000 | 2400.0000000 | 4.0000000 | 800.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range between unbounded preceding and floor(ow_sale.cn) following ); -- mvd 2->6; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range b... + ^ +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc range between unbounded preceding and 0 following ); -- mvd 4->3; 4->5; 4->6; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 5: WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc range ... + ^ +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc range between unbounded preceding and unbounded following ); -- mvd 2->4; + qty | vn | vn | to_char +------+----+----+------------------- + 1100 | 40 | 40 | 39.0000000 + 1 | 10 | 10 | 39.0000000 + 1 | 40 | 40 | 39.0000000 + 1 | 20 | 20 | 39.0000000 + 1 | 30 | 30 | 39.0000000 + 1 | 50 | 50 | 39.0000000 + 1 | 50 | 50 | 39.0000000 + 12 | 30 | 30 | 39.0000000 + 12 | 30 | 30 | 39.0000000 + 12 | 30 | 30 | 39.0000000 + 1 | 40 | 40 | 39.0000000 + 1 | 40 | 40 | 39.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 5->6; 5->7; 5->8; 5->9; 5->10; 5->11; + cn | pn | qty | cn | vn | to_char | to_char | to_char | to_char | to_char | to_char +----+-----+------+----+----+-------------------+-------------------+-------------------+-------------------+-------------------+------------------- + 2 | 100 | 1100 | 2 | 40 | -799.0000000 | 1200.0000000 | 1100.0000000 | 2.0000000 | 1.0000000 | 5.0000000 + 1 | 200 | 1 | 1 | 10 | -799.0000000 | 1200.0000000 | 1100.0000000 | 2.0000000 | 1.0000000 | 5.0000000 + 3 | 200 | 1 | 3 | 40 | -799.0000000 | 1200.0000000 | 1100.0000000 | 2.0000000 | 1.0000000 | 5.0000000 + 1 | 100 | 1 | 1 | 20 | -799.0000000 | 1200.0000000 | 1100.0000000 | 2.0000000 | 1.0000000 | 5.0000000 + 1 | 300 | 1 | 1 | 30 | -799.0000000 | 1200.0000000 | 1100.0000000 | 2.0000000 | 1.0000000 | 5.0000000 + 1 | 400 | 1 | 1 | 50 | -799.0000000 | 1200.0000000 | 1100.0000000 | 2.0000000 | 1.0000000 | 5.0000000 + 2 | 400 | 1 | 2 | 50 | -799.0000000 | 1200.0000000 | 1100.0000000 | 2.0000000 | 1.0000000 | 5.0000000 + 1 | 500 | 12 | 1 | 30 | -799.0000000 | 1200.0000000 | 1100.0000000 | 2.0000000 | 1.0000000 | 5.0000000 + 3 | 500 | 12 | 3 | 30 | -799.0000000 | 1200.0000000 | 1100.0000000 | 2.0000000 | 1.0000000 | 5.0000000 + 3 | 600 | 12 | 3 | 30 | -799.0000000 | 1200.0000000 | 1100.0000000 | 2.0000000 | 1.0000000 | 5.0000000 + 4 | 700 | 1 | 4 | 40 | -799.0000000 | 1200.0000000 | 1100.0000000 | 2.0000000 | 1.0000000 | 5.0000000 + 4 | 800 | 1 | 4 | 40 | -799.0000000 | 1200.0000000 | 1100.0000000 | 2.0000000 | 1.0000000 | 5.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range between 4 preceding and floor(ow_sale.prc) preceding ); -- mvd 2->4; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range b... + ^ +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn desc range between floor(ow_sale.qty/ow_sale.pn) preceding and 1 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between floor(ow_sale.qty/ow_sale.pn) preceding and 1 preceding ); -- mvd 5->4; 5->6; 5->7; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 5: WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range ... + ^ +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc range between 0 preceding and current row ); -- mvd 2->7; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc range b... + ^ +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn desc range between 2 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn-ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn desc range between 2 preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc range between 2 preceding and current row ); -- mvd 3->2; 3->4; 3->5; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 5: WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc range ... + ^ +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range between floor(ow_sale.vn-ow_sale.qty) preceding and floor(ow_sale.cn) following ); -- mvd 4->3; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range b... + ^ +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc*ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn asc range between 0 preceding and floor(ow_sale.qty-ow_sale.prc) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range between 0 preceding and floor(ow_sale.qty-ow_sale.prc) following ); -- mvd 3->5; 3->6; 3->7; 3->8; 3->9; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 7: WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range b... + ^ +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between 3 preceding and unbounded following ); -- mvd 4->3; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range ... + ^ +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc/ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc range between 2 preceding and unbounded following ); -- mvd 5->4; 5->6; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 4: WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc range b... + ^ +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range between current row and current row ); -- mvd 6->7; + qty | qty | vn | qty | prc | cn | to_char +------+------+----+------+------+----+------------------- + 1100 | 1100 | 40 | 1100 | 2400 | 2 | 2400.0000000 + 1 | 1 | 10 | 1 | 0 | 1 | .0000000 + 1 | 1 | 40 | 1 | 0 | 3 | .0000000 + 1 | 1 | 20 | 1 | 0 | 1 | .0000000 + 1 | 1 | 30 | 1 | 0 | 1 | .0000000 + 1 | 1 | 50 | 1 | 0 | 1 | .0000000 + 1 | 1 | 50 | 1 | 0 | 2 | .0000000 + 12 | 12 | 30 | 12 | 5 | 1 | 5.0000000 + 12 | 12 | 30 | 12 | 5 | 3 | 5.0000000 + 12 | 12 | 30 | 12 | 5 | 3 | 5.0000000 + 1 | 1 | 40 | 1 | 1 | 4 | 1.0000000 + 1 | 1 | 40 | 1 | 1 | 4 | 1.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.cn desc range between current row and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between current row and current row ); -- mvd 2->4; 2->5; + dt | cn | cn | to_char | to_char +------------+----+----+-------------------+------------------- + 1401-01-01 | 2 | 2 | 2398.0000000 | 42.0000000 + 1401-03-01 | 1 | 1 | -1.0000000 | 11.0000000 + 1401-04-01 | 3 | 3 | -3.0000000 | 43.0000000 + 1401-05-01 | 1 | 1 | -1.0000000 | 21.0000000 + 1401-05-02 | 1 | 1 | -1.0000000 | 31.0000000 + 1401-06-01 | 1 | 1 | -1.0000000 | 51.0000000 + 1401-06-01 | 2 | 2 | -2.0000000 | 52.0000000 + 1401-06-01 | 1 | 1 | 4.0000000 | 31.0000000 + 1401-06-01 | 3 | 3 | 2.0000000 | 33.0000000 + 1401-06-01 | 3 | 3 | 2.0000000 | 33.0000000 + 1401-06-01 | 4 | 4 | -3.0000000 | 44.0000000 + 1401-06-01 | 4 | 4 | -3.0000000 | 44.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.prc,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range between current row and floor(ow_sale.qty) following ); -- mvd 3->4; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range b... + ^ +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn desc range between current row and 1 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.pn desc range between current row and 1 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc range between current row and 1 following ); -- mvd 1->6; 1->7; 1->8; 1->9; 1->10; 1->11; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 8: WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc range ... + ^ +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc range between current row and unbounded following ); -- mvd 6->5; + qty | cn | qty | prc | to_char | vn +------+----+------+------+-------------------+---- + 1100 | 2 | 1100 | 2400 | 4.0000000 | 40 + 1 | 1 | 1 | 0 | 4.0000000 | 10 + 1 | 3 | 1 | 0 | 4.0000000 | 40 + 1 | 1 | 1 | 0 | 4.0000000 | 20 + 1 | 1 | 1 | 0 | 4.0000000 | 30 + 1 | 1 | 1 | 0 | 4.0000000 | 50 + 1 | 2 | 1 | 0 | 4.0000000 | 50 + 12 | 1 | 12 | 5 | 4.0000000 | 30 + 12 | 3 | 12 | 5 | 4.0000000 | 30 + 12 | 3 | 12 | 5 | 4.0000000 | 30 + 1 | 4 | 1 | 1 | 4.0000000 | 40 + 1 | 4 | 1 | 1 | 4.0000000 | 40 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn/ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn desc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn/ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.pn desc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc/ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc range between current row and unbounded following ); -- mvd 3->4; 3->5; 3->6; 3->7; + vn | qty | pn | to_char | to_char | to_char | to_char +----+------+-----+-------------------+-------------------+-------------------+------------------- + 40 | 1100 | 100 | 3200.0000000 | 1.0000000 | 20.0000000 | 1.0000000 + 10 | 1 | 200 | 3200.0000000 | 1.0000000 | 10.0000000 | 1.0000000 + 40 | 1 | 200 | 3200.0000000 | 1.0000000 | 13.0000000 | 1.0000000 + 20 | 1 | 100 | 3200.0000000 | 1.0000000 | 20.0000000 | 1.0000000 + 30 | 1 | 300 | 3200.0000000 | 1.0000000 | 30.0000000 | 1.0000000 + 50 | 1 | 400 | 3200.0000000 | 1.0000000 | 50.0000000 | 1.0000000 + 50 | 1 | 400 | 3200.0000000 | 1.0000000 | 25.0000000 | 1.0000000 + 30 | 12 | 500 | 3200.0000000 | 1.0000000 | 30.0000000 | 1.0000000 + 30 | 12 | 500 | 3200.0000000 | 1.0000000 | 10.0000000 | 1.0000000 + 30 | 12 | 600 | 3200.0000000 | 1.0000000 | 10.0000000 | 1.0000000 + 40 | 1 | 700 | 3200.0000000 | 1.0000000 | 10.0000000 | 1.0000000 + 40 | 1 | 800 | 3200.0000000 | 1.0000000 | 10.0000000 | 1.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range between floor(ow_sale.pn+ow_sale.prc) following and 1 following ); -- mvd 4->5; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range b... + ^ +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.pn desc range between floor(ow_sale.prc+ow_sale.cn) following and floor(ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn/ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.pn desc range between floor(ow_sale.prc+ow_sale.cn) following and floor(ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn desc range between floor(ow_sale.prc+ow_sale.cn) following and floor(ow_sale.qty) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc range between floor(ow_sale.prc+ow_sale.cn) following and floor(ow_sale.qty) following ); -- mvd 2->4; 2->5; 2->6; 2->7; 2->8; 2->9; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 8: WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc range ... + ^ +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between 4 following and unbounded following ); -- mvd 5->7; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range ... + ^ +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between floor(ow_sale.pn) following and unbounded following ); -- mvd 3->2; 3->4; 3->5; 3->6; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 6: WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range ... + ^ +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.vn asc rows unbounded preceding ); -- mvd 3,1->5; + pn | qty | vn | cn | to_char +-----+------+----+----+------------------- + 100 | 1100 | 40 | 2 | 2.0000000 + 200 | 1 | 10 | 1 | 1.0000000 + 200 | 1 | 40 | 3 | 3.0000000 + 100 | 1 | 20 | 1 | 1.0000000 + 300 | 1 | 30 | 1 | 1.0000000 + 400 | 1 | 50 | 1 | 1.0000000 + 400 | 1 | 50 | 2 | 2.0000000 + 500 | 12 | 30 | 1 | 1.0000000 + 500 | 12 | 30 | 3 | 3.0000000 + 600 | 12 | 30 | 3 | 3.0000000 + 700 | 1 | 40 | 4 | 4.0000000 + 800 | 1 | 40 | 4 | 4.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows unbounded preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows unbounded preceding ); -- mvd 4->3; 4->5; 4->6; + pn | prc | to_char | vn | to_char | to_char +-----+------+-------------------+----+-------------------+------------------- + 100 | 2400 | 60.0000000 | 40 | 2.0000000 | 2.0000000 + 200 | 0 | .0000000 | 10 | 2.0000000 | 2.0000000 + 200 | 0 | .0000000 | 40 | 2.0000000 | 2.0000000 + 100 | 0 | .0000000 | 20 | 2.0000000 | 2.0000000 + 300 | 0 | .0000000 | 30 | 2.0000000 | 2.0000000 + 400 | 0 | .0000000 | 50 | 2.0000000 | 2.0000000 + 400 | 0 | .0000000 | 50 | 2.0000000 | 2.0000000 + 500 | 5 | .0000000 | 30 | 2.0000000 | 2.0000000 + 500 | 5 | .0000000 | 30 | 2.0000000 | 2.0000000 + 600 | 5 | .0000000 | 30 | 2.0000000 | 2.0000000 + 700 | 1 | .0000000 | 40 | 2.0000000 | 2.0000000 + 800 | 1 | .0000000 | 40 | 2.0000000 | 2.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc,ow_sale.vn desc rows 8 preceding ); -- mvd 4,5->3; + dt | prc | to_char | vn | pn +------------+------+-------------------+----+----- + 1401-01-01 | 2400 | 96000.0000000 | 40 | 100 + 1401-03-01 | 0 | .0000000 | 10 | 200 + 1401-04-01 | 0 | .0000000 | 40 | 200 + 1401-05-01 | 0 | .0000000 | 20 | 100 + 1401-05-02 | 0 | .0000000 | 30 | 300 + 1401-06-01 | 0 | .0000000 | 50 | 400 + 1401-06-01 | 0 | .0000000 | 50 | 400 + 1401-06-01 | 5 | 150.0000000 | 30 | 500 + 1401-06-01 | 5 | 150.0000000 | 30 | 500 + 1401-06-01 | 5 | 150.0000000 | 30 | 600 + 1401-06-01 | 1 | 40.0000000 | 40 | 700 + 1401-06-01 | 1 | 40.0000000 | 40 | 800 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows 3 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows 3 preceding ); -- mvd 6->5; 6->7; 6->8; + vn | dt | cn | qty | to_char | pn | to_char | to_char +----+------------+----+------+-------------------+-----+-------------------+------------------- + 40 | 1401-01-01 | 2 | 1100 | 1200.0000000 | 100 | 1000.0000000 | 2400.0000000 + 10 | 1401-03-01 | 1 | 1 | 201.0000000 | 200 | 1000.0000000 | .0000000 + 40 | 1401-04-01 | 3 | 1 | 201.0000000 | 200 | 1000.0000000 | .0000000 + 20 | 1401-05-01 | 1 | 1 | 101.0000000 | 100 | 1000.0000000 | .0000000 + 30 | 1401-05-02 | 1 | 1 | 301.0000000 | 300 | -199.0000000 | .0000000 + 50 | 1401-06-01 | 1 | 1 | 401.0000000 | 400 | -199.0000000 | .0000000 + 50 | 1401-06-01 | 2 | 1 | 401.0000000 | 400 | -99.0000000 | .0000000 + 30 | 1401-06-01 | 1 | 12 | 512.0000000 | 500 | -299.0000000 | 5.0000000 + 30 | 1401-06-01 | 3 | 12 | 512.0000000 | 500 | -399.0000000 | 5.0000000 + 30 | 1401-06-01 | 3 | 12 | 612.0000000 | 600 | -399.0000000 | 5.0000000 + 40 | 1401-06-01 | 4 | 1 | 701.0000000 | 700 | -488.0000000 | 1.0000000 + 40 | 1401-06-01 | 4 | 1 | 801.0000000 | 800 | -488.0000000 | 1.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.pn asc rows current row ); -- mvd 5,3->4; + qty | qty | pn | to_char | vn +------+------+-----+-------------------+---- + 1100 | 1100 | 100 | 2400.0000000 | 40 + 1 | 1 | 200 | .0000000 | 10 + 1 | 1 | 200 | .0000000 | 40 + 1 | 1 | 100 | .0000000 | 20 + 1 | 1 | 300 | .0000000 | 30 + 1 | 1 | 400 | .0000000 | 50 + 1 | 1 | 400 | .0000000 | 50 + 12 | 12 | 500 | 5.0000000 | 30 + 12 | 12 | 500 | 5.0000000 | 30 + 12 | 12 | 600 | 5.0000000 | 30 + 1 | 1 | 700 | 1.0000000 | 40 + 1 | 1 | 800 | 1.0000000 | 40 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.vn desc rows current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.vn desc rows current row ); -- mvd 5,2->4; 5,2->6; + qty | vn | qty | to_char | cn | to_char +------+----+------+-------------------+----+------------------- + 1100 | 40 | 1100 | .0000000 | 2 | 100.0000000 + 1 | 10 | 1 | .0000000 | 1 | 200.0000000 + 1 | 40 | 1 | .0000000 | 3 | 200.0000000 + 1 | 20 | 1 | .0000000 | 1 | 100.0000000 + 1 | 30 | 1 | .0000000 | 1 | 300.0000000 + 1 | 50 | 1 | .0000000 | 1 | 400.0000000 + 1 | 50 | 1 | .0000000 | 2 | 400.0000000 + 12 | 30 | 12 | .0000000 | 1 | 500.0000000 + 12 | 30 | 12 | .0000000 | 3 | 500.0000000 + 12 | 30 | 12 | .0000000 | 3 | 600.0000000 + 1 | 40 | 1 | .0000000 | 4 | 700.0000000 + 1 | 40 | 1 | .0000000 | 4 | 800.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.qty/ow_sale.cn) preceding ); -- mvd 1,4,5->3; + cn | cn | to_char | vn | pn +----+----+-------------------+----+----- + 2 | 2 | .0000000 | 40 | 100 + 1 | 1 | 40.0000000 | 10 | 200 + 3 | 3 | 40.0000000 | 40 | 200 + 1 | 1 | 40.0000000 | 20 | 100 + 1 | 1 | 20.0000000 | 30 | 300 + 1 | 1 | 30.0000000 | 50 | 400 + 2 | 2 | 50.0000000 | 50 | 400 + 1 | 1 | .0000000 | 30 | 500 + 3 | 3 | 30.0000000 | 30 | 500 + 3 | 3 | 50.0000000 | 30 | 600 + 4 | 4 | 40.0000000 | 40 | 700 + 4 | 4 | 40.0000000 | 40 | 800 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and 4 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn/ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and 4 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and 4 preceding ); -- mvd 5,1->4; 5,1->6; 5,1->7; 5,1->8; 5,1->9; 5,1->10; + pn | cn | prc | to_char | vn | to_char | to_char | to_char | to_char | to_char +-----+----+------+-------------------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 100 | 2 | 2400 | .0000000 | 40 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 + 200 | 1 | 0 | .0000000 | 10 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 + 200 | 3 | 0 | .0000000 | 40 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 + 100 | 1 | 0 | .0000000 | 20 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 + 300 | 1 | 0 | 2200.0000000 | 30 | 1.0000000 | 4000.0000000 | 100.0000000 | 2402.0000000 | .0000000 + 400 | 1 | 0 | 2.0000000 | 50 | 1.0000000 | 2000.0000000 | 100.0000000 | 1.0000000 | 10.0000000 + 400 | 2 | 0 | 2.0000000 | 50 | 1.0000000 | 8000.0000000 | 100.0000000 | 3.0000000 | 40.0000000 + 500 | 1 | 5 | 2.0000000 | 30 | 1.0000000 | 2000.0000000 | 100.0000000 | 1.0000000 | 20.0000000 + 500 | 3 | 5 | 2.0000000 | 30 | 1.0000000 | 9000.0000000 | 100.0000000 | 1.0000000 | 30.0000000 + 600 | 3 | 5 | 2.0000000 | 30 | 1.0000000 | 20000.0000000 | 100.0000000 | 1.0000000 | 50.0000000 + 700 | 4 | 1 | 2.0000000 | 40 | 1.0000000 | 20000.0000000 | 100.0000000 | 2.0000000 | 50.0000000 + 800 | 4 | 1 | 24.0000000 | 40 | 1.0000000 | 15000.0000000 | 100.0000000 | 6.0000000 | 2.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and current row ); -- mvd 3,1->2; + pn | to_char | cn +-----+-------------------+---- + 100 | 2400.0000000 | 2 + 200 | .0000000 | 1 + 200 | .0000000 | 3 + 100 | .0000000 | 1 + 300 | .0000000 | 1 + 400 | .0000000 | 1 + 400 | .0000000 | 2 + 500 | 5.0000000 | 1 + 500 | 5.0000000 | 3 + 600 | 5.0000000 | 3 + 700 | 1.0000000 | 4 + 800 | 1.0000000 | 4 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 3->2; 3->4; 3->5; 3->6; 3->7; + pn | to_char | cn | to_char | to_char | to_char | to_char +-----+-------------------+----+-------------------+-------------------+-------------------+------------------- + 100 | 100.0000000 | 2 | 2.0000000 | 1100.0000000 | 42.0000000 | 100.0000000 + 200 | 200.0000000 | 1 | 2.0000000 | 1.0000000 | 42.0000000 | 100.0000000 + 200 | 200.0000000 | 3 | 2.0000000 | 1.0000000 | 42.0000000 | 100.0000000 + 100 | 100.0000000 | 1 | 2.0000000 | 1.0000000 | 42.0000000 | 100.0000000 + 300 | 300.0000000 | 1 | 2.0000000 | 1.0000000 | 42.0000000 | 100.0000000 + 400 | 400.0000000 | 1 | 2.0000000 | 1.0000000 | 42.0000000 | 100.0000000 + 400 | 400.0000000 | 2 | 2.0000000 | 1.0000000 | 42.0000000 | 100.0000000 + 500 | 500.0000000 | 1 | 2.0000000 | 12.0000000 | 42.0000000 | 100.0000000 + 500 | 500.0000000 | 3 | 2.0000000 | 12.0000000 | 42.0000000 | 100.0000000 + 600 | 600.0000000 | 3 | 2.0000000 | 12.0000000 | 42.0000000 | 100.0000000 + 700 | 700.0000000 | 4 | 2.0000000 | 1.0000000 | 42.0000000 | 100.0000000 + 800 | 800.0000000 | 4 | 2.0000000 | 1.0000000 | 42.0000000 | 100.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows between unbounded preceding and 9 following ); -- mvd 3,1->2; + pn | to_char | cn +-----+-------------------+---- + 100 | 3000.0000000 | 2 + 200 | 700.0000000 | 1 + 200 | 800.0000000 | 3 + 100 | 800.0000000 | 1 + 300 | 800.0000000 | 1 + 400 | 800.0000000 | 1 + 400 | 800.0000000 | 2 + 500 | 800.0000000 | 1 + 500 | 800.0000000 | 3 + 600 | 800.0000000 | 3 + 700 | 800.0000000 | 4 + 800 | 800.0000000 | 4 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn-ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.pn asc rows between unbounded preceding and floor(ow_sale.qty*ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.pn asc rows between unbounded preceding and floor(ow_sale.qty*ow_sale.qty) following ); -- mvd 3->6; 3->7; 3->8; 3->9; + cn | prc | pn | vn | cn | to_char | to_char | to_char | to_char +----+------+-----+----+----+-------------------+-------------------+-------------------+------------------- + 2 | 2400 | 100 | 40 | 2 | 1.0000000 | 3.0000000 | 800.0000000 | 1.0000000 + 1 | 0 | 200 | 10 | 1 | 1.0000000 | 2.0000000 | .0000000 | 1.0000000 + 3 | 0 | 200 | 40 | 3 | 1.0000000 | .0000000 | .0000000 | 1.0000000 + 1 | 0 | 100 | 20 | 1 | 1.0000000 | .0000000 | .0000000 | 1.0000000 + 1 | 0 | 300 | 30 | 1 | 1.0000000 | .0000000 | .0000000 | 1.0000000 + 1 | 0 | 400 | 50 | 1 | 1.0000000 | 1.0000000 | .0000000 | 1.0000000 + 2 | 0 | 400 | 50 | 2 | 1.0000000 | -11.0000000 | 2500.0000000 | 12.0000000 + 1 | 5 | 500 | 30 | 1 | 1.0000000 | 3.0000000 | 800.0000000 | 1.0000000 + 3 | 5 | 500 | 30 | 3 | 1.0000000 | 3.0000000 | 800.0000000 | 1.0000000 + 3 | 5 | 600 | 30 | 3 | 1.0000000 | 3.0000000 | 800.0000000 | 1.0000000 + 4 | 1 | 700 | 40 | 4 | 1.0000000 | 3.0000000 | 800.0000000 | 1.0000000 + 4 | 1 | 800 | 40 | 4 | 1.0000000 | 3.0000000 | 800.0000000 | 1.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and unbounded following ); -- mvd 2->3; + vn | cn | to_char +----+----+------------------- + 40 | 2 | 1.0000000 + 10 | 1 | 1.0000000 + 40 | 3 | 1.0000000 + 20 | 1 | 1.0000000 + 30 | 1 | 1.0000000 + 50 | 1 | 1.0000000 + 50 | 2 | 1.0000000 + 30 | 1 | 1.0000000 + 30 | 3 | 1.0000000 + 30 | 3 | 1.0000000 + 40 | 4 | 1.0000000 + 40 | 4 | 1.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn/ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between unbounded preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 2,3->4; 2,3->5; 2,3->6; 2,3->7; 2,3->8; + qty | cn | vn | to_char | to_char | to_char | to_char | to_char +------+----+----+-------------------+-------------------+-------------------+-------------------+------------------- + 1100 | 2 | 40 | 40.0000000 | .0000000 | 4.0000000 | 40.0000000 | 2.0000000 + 1 | 1 | 10 | 40.0000000 | .0000000 | 4.0000000 | 40.0000000 | 2.0000000 + 1 | 3 | 40 | 40.0000000 | .0000000 | 4.0000000 | 40.0000000 | 2.0000000 + 1 | 1 | 20 | 40.0000000 | .0000000 | 4.0000000 | 40.0000000 | 2.0000000 + 1 | 1 | 30 | 40.0000000 | .0000000 | 4.0000000 | 40.0000000 | 2.0000000 + 1 | 1 | 50 | 40.0000000 | .0000000 | 4.0000000 | 40.0000000 | 2.0000000 + 1 | 2 | 50 | 40.0000000 | .0000000 | 4.0000000 | 40.0000000 | 2.0000000 + 12 | 1 | 30 | 40.0000000 | .0000000 | 4.0000000 | 40.0000000 | 2.0000000 + 12 | 3 | 30 | 40.0000000 | .0000000 | 4.0000000 | 40.0000000 | 2.0000000 + 12 | 3 | 30 | 40.0000000 | .0000000 | 4.0000000 | 40.0000000 | 2.0000000 + 1 | 4 | 40 | 40.0000000 | .0000000 | 4.0000000 | 40.0000000 | 2.0000000 + 1 | 4 | 40 | 40.0000000 | .0000000 | 4.0000000 | 40.0000000 | 2.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn asc rows between floor(ow_sale.cn+ow_sale.cn) preceding and 9 preceding ); -- mvd 1,3->2; + cn | to_char | pn +----+-------------------+----- + 2 | .0000000 | 100 + 1 | .0000000 | 200 + 3 | .0000000 | 200 + 1 | .0000000 | 100 + 1 | .0000000 | 300 + 1 | .0000000 | 400 + 2 | .0000000 | 400 + 1 | .0000000 | 500 + 3 | .0000000 | 500 + 3 | .0000000 | 600 + 4 | .0000000 | 700 + 4 | .0000000 | 800 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between 0 preceding and 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between 0 preceding and 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between 0 preceding and 1 preceding ); -- mvd 3->4; 3->5; 3->6; 3->7; 3->8; 3->9; + qty | pn | cn | to_char | to_char | to_char | to_char | to_char | to_char +------+-----+----+-------------------+-------------------+-------------------+-------------------+-------------------+------------------- + 1100 | 100 | 2 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 + 1 | 200 | 1 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 + 1 | 200 | 3 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 + 1 | 100 | 1 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 + 1 | 300 | 1 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 + 1 | 400 | 1 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 + 1 | 400 | 2 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 + 12 | 500 | 1 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 + 12 | 500 | 3 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 + 12 | 600 | 3 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 + 1 | 700 | 4 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 + 1 | 800 | 4 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 | .0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between 8 preceding and current row ); -- mvd 2->5; + prc | vn | pn | qty | to_char +------+----+-----+------+------------------- + 2400 | 40 | 100 | 1100 | 42.0000000 + 0 | 10 | 200 | 1 | 11.0000000 + 0 | 40 | 200 | 1 | 43.0000000 + 0 | 20 | 100 | 1 | 21.0000000 + 0 | 30 | 300 | 1 | 31.0000000 + 0 | 50 | 400 | 1 | 51.0000000 + 0 | 50 | 400 | 1 | 52.0000000 + 5 | 30 | 500 | 12 | 31.0000000 + 5 | 30 | 500 | 12 | 33.0000000 + 5 | 30 | 600 | 12 | 33.0000000 + 1 | 40 | 700 | 1 | 44.0000000 + 1 | 40 | 800 | 1 | 44.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between floor(ow_sale.qty) preceding and current row ); -- mvd 2,1->5; 2,1->6; 2,1->7; 2,1->8; + vn | cn | dt | dt | to_char | to_char | to_char | to_char +----+----+------------+------------+-------------------+-------------------+-------------------+------------------- + 40 | 2 | 1401-01-01 | 1401-01-01 | 40.0000000 | 2500.0000000 | 40.0000000 | .0000000 + 10 | 1 | 1401-03-01 | 1401-03-01 | 10.0000000 | 200.0000000 | 40.0000000 | .0000000 + 40 | 3 | 1401-04-01 | 1401-04-01 | 40.0000000 | 200.0000000 | 10.0000000 | .0000000 + 20 | 1 | 1401-05-01 | 1401-05-01 | 20.0000000 | 100.0000000 | 40.0000000 | .0000000 + 30 | 1 | 1401-05-02 | 1401-05-02 | 30.0000000 | 300.0000000 | 20.0000000 | .0000000 + 50 | 1 | 1401-06-01 | 1401-06-01 | 50.0000000 | 400.0000000 | 30.0000000 | .0000000 + 50 | 2 | 1401-06-01 | 1401-06-01 | 50.0000000 | 400.0000000 | 50.0000000 | .0000000 + 30 | 1 | 1401-06-01 | 1401-06-01 | 30.0000000 | 505.0000000 | 40.0000000 | .0000000 + 30 | 3 | 1401-06-01 | 1401-06-01 | 30.0000000 | 505.0000000 | 40.0000000 | .0000000 + 30 | 3 | 1401-06-01 | 1401-06-01 | 30.0000000 | 605.0000000 | 40.0000000 | .0000000 + 40 | 4 | 1401-06-01 | 1401-06-01 | 40.0000000 | 701.0000000 | 30.0000000 | .0000000 + 40 | 4 | 1401-06-01 | 1401-06-01 | 40.0000000 | 801.0000000 | 40.0000000 | .0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between floor(ow_sale.qty-ow_sale.pn) preceding and 8 following ); -- mvd 5,6->4; +ERROR: ROWS parameter cannot be negative +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between 2 preceding and floor(ow_sale.prc/ow_sale.cn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between 2 preceding and floor(ow_sale.prc/ow_sale.cn) following ); -- mvd 4->3; 4->5; + prc | vn | to_char | cn | to_char +------+----+-------------------+----+------------------- + 2400 | 40 | 3200.0000000 | 2 | .0000000 + 0 | 10 | 200.0000000 | 1 | .0000000 + 0 | 40 | 600.0000000 | 3 | .0000000 + 0 | 20 | 100.0000000 | 1 | .0000000 + 0 | 30 | 300.0000000 | 1 | .0000000 + 0 | 50 | 400.0000000 | 1 | .0000000 + 0 | 50 | 800.0000000 | 2 | .0000000 + 5 | 30 | 3200.0000000 | 1 | .0000000 + 5 | 30 | 1800.0000000 | 3 | .0000000 + 5 | 30 | 2800.0000000 | 3 | .0000000 + 1 | 40 | 2800.0000000 | 4 | .0000000 + 1 | 40 | 3200.0000000 | 4 | .0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc,ow_sale.vn desc rows between 9 preceding and unbounded following ); -- mvd 6,7,1->5; + pn | pn | pn | qty | to_char | cn | vn +-----+-----+-----+------+-------------------+----+---- + 100 | 100 | 100 | 1100 | 800.0000000 | 2 | 40 + 200 | 200 | 200 | 1 | 800.0000000 | 1 | 10 + 200 | 200 | 200 | 1 | 800.0000000 | 3 | 40 + 100 | 100 | 100 | 1 | 800.0000000 | 1 | 20 + 300 | 300 | 300 | 1 | 800.0000000 | 1 | 30 + 400 | 400 | 400 | 1 | 800.0000000 | 1 | 50 + 400 | 400 | 400 | 1 | 800.0000000 | 2 | 50 + 500 | 500 | 500 | 12 | 800.0000000 | 1 | 30 + 500 | 500 | 500 | 12 | 800.0000000 | 3 | 30 + 600 | 600 | 600 | 12 | 800.0000000 | 3 | 30 + 700 | 700 | 700 | 1 | 800.0000000 | 4 | 40 + 800 | 800 | 800 | 1 | 800.0000000 | 4 | 40 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn-ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.cn desc rows between floor(ow_sale.prc) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.cn desc rows between floor(ow_sale.prc) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.cn desc rows between floor(ow_sale.prc) preceding and unbounded following ); -- mvd 3,5->4; 3,5->6; 3,5->7; 3,5->8; + prc | qty | cn | to_char | vn | to_char | to_char | to_char +------+------+----+-------------------+----+-------------------+-------------------+------------------- + 2400 | 1100 | 2 | 1.0000000 | 40 | 39.0000000 | 800.0000000 | 40.0000000 + 0 | 1 | 1 | 1.0000000 | 10 | 39.0000000 | 800.0000000 | 40.0000000 + 0 | 1 | 3 | 1.0000000 | 40 | 39.0000000 | 800.0000000 | 40.0000000 + 0 | 1 | 1 | 1.0000000 | 20 | 39.0000000 | 800.0000000 | 40.0000000 + 0 | 1 | 1 | 1.0000000 | 30 | 39.0000000 | 800.0000000 | 40.0000000 + 0 | 1 | 1 | 1.0000000 | 50 | 39.0000000 | 800.0000000 | 40.0000000 + 0 | 1 | 2 | 1.0000000 | 50 | 39.0000000 | 800.0000000 | 40.0000000 + 5 | 12 | 1 | 1.0000000 | 30 | 39.0000000 | 800.0000000 | 40.0000000 + 5 | 12 | 3 | 1.0000000 | 30 | 39.0000000 | 800.0000000 | 40.0000000 + 5 | 12 | 3 | 1.0000000 | 30 | 39.0000000 | 800.0000000 | 40.0000000 + 1 | 1 | 4 | 1.0000000 | 40 | 39.0000000 | 800.0000000 | 40.0000000 + 1 | 1 | 4 | 1.0000000 | 40 | 39.0000000 | 800.0000000 | 40.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between current row and current row ); -- mvd 3->2; + qty | to_char | cn +------+-------------------+---- + 1100 | 100.0000000 | 2 + 1 | 200.0000000 | 1 + 1 | 200.0000000 | 3 + 1 | 100.0000000 | 1 + 1 | 300.0000000 | 1 + 1 | 400.0000000 | 1 + 1 | 400.0000000 | 2 + 12 | 500.0000000 | 1 + 12 | 500.0000000 | 3 + 12 | 600.0000000 | 3 + 1 | 700.0000000 | 4 + 1 | 800.0000000 | 4 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn asc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc/ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn asc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn asc rows between current row and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn asc rows between current row and current row ); -- mvd 1,5->4; 1,5->6; 1,5->7; 1,5->8; 1,5->9; + cn | qty | qty | to_char | pn | to_char | to_char | to_char | to_char +----+------+------+-------------------+-----+-------------------+-------------------+-------------------+------------------- + 2 | 1100 | 1100 | 2400.0000000 | 100 | 2.0000000 | 40.0000000 | 2.0000000 | 40.0000000 + 1 | 1 | 1 | .0000000 | 200 | 1.0000000 | 10.0000000 | .0000000 | 10.0000000 + 3 | 1 | 1 | .0000000 | 200 | 3.0000000 | 40.0000000 | .0000000 | 40.0000000 + 1 | 1 | 1 | .0000000 | 100 | 1.0000000 | 20.0000000 | .0000000 | 20.0000000 + 1 | 1 | 1 | .0000000 | 300 | 1.0000000 | 30.0000000 | .0000000 | 30.0000000 + 1 | 1 | 1 | .0000000 | 400 | 1.0000000 | 50.0000000 | .0000000 | 50.0000000 + 2 | 1 | 1 | .0000000 | 400 | 2.0000000 | 50.0000000 | .0000000 | 50.0000000 + 1 | 12 | 12 | 5.0000000 | 500 | 1.0000000 | 30.0000000 | .0000000 | 30.0000000 + 3 | 12 | 12 | 5.0000000 | 500 | 3.0000000 | 30.0000000 | .0000000 | 30.0000000 + 3 | 12 | 12 | 5.0000000 | 600 | 3.0000000 | 30.0000000 | .0000000 | 30.0000000 + 4 | 1 | 1 | 1.0000000 | 700 | 4.0000000 | 40.0000000 | 1.0000000 | 40.0000000 + 4 | 1 | 1 | 1.0000000 | 800 | 4.0000000 | 40.0000000 | 1.0000000 | 40.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc rows between current row and floor(ow_sale.pn) following ); -- mvd 6->5; + cn | prc | pn | qty | to_char | vn +----+------+-----+------+-------------------+---- + 2 | 2400 | 100 | 1100 | .0000000 | 40 + 1 | 0 | 200 | 1 | .0000000 | 10 + 3 | 0 | 200 | 1 | .0000000 | 40 + 1 | 0 | 100 | 1 | .0000000 | 20 + 1 | 0 | 300 | 1 | .0000000 | 30 + 1 | 0 | 400 | 1 | .0000000 | 50 + 2 | 0 | 400 | 1 | .0000000 | 50 + 1 | 5 | 500 | 12 | .0000000 | 30 + 3 | 5 | 500 | 12 | .0000000 | 30 + 3 | 5 | 600 | 12 | .0000000 | 30 + 4 | 1 | 700 | 1 | .0000000 | 40 + 4 | 1 | 800 | 1 | .0000000 | 40 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows between current row and 3 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows between current row and 3 following ); -- mvd 2,5->4; 2,5->6; 2,5->7; + prc | vn | vn | to_char | pn | to_char | to_char +------+----+----+-------------------+-----+-------------------+------------------- + 2400 | 40 | 40 | 1.0000000 | 100 | 1.0000000 | -1098.0000000 + 0 | 10 | 10 | 1.0000000 | 200 | 1.0000000 | .0000000 + 0 | 40 | 40 | 1.0000000 | 200 | 1.0000000 | 2.0000000 + 0 | 20 | 20 | 4.0000000 | 100 | 1.0000000 | .0000000 + 0 | 30 | 30 | 1.0000000 | 300 | 12.0000000 | .0000000 + 0 | 50 | 50 | 9.0000000 | 400 | 12.0000000 | .0000000 + 0 | 50 | 50 | 9.0000000 | 400 | 12.0000000 | 1.0000000 + 5 | 30 | 30 | 16.0000000 | 500 | 1.0000000 | -11.0000000 + 5 | 30 | 30 | 16.0000000 | 500 | 1.0000000 | -9.0000000 + 5 | 30 | 30 | 16.0000000 | 600 | 1.0000000 | -9.0000000 + 1 | 40 | 40 | 16.0000000 | 700 | 1.0000000 | 3.0000000 + 1 | 40 | 40 | 16.0000000 | 800 | 1.0000000 | 3.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows between current row and unbounded following ); -- mvd 4->5; + cn | cn | qty | pn | to_char +----+----+------+-----+------------------- + 2 | 2 | 1100 | 100 | 4.0000000 + 1 | 1 | 1 | 200 | 4.0000000 + 3 | 3 | 1 | 200 | 4.0000000 + 1 | 1 | 1 | 100 | 4.0000000 + 1 | 1 | 1 | 300 | 4.0000000 + 1 | 1 | 1 | 400 | 4.0000000 + 2 | 2 | 1 | 400 | 4.0000000 + 1 | 1 | 12 | 500 | 4.0000000 + 3 | 3 | 12 | 500 | 4.0000000 + 3 | 3 | 12 | 600 | 4.0000000 + 4 | 4 | 1 | 700 | 4.0000000 + 4 | 4 | 1 | 800 | 4.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn-ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ); -- mvd 7->6; 7->8; 7->9; 7->10; 7->11; 7->12; + cn | qty | qty | vn | vn | to_char | pn | to_char | to_char | to_char | to_char | to_char +----+------+------+----+----+-------------------+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 2 | 1100 | 1100 | 40 | 40 | 1.0000000 | 100 | 40.0000000 | .0000000 | 4.0000000 | 2200.0000000 | -2398.0000000 + 1 | 1 | 1 | 10 | 10 | 1.0000000 | 200 | 10.0000000 | .0000000 | 4.0000000 | 2.0000000 | 1.0000000 + 3 | 1 | 1 | 40 | 40 | 1.0000000 | 200 | 40.0000000 | .0000000 | 4.0000000 | 2.0000000 | 3.0000000 + 1 | 1 | 1 | 20 | 20 | 1.0000000 | 100 | 20.0000000 | .0000000 | 4.0000000 | 2.0000000 | 1.0000000 + 1 | 1 | 1 | 30 | 30 | 1.0000000 | 300 | 30.0000000 | .0000000 | 4.0000000 | 2.0000000 | 1.0000000 + 1 | 1 | 1 | 50 | 50 | 1.0000000 | 400 | 50.0000000 | .0000000 | 4.0000000 | 2.0000000 | 1.0000000 + 2 | 1 | 1 | 50 | 50 | 1.0000000 | 400 | 50.0000000 | .0000000 | 4.0000000 | 2.0000000 | 2.0000000 + 1 | 12 | 12 | 30 | 30 | 1.0000000 | 500 | 30.0000000 | .0000000 | 4.0000000 | 24.0000000 | -4.0000000 + 3 | 12 | 12 | 30 | 30 | 1.0000000 | 500 | 30.0000000 | .0000000 | 4.0000000 | 24.0000000 | -2.0000000 + 3 | 12 | 12 | 30 | 30 | 1.0000000 | 600 | 30.0000000 | .0000000 | 4.0000000 | 24.0000000 | -2.0000000 + 4 | 1 | 1 | 40 | 40 | 1.0000000 | 700 | 40.0000000 | .0000000 | 4.0000000 | 2.0000000 | 3.0000000 + 4 | 1 | 1 | 40 | 40 | 1.0000000 | 800 | 40.0000000 | .0000000 | 4.0000000 | 2.0000000 | 3.0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.vn desc rows between 4 following and floor(ow_sale.cn/ow_sale.prc) following ); -- mvd 4,5->3; +ERROR: division by zero +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.pn*ow_sale.qty) following and 3 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.pn*ow_sale.qty) following and 3 following ); -- mvd 6->5; 6->7; + qty | pn | dt | pn | to_char | vn | to_char +------+-----+------------+-----+-------------------+----+------------------- + 1100 | 100 | 1401-01-01 | 100 | .0000000 | 40 | .0000000 + 1 | 200 | 1401-03-01 | 200 | .0000000 | 10 | .0000000 + 1 | 200 | 1401-04-01 | 200 | .0000000 | 40 | .0000000 + 1 | 100 | 1401-05-01 | 100 | .0000000 | 20 | .0000000 + 1 | 300 | 1401-05-02 | 300 | .0000000 | 30 | .0000000 + 1 | 400 | 1401-06-01 | 400 | .0000000 | 50 | .0000000 + 1 | 400 | 1401-06-01 | 400 | .0000000 | 50 | .0000000 + 12 | 500 | 1401-06-01 | 500 | .0000000 | 30 | .0000000 + 12 | 500 | 1401-06-01 | 500 | .0000000 | 30 | .0000000 + 12 | 600 | 1401-06-01 | 600 | .0000000 | 30 | .0000000 + 1 | 700 | 1401-06-01 | 700 | .0000000 | 40 | .0000000 + 1 | 800 | 1401-06-01 | 800 | .0000000 | 40 | .0000000 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.vn asc rows between 8 following and unbounded following ); -- mvd 3,6->5; + pn | pn | cn | cn | to_char | vn +-----+-----+----+----+-------------------+---- + 100 | 100 | 2 | 2 | 800.0000000 | 40 + 200 | 200 | 1 | 1 | 800.0000000 | 10 + 200 | 200 | 3 | 3 | 800.0000000 | 40 + 100 | 100 | 1 | 1 | 800.0000000 | 20 + 300 | 300 | 1 | 1 | .0000000 | 30 + 400 | 400 | 1 | 1 | .0000000 | 50 + 400 | 400 | 2 | 2 | .0000000 | 50 + 500 | 500 | 1 | 1 | .0000000 | 30 + 500 | 500 | 3 | 3 | .0000000 | 30 + 600 | 600 | 3 | 3 | .0000000 | 30 + 700 | 700 | 4 | 4 | .0000000 | 40 + 800 | 800 | 4 | 4 | .0000000 | 40 +(12 rows) + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.vn desc rows between 2 following and unbounded following ); -- mvd 4,6->5; 4,6->7; + qty | qty | dt | vn | to_char | pn | to_char +------+------+------------+----+-------------------+-----+------------------- + 1100 | 1100 | 1401-01-01 | 40 | 1.0000000 | 100 | 800.0000000 + 1 | 1 | 1401-03-01 | 10 | 1.0000000 | 200 | 800.0000000 + 1 | 1 | 1401-04-01 | 40 | 1.0000000 | 200 | 800.0000000 + 1 | 1 | 1401-05-01 | 20 | 1.0000000 | 100 | 800.0000000 + 1 | 1 | 1401-05-02 | 30 | 1.0000000 | 300 | 800.0000000 + 1 | 1 | 1401-06-01 | 50 | 1.0000000 | 400 | 800.0000000 + 1 | 1 | 1401-06-01 | 50 | 1.0000000 | 400 | 800.0000000 + 12 | 12 | 1401-06-01 | 30 | 1.0000000 | 500 | 800.0000000 + 12 | 12 | 1401-06-01 | 30 | 1.0000000 | 500 | 800.0000000 + 12 | 12 | 1401-06-01 | 30 | 1.0000000 | 600 | 800.0000000 + 1 | 1 | 1401-06-01 | 40 | .0000000 | 700 | .0000000 + 1 | 1 | 1401-06-01 | 40 | .0000000 | 800 | .0000000 +(12 rows) + +-- LAST_VALUE() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc); -- mvd 7,8,5->6; + qty | qty | qty | qty | pn | to_char | cn | vn +------+------+------+------+-----+-------------------+----+---- + 1 | 1 | 1 | 1 | 200 | .0000000 | 1 | 10 + 1 | 1 | 1 | 1 | 100 | .0000000 | 1 | 20 + 12 | 12 | 12 | 12 | 600 | 5.0000000 | 3 | 30 + 1 | 1 | 1 | 1 | 200 | .0000000 | 3 | 40 + 1 | 1 | 1 | 1 | 800 | 1.0000000 | 4 | 40 + 1 | 1 | 1 | 1 | 400 | .0000000 | 2 | 50 + 1 | 1 | 1 | 1 | 300 | .0000000 | 1 | 30 + 12 | 12 | 12 | 12 | 500 | 5.0000000 | 1 | 30 + 12 | 12 | 12 | 12 | 500 | 5.0000000 | 3 | 30 + 1100 | 1100 | 1100 | 1100 | 100 | 2400.0000000 | 2 | 40 + 1 | 1 | 1 | 1 | 700 | 1.0000000 | 4 | 40 + 1 | 1 | 1 | 1 | 400 | .0000000 | 1 | 50 +(12 rows) + +-- LAST_VALUE() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.qty +, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(partition by ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(partition by ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc); -- mvd 5,6,3,7->4; 5,6,3,7->8; 5,6,3,7->9; 5,6,3,7->10; 5,6,3,7->11; 5,6,3,7->12; + pn | pn | vn | to_char | prc | cn | qty | to_char | to_char | to_char | to_char | to_char +-----+-----+----+-------------------+------+----+------+-------------------+-------------------+-------------------+-------------------+------------------- + 700 | 700 | 40 | 40.0000000 | 1 | 4 | 1 | 4.0000000 | 160.0000000 | 5.0000000 | 700.0000000 | 4.0000000 + 800 | 800 | 40 | 40.0000000 | 1 | 4 | 1 | 4.0000000 | 160.0000000 | 5.0000000 | 700.0000000 | 4.0000000 + 500 | 500 | 30 | 30.0000000 | 5 | 1 | 12 | 1.0000000 | 30.0000000 | 13.0000000 | 500.0000000 | 1.0000000 + 500 | 500 | 30 | 30.0000000 | 5 | 3 | 12 | 1.0000000 | 90.0000000 | 13.0000000 | 500.0000000 | 1.0000000 + 600 | 600 | 30 | 30.0000000 | 5 | 3 | 12 | 1.0000000 | 90.0000000 | 13.0000000 | 500.0000000 | 1.0000000 + 100 | 100 | 40 | 40.0000000 | 2400 | 2 | 1100 | 2.0000000 | 80.0000000 | 1102.0000000 | 100.0000000 | 2.0000000 + 200 | 200 | 10 | 10.0000000 | 0 | 1 | 1 | 1.0000000 | 10.0000000 | 2.0000000 | 200.0000000 | 1.0000000 + 200 | 200 | 40 | 40.0000000 | 0 | 3 | 1 | 1.0000000 | 120.0000000 | 2.0000000 | 200.0000000 | 1.0000000 + 100 | 100 | 20 | 20.0000000 | 0 | 1 | 1 | 1.0000000 | 20.0000000 | 2.0000000 | 200.0000000 | 1.0000000 + 300 | 300 | 30 | 30.0000000 | 0 | 1 | 1 | 1.0000000 | 30.0000000 | 2.0000000 | 200.0000000 | 1.0000000 + 400 | 400 | 50 | 50.0000000 | 0 | 1 | 1 | 1.0000000 | 50.0000000 | 2.0000000 | 200.0000000 | 1.0000000 + 400 | 400 | 50 | 50.0000000 | 0 | 2 | 1 | 1.0000000 | 100.0000000 | 2.0000000 | 200.0000000 | 1.0000000 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc range unbounded preceding ); -- mvd 6,2,7->5; + qty | cn | dt | qty | to_char | prc | pn +------+----+------------+------+-------------------+------+----- + 1 | 1 | 1401-05-02 | 1 | 30.0000000 | 0 | 300 + 1 | 1 | 1401-06-01 | 1 | 50.0000000 | 0 | 400 + 1 | 2 | 1401-06-01 | 1 | 50.0000000 | 0 | 400 + 12 | 1 | 1401-06-01 | 12 | 30.0000000 | 5 | 500 + 12 | 3 | 1401-06-01 | 12 | 30.0000000 | 5 | 500 + 1 | 4 | 1401-06-01 | 1 | 40.0000000 | 1 | 700 + 1 | 1 | 1401-05-01 | 1 | 20.0000000 | 0 | 100 + 1100 | 2 | 1401-01-01 | 1100 | 40.0000000 | 2400 | 100 + 1 | 1 | 1401-03-01 | 1 | 10.0000000 | 0 | 200 + 1 | 3 | 1401-04-01 | 1 | 40.0000000 | 0 | 200 + 12 | 3 | 1401-06-01 | 12 | 30.0000000 | 5 | 600 + 1 | 4 | 1401-06-01 | 1 | 40.0000000 | 1 | 800 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(partition by ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc range unbounded preceding ); -- mvd 4,5,2,6->3; 4,5,2,6->7; 4,5,2,6->8; 4,5,2,6->9; 4,5,2,6->10; 4,5,2,6->11; + prc | qty | to_char | cn | vn | pn | to_char | to_char | to_char | to_char | to_char +------+------+-------------------+----+----+-----+-------------------+-------------------+-------------------+-------------------+------------------- + 0 | 1 | 1.0000000 | 1 | 30 | 300 | 1.0000000 | 300.0000000 | 1.0000000 | .0000000 | 1.0000000 + 1 | 1 | 4.0000000 | 4 | 40 | 700 | 2.0000000 | 700.0000000 | 4.0000000 | 1.0000000 | 4.0000000 + 0 | 1 | 1.0000000 | 1 | 50 | 400 | 1.0000000 | 400.0000000 | 1.0000000 | .0000000 | 1.0000000 + 5 | 12 | 1.0000000 | 1 | 30 | 500 | 17.0000000 | 500.0000000 | 1.0000000 | 5.0000000 | 1.0000000 + 5 | 12 | 3.0000000 | 3 | 30 | 500 | 17.0000000 | 500.0000000 | 3.0000000 | 5.0000000 | 3.0000000 + 2400 | 1100 | 2.0000000 | 2 | 40 | 100 | 3500.0000000 | 100.0000000 | 2.0000000 | 2400.0000000 | 2.0000000 + 0 | 1 | 1.0000000 | 1 | 10 | 200 | 1.0000000 | 200.0000000 | 1.0000000 | .0000000 | 1.0000000 + 0 | 1 | 1.0000000 | 1 | 20 | 100 | 1.0000000 | 100.0000000 | 1.0000000 | .0000000 | 1.0000000 + 0 | 1 | 3.0000000 | 3 | 40 | 200 | 1.0000000 | 200.0000000 | 3.0000000 | .0000000 | 3.0000000 + 1 | 1 | 4.0000000 | 4 | 40 | 800 | 2.0000000 | 800.0000000 | 4.0000000 | 1.0000000 | 4.0000000 + 0 | 1 | 2.0000000 | 2 | 50 | 400 | 1.0000000 | 400.0000000 | 2.0000000 | .0000000 | 2.0000000 + 5 | 12 | 3.0000000 | 3 | 30 | 600 | 17.0000000 | 600.0000000 | 3.0000000 | 5.0000000 | 3.0000000 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc range floor(ow_sale.vn) preceding ); -- mvd 1,4->3; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn order by ... + ^ +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn/ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn/ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc range floor(ow_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc+ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc range floor(ow_sale.pn) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc range floor(ow_sale.pn) preceding ); -- mvd 3,4,5,6->2; 3,4,5,6->7; 3,4,5,6->8; 3,4,5,6->9; 3,4,5,6->10; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 7: WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.d... + ^ +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn asc range current row ); -- mvd 5,6->4; + vn | pn | prc | to_char | cn | dt +----+-----+------+-------------------+----+------------ + 40 | 100 | 2400 | 1060.0000000 | 2 | 1401-01-01 + 40 | 200 | 0 | -39.0000000 | 3 | 1401-04-01 + 20 | 100 | 0 | -19.0000000 | 1 | 1401-05-01 + 10 | 200 | 0 | -9.0000000 | 1 | 1401-03-01 + 30 | 300 | 0 | -29.0000000 | 1 | 1401-05-02 + 50 | 400 | 0 | -49.0000000 | 1 | 1401-06-01 + 50 | 400 | 0 | -49.0000000 | 2 | 1401-06-01 + 30 | 500 | 5 | -18.0000000 | 1 | 1401-06-01 + 30 | 500 | 5 | -18.0000000 | 3 | 1401-06-01 + 30 | 600 | 5 | -18.0000000 | 3 | 1401-06-01 + 40 | 700 | 1 | -39.0000000 | 4 | 1401-06-01 + 40 | 800 | 1 | -39.0000000 | 4 | 1401-06-01 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn asc range current row ); -- mvd 1,3->5; 1,3->6; 1,3->7; + cn | pn | vn | vn | to_char | to_char | to_char +----+-----+----+----+-------------------+-------------------+------------------- + 1 | 200 | 10 | 10 | 1.0000000 | -1.0000000 | 1.0000000 + 1 | 100 | 20 | 20 | 1.0000000 | -1.0000000 | 1.0000000 + 1 | 300 | 30 | 30 | 1.0000000 | -1.0000000 | 1.0000000 + 1 | 500 | 30 | 30 | 1.0000000 | 4.0000000 | 1.0000000 + 3 | 500 | 30 | 30 | 3.0000000 | 2.0000000 | 3.0000000 + 3 | 600 | 30 | 30 | 3.0000000 | 2.0000000 | 3.0000000 + 2 | 100 | 40 | 40 | 2.0000000 | 2398.0000000 | 2.0000000 + 3 | 200 | 40 | 40 | 3.0000000 | -3.0000000 | 3.0000000 + 4 | 700 | 40 | 40 | 4.0000000 | -3.0000000 | 4.0000000 + 4 | 800 | 40 | 40 | 4.0000000 | -3.0000000 | 4.0000000 + 1 | 400 | 50 | 50 | 1.0000000 | -1.0000000 | 1.0000000 + 2 | 400 | 50 | 50 | 2.0000000 | -2.0000000 | 2.0000000 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and 0 preceding ); -- mvd 7,3->6; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (partition by ow_sale.qty order by ow_sale.or... + ^ +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn/ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and floor(ow_sale.prc) preceding ); -- mvd 4,5->3; 4,5->6; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 4: WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn order by ... + ^ +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and current row ); -- mvd 4,2,5->3; + vn | dt | to_char | cn | pn +----+------------+-------------------+----+----- + 10 | 1401-03-01 | 1.0000000 | 1 | 200 + 30 | 1401-06-01 | 12.0000000 | 3 | 600 + 40 | 1401-06-01 | 1.0000000 | 4 | 700 + 40 | 1401-01-01 | 1100.0000000 | 2 | 100 + 20 | 1401-05-01 | 1.0000000 | 1 | 100 + 40 | 1401-04-01 | 1.0000000 | 3 | 200 + 30 | 1401-05-02 | 1.0000000 | 1 | 300 + 50 | 1401-06-01 | 1.0000000 | 1 | 400 + 50 | 1401-06-01 | 1.0000000 | 2 | 400 + 30 | 1401-06-01 | 12.0000000 | 1 | 500 + 30 | 1401-06-01 | 12.0000000 | 3 | 500 + 40 | 1401-06-01 | 1.0000000 | 4 | 800 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(partition by ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn-ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and current row ); -- mvd 2,7,1,5->6; 2,7,1,5->8; 2,7,1,5->9; 2,7,1,5->10; 2,7,1,5->11; 2,7,1,5->12; + cn | prc | cn | pn | vn | to_char | dt | to_char | to_char | to_char | to_char | to_char +----+------+----+-----+----+-------------------+------------+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | 0 | 1 | 200 | 10 | 1.0000000 | 1401-03-01 | 1.0000000 | .0000000 | 1.0000000 | .0000000 | 200.0000000 + 1 | 0 | 1 | 300 | 30 | 1.0000000 | 1401-05-02 | 1.0000000 | .0000000 | 1.0000000 | .0000000 | 300.0000000 + 1 | 0 | 1 | 400 | 50 | 1.0000000 | 1401-06-01 | 1.0000000 | .0000000 | 1.0000000 | .0000000 | 400.0000000 + 1 | 5 | 1 | 500 | 30 | 12.0000000 | 1401-06-01 | 1.0000000 | 5.0000000 | 1.0000000 | .0000000 | 500.0000000 + 2 | 2400 | 2 | 100 | 40 | 1100.0000000 | 1401-01-01 | 2.0000000 | 2400.0000000 | 2.0000000 | .0000000 | 100.0000000 + 3 | 5 | 3 | 500 | 30 | 12.0000000 | 1401-06-01 | 3.0000000 | 5.0000000 | 3.0000000 | .0000000 | 500.0000000 + 3 | 5 | 3 | 600 | 30 | 12.0000000 | 1401-06-01 | 3.0000000 | 5.0000000 | 3.0000000 | .0000000 | 500.0000000 + 4 | 1 | 4 | 700 | 40 | 1.0000000 | 1401-06-01 | 4.0000000 | 1.0000000 | 4.0000000 | .0000000 | 700.0000000 + 4 | 1 | 4 | 800 | 40 | 1.0000000 | 1401-06-01 | 4.0000000 | 1.0000000 | 4.0000000 | .0000000 | 700.0000000 + 1 | 0 | 1 | 100 | 20 | 1.0000000 | 1401-05-01 | 1.0000000 | .0000000 | 1.0000000 | .0000000 | 100.0000000 + 2 | 0 | 2 | 400 | 50 | 1.0000000 | 1401-06-01 | 2.0000000 | .0000000 | 2.0000000 | .0000000 | 400.0000000 + 3 | 0 | 3 | 200 | 40 | 1.0000000 | 1401-04-01 | 3.0000000 | .0000000 | 3.0000000 | .0000000 | 200.0000000 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc range between unbounded preceding and floor(ow_sale.prc) following ); -- mvd 4,5->3; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ... + ^ +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc range between unbounded preceding and floor(ow_sale.cn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc range between unbounded preceding and floor(ow_sale.cn) following ); -- mvd 8,6,1->7; 8,6,1->9; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 4: WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.v... + ^ +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc range between unbounded preceding and unbounded following ); -- mvd 5,2,6->4; + vn | qty | vn | to_char | dt | pn +----+------+----+-------------------+------------+----- + 40 | 1 | 40 | 3.0000000 | 1401-04-01 | 200 + 20 | 1 | 20 | 1.0000000 | 1401-05-01 | 100 + 30 | 12 | 30 | 3.0000000 | 1401-06-01 | 500 + 30 | 12 | 30 | 3.0000000 | 1401-06-01 | 500 + 30 | 12 | 30 | 3.0000000 | 1401-06-01 | 600 + 40 | 1100 | 40 | 2.0000000 | 1401-01-01 | 100 + 10 | 1 | 10 | 1.0000000 | 1401-03-01 | 200 + 30 | 1 | 30 | 1.0000000 | 1401-05-02 | 300 + 50 | 1 | 50 | 4.0000000 | 1401-06-01 | 400 + 50 | 1 | 50 | 4.0000000 | 1401-06-01 | 400 + 40 | 1 | 40 | 4.0000000 | 1401-06-01 | 700 + 40 | 1 | 40 | 4.0000000 | 1401-06-01 | 800 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(partition by ow_sale.prc,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(partition by ow_sale.prc,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 7,8,3->6; 7,8,3->9; 7,8,3->10; 7,8,3->11; 7,8,3->12; + pn | cn | qty | pn | qty | to_char | prc | vn | to_char | to_char | to_char | to_char +-----+----+------+-----+------+-------------------+------+----+-------------------+-------------------+-------------------+------------------- + 700 | 4 | 1 | 700 | 1 | 800.0000000 | 1 | 40 | 4.0000000 | 1.0000000 | 1.0000000 | 3.0000000 + 800 | 4 | 1 | 800 | 1 | 800.0000000 | 1 | 40 | 4.0000000 | 1.0000000 | 1.0000000 | 3.0000000 + 500 | 1 | 12 | 500 | 12 | 600.0000000 | 5 | 30 | 3.0000000 | 5.0000000 | 12.0000000 | -2.0000000 + 500 | 3 | 12 | 500 | 12 | 600.0000000 | 5 | 30 | 3.0000000 | 5.0000000 | 12.0000000 | -2.0000000 + 600 | 3 | 12 | 600 | 12 | 600.0000000 | 5 | 30 | 3.0000000 | 5.0000000 | 12.0000000 | -2.0000000 + 100 | 2 | 1100 | 100 | 1100 | 100.0000000 | 2400 | 40 | 2.0000000 | 2400.0000000 | 1100.0000000 | -2398.0000000 + 200 | 1 | 1 | 200 | 1 | 400.0000000 | 0 | 10 | 2.0000000 | .0000000 | 1.0000000 | 2.0000000 + 200 | 3 | 1 | 200 | 1 | 400.0000000 | 0 | 40 | 2.0000000 | .0000000 | 1.0000000 | 2.0000000 + 100 | 1 | 1 | 100 | 1 | 400.0000000 | 0 | 20 | 2.0000000 | .0000000 | 1.0000000 | 2.0000000 + 300 | 1 | 1 | 300 | 1 | 400.0000000 | 0 | 30 | 2.0000000 | .0000000 | 1.0000000 | 2.0000000 + 400 | 1 | 1 | 400 | 1 | 400.0000000 | 0 | 50 | 2.0000000 | .0000000 | 1.0000000 | 2.0000000 + 400 | 2 | 1 | 400 | 1 | 400.0000000 | 0 | 50 | 2.0000000 | .0000000 | 1.0000000 | 2.0000000 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn asc range between floor(ow_sale.cn) preceding and floor(ow_sale.prc+ow_sale.pn) preceding ); -- mvd 5,3->4; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord... + ^ +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.dt,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc range between 2 preceding and floor(ow_sale.cn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc range between 2 preceding and floor(ow_sale.cn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc range between 2 preceding and floor(ow_sale.cn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc range between 2 preceding and floor(ow_sale.cn) preceding ); -- mvd 5,3,6->4; 5,3,6->7; 5,3,6->8; 5,3,6->9; 5,3,6->10; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 7: WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.... + ^ +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn desc range between floor(ow_sale.cn-ow_sale.qty) preceding and current row ); -- mvd 5,6->4; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord... + ^ +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc range between floor(ow_sale.qty-ow_sale.cn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc*ow_sale.qty)) OVER(partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc range between floor(ow_sale.qty-ow_sale.cn) preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc range between floor(ow_sale.qty-ow_sale.cn) preceding and current row ); -- mvd 3,5,1->4; 3,5,1->6; 3,5,1->7; 3,5,1->8; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 6: WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn order by ... + ^ +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc range between floor(ow_sale.prc+ow_sale.pn) preceding and floor(ow_sale.vn+ow_sale.prc) following ); -- mvd 1,3,4,5->2; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.... + ^ +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc range between 1 preceding and floor(ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc range between 1 preceding and floor(ow_sale.qty) following ); -- mvd 5,6,1->4; 5,6,1->7; 5,6,1->8; 5,6,1->9; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 6: WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.p... + ^ +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.vn asc range between 4 preceding and unbounded following ); -- mvd 2,1->6; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (partition by ow_sale.qty order by ow_sale.or... + ^ +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc range between 4 preceding and unbounded following ); -- mvd 3,1,8,4,5->7; 3,1,8,4,5->9; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 4: WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.... + ^ +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc range between current row and current row ); -- mvd 4,1->5; + cn | qty | vn | dt | to_char +----+------+----+------------+------------------- + 1 | 1 | 20 | 1401-05-01 | 1.0000000 + 2 | 1 | 50 | 1401-06-01 | 2.0000000 + 3 | 1 | 40 | 1401-04-01 | 3.0000000 + 4 | 1 | 40 | 1401-06-01 | 4.0000000 + 4 | 1 | 40 | 1401-06-01 | 4.0000000 + 1 | 1 | 10 | 1401-03-01 | 1.0000000 + 1 | 1 | 30 | 1401-05-02 | 1.0000000 + 1 | 1 | 50 | 1401-06-01 | 1.0000000 + 1 | 12 | 30 | 1401-06-01 | 1.0000000 + 2 | 1100 | 40 | 1401-01-01 | 2.0000000 + 3 | 12 | 30 | 1401-06-01 | 3.0000000 + 3 | 12 | 30 | 1401-06-01 | 3.0000000 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc range between current row and current row ); -- mvd 2,1->3; 2,1->4; 2,1->5; 2,1->6; 2,1->7; 2,1->8; + pn | cn | to_char | to_char | to_char | to_char | to_char | to_char +-----+----+-------------------+-------------------+-------------------+-------------------+-------------------+------------------- + 200 | 1 | 200.0000000 | .0000000 | 1.0000000 | 1.0000000 | 11.0000000 | .0000000 + 100 | 1 | 100.0000000 | .0000000 | 1.0000000 | 1.0000000 | 21.0000000 | .0000000 + 300 | 1 | 300.0000000 | .0000000 | 1.0000000 | 1.0000000 | 31.0000000 | .0000000 + 400 | 1 | 400.0000000 | .0000000 | 1.0000000 | 1.0000000 | 51.0000000 | .0000000 + 500 | 1 | 500.0000000 | 60.0000000 | 1.0000000 | 1.0000000 | 31.0000000 | 5.0000000 + 200 | 3 | 200.0000000 | .0000000 | 3.0000000 | 3.0000000 | 43.0000000 | .0000000 + 500 | 3 | 500.0000000 | 60.0000000 | 3.0000000 | 3.0000000 | 33.0000000 | 5.0000000 + 600 | 3 | 600.0000000 | 60.0000000 | 3.0000000 | 3.0000000 | 33.0000000 | 5.0000000 + 100 | 2 | 100.0000000 | 2640000.0000000 | 2.0000000 | 2.0000000 | 42.0000000 | 2400.0000000 + 400 | 2 | 400.0000000 | .0000000 | 2.0000000 | 2.0000000 | 52.0000000 | .0000000 + 700 | 4 | 700.0000000 | 1.0000000 | 4.0000000 | 4.0000000 | 44.0000000 | 1.0000000 + 800 | 4 | 800.0000000 | 1.0000000 | 4.0000000 | 4.0000000 | 44.0000000 | 1.0000000 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc range between current row and floor(ow_sale.cn) following ); -- mvd 4,1->3; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn order by... + ^ +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc range between current row and floor(ow_sale.pn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc range between current row and floor(ow_sale.pn) following ); -- mvd 5,6,2->4; 5,6,2->7; 5,6,2->8; 5,6,2->9; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 6: WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ... + ^ +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc range between current row and unbounded following ); -- mvd 4->6; + vn | vn | pn | cn | qty | to_char +----+----+-----+----+------+------------------- + 10 | 10 | 200 | 1 | 1 | 500.0000000 + 20 | 20 | 100 | 1 | 1 | 500.0000000 + 30 | 30 | 300 | 1 | 1 | 500.0000000 + 50 | 50 | 400 | 1 | 1 | 500.0000000 + 30 | 30 | 500 | 1 | 12 | 500.0000000 + 40 | 40 | 200 | 3 | 1 | 600.0000000 + 30 | 30 | 500 | 3 | 12 | 600.0000000 + 30 | 30 | 600 | 3 | 12 | 600.0000000 + 40 | 40 | 100 | 2 | 1100 | 400.0000000 + 50 | 50 | 400 | 2 | 1 | 400.0000000 + 40 | 40 | 700 | 4 | 1 | 800.0000000 + 40 | 40 | 800 | 4 | 1 | 800.0000000 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc range between current row and unbounded following ); -- mvd 6,1,7->5; 6,1,7->8; + cn | cn | pn | pn | to_char | prc | qty | to_char +----+----+-----+-----+-------------------+------+------+------------------- + 2 | 2 | 400 | 400 | 1.0000000 | 0 | 1 | 2.0000000 + 1 | 1 | 500 | 500 | 12.0000000 | 5 | 12 | 6.0000000 + 3 | 3 | 500 | 500 | 12.0000000 | 5 | 12 | 8.0000000 + 3 | 3 | 600 | 600 | 12.0000000 | 5 | 12 | 8.0000000 + 1 | 1 | 200 | 200 | 1.0000000 | 0 | 1 | 1.0000000 + 1 | 1 | 100 | 100 | 1.0000000 | 0 | 1 | 1.0000000 + 1 | 1 | 300 | 300 | 1.0000000 | 0 | 1 | 1.0000000 + 1 | 1 | 400 | 400 | 1.0000000 | 0 | 1 | 1.0000000 + 3 | 3 | 200 | 200 | 1.0000000 | 0 | 1 | 3.0000000 + 4 | 4 | 700 | 700 | 1.0000000 | 1 | 1 | 5.0000000 + 4 | 4 | 800 | 800 | 1.0000000 | 1 | 1 | 5.0000000 + 2 | 2 | 100 | 100 | 1100.0000000 | 2400 | 1100 | 2402.0000000 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc range between floor(ow_sale.cn) following and 4 following ); -- mvd 3,1,4->2; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.d... + ^ +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc range between floor(ow_sale.vn/ow_sale.pn) following and 1 following ); -- mvd 2,1,4->3; 2,1,4->5; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 4: WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc order b... + ^ +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc range between 1 following and unbounded following ); -- mvd 4,5,2->3; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 3: WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc order by... + ^ +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- +SELECT ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn asc range between floor(ow_sale.pn-ow_sale.pn) following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn asc range between floor(ow_sale.pn-ow_sale.pn) following and unbounded following ); -- mvd 1,3->2; 1,3->4; 1,3->5; 1,3->6; 1,3->7; 1,3->8; +ERROR: only one ORDER BY column may be specified when RANGE is used in a window specification +LINE 8: WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord... + ^ +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows unbounded preceding ); -- mvd 5,1,2->4; + vn | pn | vn | to_char | dt +----+-----+----+-------------------+------------ + 10 | 200 | 10 | .0000000 | 1401-03-01 + 30 | 300 | 30 | .0000000 | 1401-05-02 + 30 | 500 | 30 | 5.0000000 | 1401-06-01 + 30 | 500 | 30 | 5.0000000 | 1401-06-01 + 30 | 600 | 30 | 5.0000000 | 1401-06-01 + 40 | 700 | 40 | 1.0000000 | 1401-06-01 + 40 | 800 | 40 | 1.0000000 | 1401-06-01 + 50 | 400 | 50 | .0000000 | 1401-06-01 + 50 | 400 | 50 | .0000000 | 1401-06-01 + 20 | 100 | 20 | .0000000 | 1401-05-01 + 40 | 100 | 40 | 2400.0000000 | 1401-01-01 + 40 | 200 | 40 | .0000000 | 1401-04-01 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.cn asc rows unbounded preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.cn asc rows unbounded preceding ); -- mvd 4,5,1->3; 4,5,1->6; 4,5,1->7; 4,5,1->8; 4,5,1->9; 4,5,1->10; + pn | qty | to_char | cn | dt | to_char | to_char | to_char | to_char | to_char +-----+------+-------------------+----+------------+-------------------+-------------------+-------------------+-------------------+------------------- + 200 | 1 | 1.0000000 | 1 | 1401-03-01 | 10.0000000 | -9.0000000 | .0000000 | 199.0000000 | .0000000 + 600 | 12 | 3.0000000 | 3 | 1401-06-01 | 35.0000000 | -18.0000000 | 5.0000000 | 588.0000000 | 5.0000000 + 700 | 1 | 4.0000000 | 4 | 1401-06-01 | 41.0000000 | -39.0000000 | 1.0000000 | 699.0000000 | 1.0000000 + 100 | 1100 | 2.0000000 | 2 | 1401-01-01 | 2440.0000000 | 1060.0000000 | 2400.0000000 | -1000.0000000 | 2400.0000000 + 200 | 1 | 3.0000000 | 3 | 1401-04-01 | 40.0000000 | -39.0000000 | .0000000 | 199.0000000 | .0000000 + 100 | 1 | 1.0000000 | 1 | 1401-05-01 | 20.0000000 | -19.0000000 | .0000000 | 99.0000000 | .0000000 + 300 | 1 | 1.0000000 | 1 | 1401-05-02 | 30.0000000 | -29.0000000 | .0000000 | 299.0000000 | .0000000 + 400 | 1 | 1.0000000 | 1 | 1401-06-01 | 50.0000000 | -49.0000000 | .0000000 | 399.0000000 | .0000000 + 400 | 1 | 2.0000000 | 2 | 1401-06-01 | 50.0000000 | -49.0000000 | .0000000 | 399.0000000 | .0000000 + 500 | 12 | 1.0000000 | 1 | 1401-06-01 | 35.0000000 | -18.0000000 | 5.0000000 | 488.0000000 | 5.0000000 + 500 | 12 | 3.0000000 | 3 | 1401-06-01 | 35.0000000 | -18.0000000 | 5.0000000 | 488.0000000 | 5.0000000 + 800 | 1 | 4.0000000 | 4 | 1401-06-01 | 41.0000000 | -39.0000000 | 1.0000000 | 799.0000000 | 1.0000000 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows 5 preceding ); -- mvd 5,6,7,3->4; + qty | prc | pn | to_char | cn | dt | vn +------+------+-----+-------------------+----+------------+---- + 1 | 0 | 200 | .0000000 | 1 | 1401-03-01 | 10 + 12 | 5 | 600 | .0000000 | 3 | 1401-06-01 | 30 + 1 | 1 | 700 | .0000000 | 4 | 1401-06-01 | 40 + 1 | 0 | 100 | .0000000 | 1 | 1401-05-01 | 20 + 1 | 0 | 300 | .0000000 | 1 | 1401-05-02 | 30 + 12 | 5 | 500 | .0000000 | 1 | 1401-06-01 | 30 + 12 | 5 | 500 | .0000000 | 3 | 1401-06-01 | 30 + 1100 | 2400 | 100 | .0000000 | 2 | 1401-01-01 | 40 + 1 | 0 | 200 | .0000000 | 3 | 1401-04-01 | 40 + 1 | 1 | 800 | .0000000 | 4 | 1401-06-01 | 40 + 1 | 0 | 400 | .0000000 | 1 | 1401-06-01 | 50 + 1 | 0 | 400 | .0000000 | 2 | 1401-06-01 | 50 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty*ow_sale.qty)) OVER(partition by ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows 2 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows 2 preceding ); -- mvd 8,3,5->7; 8,3,5->9; 8,3,5->10; 8,3,5->11; + qty | vn | cn | cn | pn | pn | to_char | prc | to_char | to_char | to_char +------+----+----+----+-----+-----+-------------------+------+-------------------+-------------------+------------------- + 1 | 30 | 1 | 1 | 300 | 300 | .0000000 | 0 | .0000000 | .0000000 | 1.0000000 + 1 | 50 | 1 | 1 | 400 | 400 | .0000000 | 0 | .0000000 | .0000000 | 1.0000000 + 1 | 50 | 2 | 2 | 400 | 400 | .0000000 | 0 | .0000000 | .0000000 | 1.0000000 + 12 | 30 | 1 | 1 | 500 | 500 | 5.0000000 | 5 | 5.0000000 | 5.0000000 | 144.0000000 + 12 | 30 | 3 | 3 | 500 | 500 | 15.0000000 | 5 | 5.0000000 | 5.0000000 | 144.0000000 + 1 | 40 | 4 | 4 | 700 | 700 | 4.0000000 | 1 | 1.0000000 | 1.0000000 | 1.0000000 + 1 | 20 | 1 | 1 | 100 | 100 | .0000000 | 0 | .0000000 | .0000000 | 1.0000000 + 1100 | 40 | 2 | 2 | 100 | 100 | 4800.0000000 | 2400 | 2400.0000000 | 2400.0000000 | 1210000.0000000 + 1 | 10 | 1 | 1 | 200 | 200 | .0000000 | 0 | .0000000 | .0000000 | 1.0000000 + 1 | 40 | 3 | 3 | 200 | 200 | .0000000 | 0 | .0000000 | .0000000 | 1.0000000 + 12 | 30 | 3 | 3 | 600 | 600 | 15.0000000 | 5 | 5.0000000 | 5.0000000 | 144.0000000 + 1 | 40 | 4 | 4 | 800 | 800 | 4.0000000 | 1 | 1.0000000 | 1.0000000 | 1.0000000 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.cn asc rows current row ); -- mvd 6,7,2,4->5; + qty | vn | prc | pn | to_char | cn | dt +------+----+------+-----+-------------------+----+------------ + 1 | 10 | 0 | 200 | 10.0000000 | 1 | 1401-03-01 + 12 | 30 | 5 | 600 | 90.0000000 | 3 | 1401-06-01 + 1 | 40 | 1 | 700 | 160.0000000 | 4 | 1401-06-01 + 1100 | 40 | 2400 | 100 | 80.0000000 | 2 | 1401-01-01 + 1 | 40 | 0 | 200 | 120.0000000 | 3 | 1401-04-01 + 1 | 20 | 0 | 100 | 20.0000000 | 1 | 1401-05-01 + 1 | 30 | 0 | 300 | 30.0000000 | 1 | 1401-05-02 + 12 | 30 | 5 | 500 | 30.0000000 | 1 | 1401-06-01 + 12 | 30 | 5 | 500 | 90.0000000 | 3 | 1401-06-01 + 1 | 40 | 1 | 800 | 160.0000000 | 4 | 1401-06-01 + 1 | 50 | 0 | 400 | 50.0000000 | 1 | 1401-06-01 + 1 | 50 | 0 | 400 | 100.0000000 | 2 | 1401-06-01 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc rows current row ); -- mvd 2,5->4; 2,5->6; + prc | cn | vn | to_char | dt | to_char +------+----+----+-------------------+------------+------------------- + 0 | 1 | 10 | .0000000 | 1401-03-01 | 10.0000000 + 0 | 1 | 30 | .0000000 | 1401-05-02 | 30.0000000 + 0 | 1 | 50 | .0000000 | 1401-06-01 | 50.0000000 + 0 | 2 | 50 | .0000000 | 1401-06-01 | 50.0000000 + 5 | 1 | 30 | .0000000 | 1401-06-01 | 30.0000000 + 5 | 3 | 30 | .0000000 | 1401-06-01 | 30.0000000 + 5 | 3 | 30 | .0000000 | 1401-06-01 | 30.0000000 + 1 | 4 | 40 | .0000000 | 1401-06-01 | 40.0000000 + 1 | 4 | 40 | .0000000 | 1401-06-01 | 40.0000000 + 2400 | 2 | 40 | .0000000 | 1401-01-01 | 40.0000000 + 0 | 3 | 40 | .0000000 | 1401-04-01 | 40.0000000 + 0 | 1 | 20 | .0000000 | 1401-05-01 | 20.0000000 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and 6 preceding ); -- mvd 1,3->2; + cn | to_char | pn +----+-------------------+----- + 1 | .0000000 | 200 + 1 | .0000000 | 100 + 1 | .0000000 | 300 + 1 | .0000000 | 400 + 1 | .0000000 | 500 + 3 | .0000000 | 200 + 3 | .0000000 | 500 + 3 | .0000000 | 600 + 2 | .0000000 | 100 + 2 | .0000000 | 400 + 4 | .0000000 | 700 + 4 | .0000000 | 800 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and floor(ow_sale.vn) preceding ); -- mvd 6,8->7; 6,8->9; + qty | dt | cn | prc | qty | vn | to_char | pn | to_char +------+------------+----+------+------+----+-------------------+-----+------------------- + 1 | 1401-03-01 | 1 | 0 | 1 | 10 | .0000000 | 200 | .0000000 + 1 | 1401-05-01 | 1 | 0 | 1 | 20 | .0000000 | 100 | .0000000 + 1 | 1401-05-02 | 1 | 0 | 1 | 30 | .0000000 | 300 | .0000000 + 12 | 1401-06-01 | 1 | 5 | 12 | 30 | .0000000 | 500 | .0000000 + 12 | 1401-06-01 | 3 | 5 | 12 | 30 | .0000000 | 500 | .0000000 + 12 | 1401-06-01 | 3 | 5 | 12 | 30 | .0000000 | 600 | .0000000 + 1100 | 1401-01-01 | 2 | 2400 | 1100 | 40 | .0000000 | 100 | .0000000 + 1 | 1401-04-01 | 3 | 0 | 1 | 40 | .0000000 | 200 | .0000000 + 1 | 1401-06-01 | 4 | 1 | 1 | 40 | .0000000 | 700 | .0000000 + 1 | 1401-06-01 | 4 | 1 | 1 | 40 | .0000000 | 800 | .0000000 + 1 | 1401-06-01 | 1 | 0 | 1 | 50 | .0000000 | 400 | .0000000 + 1 | 1401-06-01 | 2 | 0 | 1 | 50 | .0000000 | 400 | .0000000 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and current row ); -- mvd 3,4,1,5->2; + vn | to_char | cn | dt | pn +----+-------------------+----+------------+----- + 10 | 10.0000000 | 1 | 1401-03-01 | 200 + 20 | 20.0000000 | 1 | 1401-05-01 | 100 + 30 | 30.0000000 | 3 | 1401-06-01 | 600 + 40 | 40.0000000 | 3 | 1401-04-01 | 200 + 40 | 40.0000000 | 4 | 1401-06-01 | 800 + 50 | 50.0000000 | 2 | 1401-06-01 | 400 + 30 | 30.0000000 | 1 | 1401-05-02 | 300 + 30 | 30.0000000 | 1 | 1401-06-01 | 500 + 30 | 30.0000000 | 3 | 1401-06-01 | 500 + 40 | 40.0000000 | 2 | 1401-01-01 | 100 + 40 | 40.0000000 | 4 | 1401-06-01 | 700 + 50 | 50.0000000 | 1 | 1401-06-01 | 400 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn/ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(partition by ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between unbounded preceding and current row ); -- mvd 3,6->5; 3,6->7; +ERROR: division by zero (seg0 slice3 localhost:18507 pid=12890) +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between unbounded preceding and 7 following ); -- mvd 5,3,2->7; + qty | pn | vn | dt | cn | qty | to_char +------+-----+----+------------+----+------+------------------- + 1 | 300 | 30 | 1401-05-02 | 1 | 1 | -1.0000000 + 1 | 400 | 50 | 1401-06-01 | 1 | 1 | -2.0000000 + 1 | 400 | 50 | 1401-06-01 | 2 | 1 | -2.0000000 + 12 | 500 | 30 | 1401-06-01 | 1 | 12 | 2.0000000 + 12 | 500 | 30 | 1401-06-01 | 3 | 12 | 2.0000000 + 1 | 800 | 40 | 1401-06-01 | 4 | 1 | -3.0000000 + 1 | 100 | 20 | 1401-05-01 | 1 | 1 | -1.0000000 + 1100 | 100 | 40 | 1401-01-01 | 2 | 1100 | 2398.0000000 + 1 | 200 | 10 | 1401-03-01 | 1 | 1 | -1.0000000 + 1 | 200 | 40 | 1401-04-01 | 3 | 1 | -3.0000000 + 12 | 600 | 30 | 1401-06-01 | 3 | 12 | 2.0000000 + 1 | 700 | 40 | 1401-06-01 | 4 | 1 | -3.0000000 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 0 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 0 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 0 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 0 following ); -- mvd 2,6->5; 2,6->7; 2,6->8; 2,6->9; 2,6->10; + pn | dt | cn | qty | to_char | vn | to_char | to_char | to_char | to_char +-----+------------+----+------+-------------------+----+-------------------+-------------------+-------------------+------------------- + 200 | 1401-03-01 | 1 | 1 | .0000000 | 10 | 1.0000000 | 10.0000000 | 1.0000000 | 11.0000000 + 300 | 1401-05-02 | 1 | 1 | .0000000 | 30 | 1.0000000 | 30.0000000 | 1.0000000 | 31.0000000 + 500 | 1401-06-01 | 1 | 12 | 60.0000000 | 30 | 12.0000000 | 30.0000000 | 1.0000000 | 31.0000000 + 500 | 1401-06-01 | 3 | 12 | 60.0000000 | 30 | 12.0000000 | 30.0000000 | 3.0000000 | 33.0000000 + 600 | 1401-06-01 | 3 | 12 | 60.0000000 | 30 | 12.0000000 | 30.0000000 | 3.0000000 | 33.0000000 + 700 | 1401-06-01 | 4 | 1 | 1.0000000 | 40 | 1.0000000 | 40.0000000 | 4.0000000 | 44.0000000 + 800 | 1401-06-01 | 4 | 1 | 1.0000000 | 40 | 1.0000000 | 40.0000000 | 4.0000000 | 44.0000000 + 400 | 1401-06-01 | 1 | 1 | .0000000 | 50 | 1.0000000 | 50.0000000 | 1.0000000 | 51.0000000 + 400 | 1401-06-01 | 2 | 1 | .0000000 | 50 | 1.0000000 | 50.0000000 | 2.0000000 | 52.0000000 + 100 | 1401-05-01 | 1 | 1 | .0000000 | 20 | 1.0000000 | 20.0000000 | 1.0000000 | 21.0000000 + 100 | 1401-01-01 | 2 | 1100 | 2640000.0000000 | 40 | 1100.0000000 | 40.0000000 | 2.0000000 | 42.0000000 + 200 | 1401-04-01 | 3 | 1 | .0000000 | 40 | 1.0000000 | 40.0000000 | 3.0000000 | 43.0000000 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty/ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 4,2,5,6->3; +ERROR: division by zero (seg0 slice2 localhost:18507 pid=13033) +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty-ow_sale.qty)) OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 1,5,6->4; 1,5,6->7; 1,5,6->8; + cn | vn | cn | to_char | dt | pn | to_char | to_char +----+----+----+-------------------+------------+-----+-------------------+------------------- + 3 | 40 | 3 | .0000000 | 1401-04-01 | 200 | 1.0000000 | .0000000 + 1 | 20 | 1 | .0000000 | 1401-05-01 | 100 | 1.0000000 | .0000000 + 1 | 30 | 1 | .0000000 | 1401-05-02 | 300 | 1.0000000 | .0000000 + 1 | 50 | 1 | .0000000 | 1401-06-01 | 400 | 1.0000000 | .0000000 + 1 | 30 | 1 | 5.0000000 | 1401-06-01 | 500 | 12.0000000 | .0000000 + 3 | 30 | 3 | 5.0000000 | 1401-06-01 | 500 | 12.0000000 | .0000000 + 4 | 40 | 4 | 1.0000000 | 1401-06-01 | 700 | 1.0000000 | .0000000 + 2 | 40 | 2 | 2400.0000000 | 1401-01-01 | 100 | 1100.0000000 | .0000000 + 1 | 10 | 1 | .0000000 | 1401-03-01 | 200 | 1.0000000 | .0000000 + 2 | 50 | 2 | .0000000 | 1401-06-01 | 400 | 1.0000000 | .0000000 + 3 | 30 | 3 | 5.0000000 | 1401-06-01 | 600 | 12.0000000 | .0000000 + 4 | 40 | 4 | 1.0000000 | 1401-06-01 | 800 | 1.0000000 | .0000000 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows between floor(ow_sale.vn+ow_sale.vn) preceding and 3 preceding ); -- mvd 8,3,4,1,9->7; + vn | vn | dt | cn | dt | cn | to_char | prc | pn +----+----+------------+----+------------+----+-------------------+------+----- + 20 | 20 | 1401-05-01 | 1 | 1401-05-01 | 1 | .0000000 | 0 | 100 + 30 | 30 | 1401-05-02 | 1 | 1401-05-02 | 1 | .0000000 | 0 | 300 + 50 | 50 | 1401-06-01 | 1 | 1401-06-01 | 1 | .0000000 | 0 | 400 + 30 | 30 | 1401-06-01 | 1 | 1401-06-01 | 1 | .0000000 | 5 | 500 + 40 | 40 | 1401-04-01 | 3 | 1401-04-01 | 3 | .0000000 | 0 | 200 + 30 | 30 | 1401-06-01 | 3 | 1401-06-01 | 3 | .0000000 | 5 | 500 + 40 | 40 | 1401-06-01 | 4 | 1401-06-01 | 4 | .0000000 | 1 | 800 + 10 | 10 | 1401-03-01 | 1 | 1401-03-01 | 1 | .0000000 | 0 | 200 + 40 | 40 | 1401-01-01 | 2 | 1401-01-01 | 2 | .0000000 | 2400 | 100 + 50 | 50 | 1401-06-01 | 2 | 1401-06-01 | 2 | .0000000 | 0 | 400 + 30 | 30 | 1401-06-01 | 3 | 1401-06-01 | 3 | .0000000 | 5 | 600 + 40 | 40 | 1401-06-01 | 4 | 1401-06-01 | 4 | .0000000 | 1 | 700 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.cn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty/ow_sale.prc)) OVER(partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.cn) preceding and 4 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.cn) preceding and 4 preceding ); -- mvd 1,5,2->4; 1,5,2->6; +ERROR: division by zero (seg0 slice3 localhost:18507 pid=13136) +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between 7 preceding and current row ); -- mvd 3,4->2; + qty | to_char | prc | vn +------+-------------------+------+---- + 1 | 700.0000000 | 1 | 40 + 1 | 800.0000000 | 1 | 40 + 1 | 200.0000000 | 0 | 10 + 1 | 100.0000000 | 0 | 20 + 1 | 300.0000000 | 0 | 30 + 1 | 200.0000000 | 0 | 40 + 1 | 400.0000000 | 0 | 50 + 1 | 400.0000000 | 0 | 50 + 12 | 500.0000000 | 5 | 30 + 12 | 500.0000000 | 5 | 30 + 12 | 600.0000000 | 5 | 30 + 1100 | 100.0000000 | 2400 | 40 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.vn+ow_sale.prc) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.vn+ow_sale.prc) preceding and current row ); -- mvd 2,6->5; 2,6->7; 2,6->8; 2,6->9; 2,6->10; 2,6->11; + pn | cn | dt | pn | to_char | qty | to_char | to_char | to_char | to_char | to_char +-----+----+------------+-----+-------------------+------+-------------------+-------------------+-------------------+-------------------+------------------- + 200 | 1 | 1401-03-01 | 200 | .0000000 | 1 | .0000000 | 200.0000000 | .0000000 | 11.0000000 | 200.0000000 + 200 | 3 | 1401-04-01 | 200 | .0000000 | 1 | .0000000 | 200.0000000 | .0000000 | 11.0000000 | 200.0000000 + 100 | 1 | 1401-05-01 | 100 | .0000000 | 1 | .0000000 | 200.0000000 | .0000000 | 11.0000000 | 200.0000000 + 300 | 1 | 1401-05-02 | 300 | .0000000 | 1 | .0000000 | 200.0000000 | .0000000 | 11.0000000 | 200.0000000 + 400 | 1 | 1401-06-01 | 400 | .0000000 | 1 | .0000000 | 200.0000000 | .0000000 | 11.0000000 | 200.0000000 + 400 | 2 | 1401-06-01 | 400 | .0000000 | 1 | .0000000 | 200.0000000 | .0000000 | 11.0000000 | 200.0000000 + 700 | 4 | 1401-06-01 | 700 | .0000000 | 1 | 1.0000000 | 200.0000000 | .0000000 | 11.0000000 | 200.0000000 + 800 | 4 | 1401-06-01 | 800 | .0000000 | 1 | 1.0000000 | 200.0000000 | .0000000 | 11.0000000 | 200.0000000 + 500 | 1 | 1401-06-01 | 500 | .0000000 | 12 | 5.0000000 | 500.0000000 | 5.0000000 | 42.0000000 | 500.0000000 + 500 | 3 | 1401-06-01 | 500 | .0000000 | 12 | 5.0000000 | 500.0000000 | 5.0000000 | 42.0000000 | 500.0000000 + 600 | 3 | 1401-06-01 | 600 | .0000000 | 12 | 5.0000000 | 500.0000000 | 5.0000000 | 42.0000000 | 500.0000000 + 100 | 2 | 1401-01-01 | 100 | 11.0000000 | 1100 | 2400.0000000 | 100.0000000 | 2400.0000000 | 1140.0000000 | 100.0000000 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc/ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between floor(ow_sale.qty-ow_sale.qty) preceding and 1 following ); -- mvd 3,4,6->5; +ERROR: division by zero (seg0 slice3 localhost:18507 pid=13259) +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.cn desc rows between 1 preceding and 3 following ); -- mvd 3,4,5->2; 3,4,5->6; 3,4,5->7; + prc | to_char | cn | dt | vn | to_char | to_char +------+-------------------+----+------------+----+-------------------+------------------- + 0 | 200.0000000 | 3 | 1401-04-01 | 40 | 37.0000000 | 3.0000000 + 0 | 100.0000000 | 1 | 1401-05-01 | 20 | 19.0000000 | 1.0000000 + 0 | 400.0000000 | 2 | 1401-06-01 | 50 | 48.0000000 | 2.0000000 + 1 | 800.0000000 | 4 | 1401-06-01 | 40 | 36.0000000 | 4.0000000 + 1 | 800.0000000 | 4 | 1401-06-01 | 40 | 36.0000000 | 4.0000000 + 2400 | 100.0000000 | 2 | 1401-01-01 | 40 | 38.0000000 | 2.0000000 + 0 | 200.0000000 | 1 | 1401-03-01 | 10 | 9.0000000 | 1.0000000 + 0 | 300.0000000 | 1 | 1401-05-02 | 30 | 29.0000000 | 1.0000000 + 0 | 500.0000000 | 1 | 1401-06-01 | 50 | 49.0000000 | 1.0000000 + 5 | 500.0000000 | 1 | 1401-06-01 | 30 | 49.0000000 | 1.0000000 + 5 | 600.0000000 | 3 | 1401-06-01 | 30 | 27.0000000 | 3.0000000 + 5 | 600.0000000 | 3 | 1401-06-01 | 30 | 27.0000000 | 3.0000000 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc rows between 1 preceding and unbounded following ); -- mvd 3,4->2; + cn | to_char | dt | pn +----+-------------------+------------+----- + 1 | 10.0000000 | 1401-03-01 | 200 + 3 | 2.0000000 | 1401-06-01 | 600 + 4 | 40.0000000 | 1401-06-01 | 700 + 2 | .0000000 | 1401-01-01 | 100 + 3 | 40.0000000 | 1401-04-01 | 200 + 1 | 20.0000000 | 1401-05-01 | 100 + 1 | 30.0000000 | 1401-05-02 | 300 + 1 | 50.0000000 | 1401-06-01 | 400 + 2 | 50.0000000 | 1401-06-01 | 400 + 1 | 2.0000000 | 1401-06-01 | 500 + 3 | 2.0000000 | 1401-06-01 | 500 + 4 | 40.0000000 | 1401-06-01 | 800 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.vn) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.vn) preceding and unbounded following ); -- mvd 3,4,1,5->2; 3,4,1,5->6; 3,4,1,5->7; 3,4,1,5->8; + vn | to_char | cn | dt | pn | to_char | to_char | to_char +----+-------------------+----+------------+-----+-------------------+-------------------+------------------- + 10 | .0000000 | 1 | 1401-03-01 | 200 | 200.0000000 | 1.0000000 | 10.0000000 + 30 | 5.0000000 | 3 | 1401-06-01 | 600 | 600.0000000 | 3.0000000 | 30.0000000 + 40 | 1.0000000 | 4 | 1401-06-01 | 700 | 700.0000000 | 4.0000000 | 40.0000000 + 20 | .0000000 | 1 | 1401-05-01 | 100 | 100.0000000 | 1.0000000 | 20.0000000 + 40 | 2400.0000000 | 2 | 1401-01-01 | 100 | 100.0000000 | 2.0000000 | 40.0000000 + 40 | .0000000 | 3 | 1401-04-01 | 200 | 200.0000000 | 3.0000000 | 40.0000000 + 30 | .0000000 | 1 | 1401-05-02 | 300 | 300.0000000 | 1.0000000 | 30.0000000 + 50 | .0000000 | 1 | 1401-06-01 | 400 | 400.0000000 | 2.0000000 | 50.0000000 + 50 | .0000000 | 2 | 1401-06-01 | 400 | 400.0000000 | 2.0000000 | 50.0000000 + 30 | 5.0000000 | 1 | 1401-06-01 | 500 | 500.0000000 | 3.0000000 | 30.0000000 + 30 | 5.0000000 | 3 | 1401-06-01 | 500 | 500.0000000 | 3.0000000 | 30.0000000 + 40 | 1.0000000 | 4 | 1401-06-01 | 800 | 800.0000000 | 4.0000000 | 40.0000000 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between current row and current row ); -- mvd 7,3->6; + prc | qty | vn | vn | qty | to_char | dt +------+------+----+----+------+-------------------+------------ + 0 | 1 | 10 | 10 | 1 | 1.0000000 | 1401-03-01 + 0 | 1 | 30 | 30 | 1 | 1.0000000 | 1401-05-02 + 0 | 1 | 50 | 50 | 1 | 1.0000000 | 1401-06-01 + 0 | 1 | 50 | 50 | 1 | 1.0000000 | 1401-06-01 + 5 | 12 | 30 | 30 | 12 | 12.0000000 | 1401-06-01 + 5 | 12 | 30 | 30 | 12 | 12.0000000 | 1401-06-01 + 5 | 12 | 30 | 30 | 12 | 12.0000000 | 1401-06-01 + 1 | 1 | 40 | 40 | 1 | 1.0000000 | 1401-06-01 + 1 | 1 | 40 | 40 | 1 | 1.0000000 | 1401-06-01 + 2400 | 1100 | 40 | 40 | 1100 | 1100.0000000 | 1401-01-01 + 0 | 1 | 40 | 40 | 1 | 1.0000000 | 1401-04-01 + 0 | 1 | 20 | 20 | 1 | 1.0000000 | 1401-05-01 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between current row and current row ); -- mvd 3,1->5; 3,1->6; + pn | cn | vn | qty | to_char | to_char +-----+----+----+------+-------------------+------------------- + 300 | 1 | 30 | 1 | 30.0000000 | 30.0000000 + 400 | 1 | 50 | 1 | 50.0000000 | 50.0000000 + 400 | 2 | 50 | 1 | 50.0000000 | 50.0000000 + 500 | 1 | 30 | 12 | 25.0000000 | 30.0000000 + 500 | 3 | 30 | 12 | 25.0000000 | 30.0000000 + 800 | 4 | 40 | 1 | 39.0000000 | 40.0000000 + 100 | 2 | 40 | 1100 | -2360.0000000 | 40.0000000 + 100 | 1 | 20 | 1 | 20.0000000 | 20.0000000 + 200 | 1 | 10 | 1 | 10.0000000 | 10.0000000 + 200 | 3 | 40 | 1 | 40.0000000 | 40.0000000 + 600 | 3 | 30 | 12 | 25.0000000 | 30.0000000 + 700 | 4 | 40 | 1 | 39.0000000 | 40.0000000 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between current row and floor(ow_sale.pn) following ); -- mvd 6,7,2,8->5; + prc | qty | cn | qty | to_char | dt | vn | pn +------+------+----+------+-------------------+------------+----+----- + 0 | 1 | 1 | 1 | 100.0000000 | 1401-05-01 | 20 | 100 + 0 | 1 | 3 | 1 | 200.0000000 | 1401-04-01 | 40 | 200 + 0 | 1 | 1 | 1 | 300.0000000 | 1401-05-02 | 30 | 300 + 0 | 1 | 1 | 1 | 400.0000000 | 1401-06-01 | 50 | 400 + 0 | 1 | 2 | 1 | 400.0000000 | 1401-06-01 | 50 | 400 + 5 | 12 | 3 | 12 | 605.0000000 | 1401-06-01 | 30 | 600 + 1 | 1 | 4 | 1 | 801.0000000 | 1401-06-01 | 40 | 800 + 2400 | 1100 | 2 | 1100 | 2500.0000000 | 1401-01-01 | 40 | 100 + 0 | 1 | 1 | 1 | 200.0000000 | 1401-03-01 | 10 | 200 + 5 | 12 | 1 | 12 | 505.0000000 | 1401-06-01 | 30 | 500 + 5 | 12 | 3 | 12 | 505.0000000 | 1401-06-01 | 30 | 500 + 1 | 1 | 4 | 1 | 701.0000000 | 1401-06-01 | 40 | 700 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn/ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between current row and 1 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between current row and 1 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn*ow_sale.prc)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between current row and 1 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty-ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between current row and 1 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between current row and 1 following ); -- mvd 5,6,2->4; 5,6,2->7; 5,6,2->8; 5,6,2->9; 5,6,2->10; 5,6,2->11; + qty | vn | vn | to_char | prc | cn | to_char | to_char | to_char | to_char | to_char +------+----+----+-------------------+------+----+-------------------+-------------------+-------------------+-------------------+------------------- + 1 | 10 | 10 | 1.0000000 | 0 | 1 | 10.0000000 | 1.0000000 | 1.0000000 | .0000000 | .0000000 + 1 | 20 | 20 | 1.0000000 | 0 | 1 | 20.0000000 | 1.0000000 | 1.0000000 | .0000000 | .0000000 + 1 | 30 | 30 | 1.0000000 | 0 | 1 | 30.0000000 | 1.0000000 | 1.0000000 | .0000000 | .0000000 + 12 | 30 | 30 | 1.0000000 | 5 | 1 | 2.0000000 | 12.0000000 | 144.0000000 | 5.0000000 | 11.0000000 + 1 | 50 | 50 | 1.0000000 | 0 | 1 | 50.0000000 | 1.0000000 | 1.0000000 | .0000000 | .0000000 + 12 | 30 | 30 | 9.0000000 | 5 | 3 | 2.0000000 | 12.0000000 | 144.0000000 | 15.0000000 | 9.0000000 + 12 | 30 | 30 | 9.0000000 | 5 | 3 | 2.0000000 | 12.0000000 | 144.0000000 | 15.0000000 | 9.0000000 + 1 | 40 | 40 | 9.0000000 | 0 | 3 | 40.0000000 | 1.0000000 | 1.0000000 | .0000000 | -2.0000000 + 1 | 40 | 40 | 16.0000000 | 1 | 4 | 40.0000000 | 1.0000000 | 1.0000000 | 4.0000000 | -3.0000000 + 1 | 40 | 40 | 16.0000000 | 1 | 4 | 40.0000000 | 1.0000000 | 1.0000000 | 4.0000000 | -3.0000000 + 1100 | 40 | 40 | 4.0000000 | 2400 | 2 | .0000000 | 1100.0000000 | 1210000.0000000 | 4800.0000000 | 1098.0000000 + 1 | 50 | 50 | 4.0000000 | 0 | 2 | 50.0000000 | 1.0000000 | 1.0000000 | .0000000 | -1.0000000 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.cn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn desc rows between current row and unbounded following ); -- mvd 1,5,6,7->4; + cn | qty | prc | to_char | dt | vn | pn +----+------+------+-------------------+------------+----+----- + 1 | 1 | 0 | .0000000 | 1401-05-01 | 20 | 100 + 3 | 1 | 0 | .0000000 | 1401-04-01 | 40 | 200 + 4 | 1 | 1 | .0000000 | 1401-06-01 | 40 | 700 + 4 | 1 | 1 | .0000000 | 1401-06-01 | 40 | 800 + 2 | 1 | 0 | .0000000 | 1401-06-01 | 50 | 400 + 1 | 1 | 0 | .0000000 | 1401-03-01 | 10 | 200 + 1 | 1 | 0 | .0000000 | 1401-05-02 | 30 | 300 + 1 | 12 | 5 | .0000000 | 1401-06-01 | 30 | 500 + 3 | 12 | 5 | .0000000 | 1401-06-01 | 30 | 500 + 3 | 12 | 5 | .0000000 | 1401-06-01 | 30 | 600 + 2 | 1100 | 2400 | .0000000 | 1401-01-01 | 40 | 100 + 1 | 1 | 0 | .0000000 | 1401-06-01 | 50 | 400 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ); -- mvd 6,4->5; 6,4->7; 6,4->8; 6,4->9; 6,4->10; + vn | qty | dt | pn | to_char | prc | to_char | to_char | to_char | to_char +----+------+------------+-----+-------------------+------+-------------------+-------------------+-------------------+------------------- + 40 | 1 | 1401-06-01 | 700 | 41.0000000 | 1 | 1.0000000 | 1.0000000 | 701.0000000 | 40.0000000 + 40 | 1 | 1401-06-01 | 800 | 41.0000000 | 1 | 1.0000000 | 1.0000000 | 801.0000000 | 40.0000000 + 10 | 1 | 1401-03-01 | 200 | 51.0000000 | 0 | 1.0000000 | .0000000 | 200.0000000 | .0000000 + 40 | 1 | 1401-04-01 | 200 | 51.0000000 | 0 | 1.0000000 | .0000000 | 200.0000000 | .0000000 + 20 | 1 | 1401-05-01 | 100 | 51.0000000 | 0 | 1.0000000 | .0000000 | 100.0000000 | .0000000 + 30 | 1 | 1401-05-02 | 300 | 51.0000000 | 0 | 1.0000000 | .0000000 | 300.0000000 | .0000000 + 50 | 1 | 1401-06-01 | 400 | 51.0000000 | 0 | 1.0000000 | .0000000 | 400.0000000 | .0000000 + 50 | 1 | 1401-06-01 | 400 | 51.0000000 | 0 | 1.0000000 | .0000000 | 400.0000000 | .0000000 + 30 | 12 | 1401-06-01 | 500 | 42.0000000 | 5 | 12.0000000 | 5.0000000 | 505.0000000 | 150.0000000 + 30 | 12 | 1401-06-01 | 500 | 42.0000000 | 5 | 12.0000000 | 5.0000000 | 505.0000000 | 150.0000000 + 30 | 12 | 1401-06-01 | 600 | 42.0000000 | 5 | 12.0000000 | 5.0000000 | 605.0000000 | 150.0000000 + 40 | 1100 | 1401-01-01 | 100 | 1140.0000000 | 2400 | 1100.0000000 | 2400.0000000 | 2500.0000000 | 96000.0000000 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc rows between 3 following and floor(ow_sale.vn) following ); -- mvd 4,1,2->3; + qty | pn | to_char | vn +------+-----+-------------------+---- + 1 | 200 | 1.0000000 | 10 + 1 | 200 | 1.0000000 | 40 + 1 | 100 | 1.0000000 | 20 + 1 | 300 | 1.0000000 | 30 + 1 | 400 | 1.0000000 | 50 + 1 | 400 | .0000000 | 50 + 1 | 700 | .0000000 | 40 + 1 | 800 | .0000000 | 40 + 12 | 500 | .0000000 | 30 + 12 | 500 | .0000000 | 30 + 12 | 600 | .0000000 | 30 + 1100 | 100 | .0000000 | 40 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc,ow_sale.pn desc rows between floor(ow_sale.pn) following and 0 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc,ow_sale.pn desc rows between floor(ow_sale.pn) following and 0 following ); -- mvd 6,2,3,7->5; 6,2,3,7->8; + dt | qty | vn | qty | to_char | cn | pn | to_char +------------+------+----+------+-------------------+----+-----+------------------- + 1401-03-01 | 1 | 10 | 1 | .0000000 | 1 | 200 | .0000000 + 1401-05-01 | 1 | 20 | 1 | .0000000 | 1 | 100 | .0000000 + 1401-06-01 | 12 | 30 | 12 | .0000000 | 1 | 500 | .0000000 + 1401-06-01 | 12 | 30 | 12 | .0000000 | 3 | 500 | .0000000 + 1401-04-01 | 1 | 40 | 1 | .0000000 | 3 | 200 | .0000000 + 1401-06-01 | 1 | 40 | 1 | .0000000 | 4 | 700 | .0000000 + 1401-05-02 | 1 | 30 | 1 | .0000000 | 1 | 300 | .0000000 + 1401-06-01 | 12 | 30 | 12 | .0000000 | 3 | 600 | .0000000 + 1401-06-01 | 1 | 40 | 1 | .0000000 | 4 | 800 | .0000000 + 1401-01-01 | 1100 | 40 | 1100 | .0000000 | 2 | 100 | .0000000 + 1401-06-01 | 1 | 50 | 1 | .0000000 | 1 | 400 | .0000000 + 1401-06-01 | 1 | 50 | 1 | .0000000 | 2 | 400 | .0000000 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- +SELECT ow_sale.qty,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.qty) following and unbounded following ); -- mvd 5,6->4; + qty | vn | prc | to_char | cn | dt +------+----+------+-------------------+----+------------ + 1 | 40 | 0 | .0000000 | 3 | 1401-04-01 + 1 | 20 | 0 | .0000000 | 1 | 1401-05-01 + 1 | 50 | 0 | .0000000 | 2 | 1401-06-01 + 1 | 40 | 1 | 800.0000000 | 4 | 1401-06-01 + 1 | 40 | 1 | .0000000 | 4 | 1401-06-01 + 1100 | 40 | 2400 | .0000000 | 2 | 1401-01-01 + 1 | 10 | 0 | .0000000 | 1 | 1401-03-01 + 1 | 30 | 0 | .0000000 | 1 | 1401-05-02 + 1 | 50 | 0 | 500.0000000 | 1 | 1401-06-01 + 12 | 30 | 5 | .0000000 | 1 | 1401-06-01 + 12 | 30 | 5 | .0000000 | 3 | 1401-06-01 + 12 | 30 | 5 | .0000000 | 3 | 1401-06-01 +(12 rows) + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc/ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc,ow_sale.cn desc rows between 3 following and unbounded following ); +ERROR: division by zero (seg0 slice5 localhost:18507 pid=13772) +select ntile(3) over (order by cn) from ow_sale; + ntile +------- + 1 + 1 + 1 + 1 + 2 + 2 + 2 + 2 + 3 + 3 + 3 + 3 +(12 rows) + +select dt, ntile(5) over (order by dt) from ow_sale; + dt | ntile +------------+------- + 1401-01-01 | 1 + 1401-03-01 | 1 + 1401-04-01 | 1 + 1401-05-01 | 2 + 1401-05-02 | 2 + 1401-06-01 | 2 + 1401-06-01 | 3 + 1401-06-01 | 3 + 1401-06-01 | 4 + 1401-06-01 | 4 + 1401-06-01 | 5 + 1401-06-01 | 5 +(12 rows) + +select cn, dt, ntile(3) over (partition by cn order by dt) from ow_sale; -- mvd 1,2->3 + cn | dt | ntile +----+------------+------- + 1 | 1401-03-01 | 1 + 1 | 1401-05-01 | 1 + 1 | 1401-05-02 | 2 + 1 | 1401-06-01 | 2 + 1 | 1401-06-01 | 3 + 2 | 1401-01-01 | 1 + 2 | 1401-06-01 | 2 + 3 | 1401-04-01 | 1 + 3 | 1401-06-01 | 2 + 3 | 1401-06-01 | 3 + 4 | 1401-06-01 | 1 + 4 | 1401-06-01 | 2 +(12 rows) + +select cn, dt, ntile(3) over (partition by cn order by dt), sum(prc) over (order by cn, dt) from ow_sale; -- mvd 1,2->3 + cn | dt | ntile | sum +----+------------+-------+------ + 1 | 1401-03-01 | 1 | 0 + 1 | 1401-05-01 | 1 | 0 + 1 | 1401-05-02 | 2 | 0 + 1 | 1401-06-01 | 2 | 5 + 1 | 1401-06-01 | 3 | 5 + 2 | 1401-01-01 | 1 | 2405 + 2 | 1401-06-01 | 2 | 2405 + 3 | 1401-04-01 | 1 | 2405 + 3 | 1401-06-01 | 2 | 2415 + 3 | 1401-06-01 | 3 | 2415 + 4 | 1401-06-01 | 1 | 2417 + 4 | 1401-06-01 | 2 | 2417 +(12 rows) + +select cn,vn,ntile(cn) over(partition by cn order by vn) from ow_sale; --mvd 1->3 + cn | vn | ntile +----+----+------- + 1 | 10 | 1 + 1 | 20 | 1 + 1 | 30 | 1 + 1 | 30 | 1 + 1 | 50 | 1 + 2 | 40 | 1 + 2 | 50 | 2 + 3 | 30 | 1 + 3 | 30 | 2 + 3 | 40 | 3 + 4 | 40 | 1 + 4 | 40 | 2 +(12 rows) + +select cn,vn,ntile(qty) over(partition by cn order by vn) from ow_sale; +ERROR: NTILE function argument expression should be in PARTITION BY. +select cn,vn,ntile(cn) over(partition by cn+vn order by vn) from ow_sale; +ERROR: NTILE function argument expression should be in PARTITION BY. +select cn,vn,ntile(cn+vn) over(partition by cn+vn order by vn) from ow_sale; --mvd 1,2->3 + cn | vn | ntile +----+----+------- + 1 | 10 | 1 + 1 | 20 | 1 + 1 | 30 | 1 + 1 | 30 | 2 + 3 | 30 | 1 + 3 | 30 | 2 + 3 | 40 | 1 + 1 | 50 | 1 + 2 | 40 | 1 + 4 | 40 | 1 + 4 | 40 | 2 + 2 | 50 | 1 +(12 rows) + +select ow_count_operator('explain select * from ow_sale order by first_value(NULL) over (partition by cn order by case when 1=1 then pn else vn end);', 'Window') > 0; + ?column? +---------- + t +(1 row) + +drop table if exists tab12773_test; +NOTICE: table "tab12773_test" does not exist, skipping +create table tab12773_test(member_id varchar(100),name varchar(100),color varchar(100),a int,b int ,c int); +NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'member_id' as the Greenplum Database data distribution key for this table. +HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew. +insert into tab12773_test values('mersfe','Donuts','Chocolate',1,13,56); +insert into tab12773_test values('3sef3','Hamburger','Grey',2,15,58); +insert into tab12773_test values('3sef3','Castle','Grey',3,17,60); +insert into tab12773_test values('3sef3','Justice','Clear',4,19,62); +insert into tab12773_test values('3sesdff3','Donuts','Plain',5,21,64); +insert into tab12773_test values('mersfe','Sword','Black',7,23,66); +insert into tab12773_test values('3sef3','Dream','Black',9,25,68); +insert into tab12773_test values('3sesdff3','Fries','Grey',11,27,5456); +drop table if exists tab12773_vendor; +NOTICE: table "tab12773_vendor" does not exist, skipping +create table tab12773_vendor +( + vn int not null, + vname text not null, + vloc text, + + primary key (vn) + +) distributed by (vn); +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "tab12773_vendor_pkey" for table "tab12773_vendor" +drop table if exists tab12773_product; +NOTICE: table "tab12773_product" does not exist, skipping +create table tab12773_product +( + pn int not null, + pname text not null, + pcolor text, + + primary key (pn) + +) distributed by (pn); +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "tab12773_product_pkey" for table "tab12773_product" +drop table if exists tab12773_sale_ord; +NOTICE: table "tab12773_sale_ord" does not exist, skipping +create table tab12773_sale_ord +( + ord int not null, + cn int not null, + vn int not null, + pn int not null, + dt date not null, + qty int not null, + prc float not null, + + primary key (cn, vn, pn) + +) distributed by (cn,vn,pn); +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "tab12773_sale_ord_pkey" for table "tab12773_sale_ord" +-- Vendors +insert into tab12773_vendor values + ( 10, 'Witches, Inc', 'Lonely Heath'), + ( 20, 'Lady Macbeth', 'Inverness'), + ( 30, 'Duncan', 'Forres'), + ( 40, 'Macbeth', 'Inverness'), + ( 50, 'Macduff', 'Fife'); +-- Products +insert into tab12773_product values + ( 100, 'Sword', 'Black'), + ( 200, 'Dream', 'Black'), + ( 300, 'Castle', 'Grey'), + ( 400, 'Justice', 'Clear'), + ( 500, 'Donuts', 'Plain'), + ( 600, 'Donuts', 'Chocolate'), + ( 700, 'Hamburger', 'Grey'), + ( 800, 'Fries', 'Grey'); +-- Sales (ord transactions) +insert into tab12773_sale_ord values + ( 1,2, 40, 100, '1401-1-1', 1100, 2400), + ( 2,1, 10, 200, '1401-3-1', 1, 0), + ( 3,3, 40, 200, '1401-4-1', 1, 0), + ( 4,1, 20, 100, '1401-5-1', 1, 0), + ( 5,1, 30, 300, '1401-5-2', 1, 0), + ( 6,1, 50, 400, '1401-6-1', 1, 0), + ( 7,2, 50, 400, '1401-6-1', 1, 0), + ( 8,1, 30, 500, '1401-6-1', 12, 5), + ( 9,3, 30, 500, '1401-6-1', 12, 5), + ( 10,3, 30, 600, '1401-6-1', 12, 5), + ( 11,4, 40, 700, '1401-6-1', 1, 1), + ( 12,4, 40, 800, '1401-6-1', 1, 1); +--The following query was erroring when a varchar was used in partition by clause +select member_id, +row_number() over (PARTITION by member_id ORDER BY a) a_rownum, +row_number() over (PARTITION by member_id ORDER BY b) b_rownum, +row_number() over (PARTITION by member_id ORDER BY c) c_rownum +from tab12773_test order by member_id,a_rownum,b_rownum,c_rownum; + member_id | a_rownum | b_rownum | c_rownum +-----------+----------+----------+---------- + 3sef3 | 1 | 1 | 1 + 3sef3 | 2 | 2 | 2 + 3sef3 | 3 | 3 | 3 + 3sef3 | 4 | 4 | 4 + 3sesdff3 | 1 | 1 | 1 + 3sesdff3 | 2 | 2 | 2 + mersfe | 1 | 1 | 1 + mersfe | 2 | 2 | 2 +(8 rows) + +--Some more cases around varchar in window functions +--Sanity check with some other window functions +SELECT ow_product.pn,ow_product.pname,ow_product.pcolor, TO_CHAR(COALESCE(COUNT(*) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999') +FROM tab12773_product ow_product +WINDOW win1 as (partition by ow_product.pcolor order by ow_product.pn asc) order by ow_product.pn; + pn | pname | pcolor | to_char | to_char | to_char +-----+-----------+-----------+-------------------+-------------------+------------------- + 100 | Sword | Black | 1.0000000 | 1.0000000 | .5000000 + 200 | Dream | Black | 2.0000000 | 2.0000000 | 1.0000000 + 300 | Castle | Grey | 1.0000000 | 1.0000000 | .3333333 + 400 | Justice | Clear | 1.0000000 | 1.0000000 | 1.0000000 + 500 | Donuts | Plain | 1.0000000 | 1.0000000 | 1.0000000 + 600 | Donuts | Chocolate | 1.0000000 | 1.0000000 | 1.0000000 + 700 | Hamburger | Grey | 2.0000000 | 2.0000000 | .6666667 + 800 | Fries | Grey | 3.0000000 | 3.0000000 | 1.0000000 +(8 rows) + +SELECT test.member_id,test.a,test.b,test.c, +TO_CHAR(COALESCE(COUNT(a) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(a) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(a) OVER(win1),0),'99999999.9999999') +FROM tab12773_test test +WINDOW win1 as (partition by test.member_id order by test.a asc) order by test.member_id,test.a,test.b,test.c; + member_id | a | b | c | to_char | to_char | to_char +-----------+----+----+------+-------------------+-------------------+------------------- + 3sef3 | 2 | 15 | 58 | 1.0000000 | 2.0000000 | 2.0000000 + 3sef3 | 3 | 17 | 60 | 2.0000000 | 2.0000000 | 3.0000000 + 3sef3 | 4 | 19 | 62 | 3.0000000 | 2.0000000 | 4.0000000 + 3sef3 | 9 | 25 | 68 | 4.0000000 | 2.0000000 | 9.0000000 + 3sesdff3 | 5 | 21 | 64 | 1.0000000 | 5.0000000 | 5.0000000 + 3sesdff3 | 11 | 27 | 5456 | 2.0000000 | 5.0000000 | 11.0000000 + mersfe | 1 | 13 | 56 | 1.0000000 | 1.0000000 | 1.0000000 + mersfe | 7 | 23 | 66 | 2.0000000 | 1.0000000 | 7.0000000 +(8 rows) + +--Use more than one varchar column in the ranges +SELECT test.member_id,test.color,test.name, +TO_CHAR(COALESCE(COUNT(*) OVER(win1),0),'99999999.9999999'), +COALESCE(FIRST_VALUE(name) OVER(win1),'0') first_name, +COALESCE(LAST_VALUE(name) OVER(win1),'0') last_name +FROM tab12773_test test +WINDOW win1 as (partition by test.member_id,test.color order by test.name asc) order by test.member_id,test.color,test.name; + member_id | color | name | to_char | first_name | last_name +-----------+-----------+-----------+-------------------+------------+----------- + 3sef3 | Black | Dream | 1.0000000 | Dream | Dream + 3sef3 | Clear | Justice | 1.0000000 | Justice | Justice + 3sef3 | Grey | Castle | 1.0000000 | Castle | Castle + 3sef3 | Grey | Hamburger | 2.0000000 | Castle | Hamburger + 3sesdff3 | Grey | Fries | 1.0000000 | Fries | Fries + 3sesdff3 | Plain | Donuts | 1.0000000 | Donuts | Donuts + mersfe | Black | Sword | 1.0000000 | Sword | Sword + mersfe | Chocolate | Donuts | 1.0000000 | Donuts | Donuts +(8 rows) + +--Using more than one windows involving varchar +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT ow_sale.pn,ow_sale.cn,ow_sale.name,ow_sale.color, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.qty order by ow_sale.vn asc),0),'99999999.9999999') +FROM +(SELECT ow_sale_ord.*,test.name,test.color,ow_product.pname,ow_product.pcolor FROM tab12773_sale_ord ow_sale_ord,tab12773_product ow_product,tab12773_vendor ow_vendor,tab12773_test test WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_product.pname = test.name AND ow_product.pcolor = test.color) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.name order by ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ), +win2 as (partition by ow_sale.pname,ow_sale.name,ow_sale.color order by ow_sale.cn asc), +win3 as (partition by ow_sale.prc,ow_sale.color,ow_sale.pcolor order by ow_sale.vn desc) order by ow_sale.pn,ow_sale.cn,ow_sale.name,ow_sale.color; + pn | cn | name | color | to_char | to_char | to_char | prc | to_char | to_char | to_char +-----+----+-----------+-----------+-------------------+-------------------+-------------------+------+-------------------+-------------------+------------------- + 100 | 1 | Sword | Black | 1.0000000 | 1.0000000 | 2.0000000 | 0 | .5000000 | 1.0000000 | .1428571 + 100 | 2 | Sword | Black | 1.0000000 | 2.0000000 | 1.0000000 | 2400 | .0000000 | 1.0000000 | .0000000 + 200 | 1 | Dream | Black | 1.0000000 | 1.0000000 | 3.0000000 | 0 | 1.0000000 | 1.0000000 | .0000000 + 200 | 3 | Dream | Black | 1.0000000 | 2.0000000 | 1.0000000 | 0 | .0000000 | 1.0000000 | .4285714 + 300 | 1 | Castle | Grey | 1.0000000 | 1.0000000 | 1.0000000 | 0 | .0000000 | 1.0000000 | .2857143 + 400 | 1 | Justice | Clear | 2.0000000 | 1.0000000 | 1.0000000 | 0 | .0000000 | 2.0000000 | .8571429 + 400 | 2 | Justice | Clear | 1.0000000 | 2.0000000 | 1.0000000 | 0 | .0000000 | 1.0000000 | .8571429 + 500 | 1 | Donuts | Plain | 3.0000000 | 1.0000000 | 1.0000000 | 5 | .0000000 | 3.0000000 | .0000000 + 500 | 3 | Donuts | Plain | 2.0000000 | 2.0000000 | 1.0000000 | 5 | .0000000 | 2.0000000 | .0000000 + 600 | 3 | Donuts | Chocolate | 1.0000000 | 1.0000000 | 1.0000000 | 5 | .0000000 | 1.0000000 | .0000000 + 700 | 4 | Hamburger | Grey | 1.0000000 | 1.0000000 | 1.0000000 | 1 | .0000000 | 1.0000000 | .4285714 + 800 | 4 | Fries | Grey | 1.0000000 | 1.0000000 | 1.0000000 | 1 | .0000000 | 1.0000000 | .4285714 +(12 rows) + +SELECT a,color,sum(a) over (partition by member_id,color) FROM tab12773_test order by member_id,name; + a | color | sum +----+-----------+----- + 3 | Grey | 5 + 9 | Black | 9 + 2 | Grey | 5 + 4 | Clear | 4 + 5 | Plain | 5 + 11 | Grey | 11 + 1 | Chocolate | 1 + 7 | Black | 7 +(8 rows) + +SELECT member_id,a,color,sum(a) over (partition by member_id,color) FROM tab12773_test order by member_id,name; + member_id | a | color | sum +-----------+----+-----------+----- + 3sef3 | 3 | Grey | 5 + 3sef3 | 9 | Black | 9 + 3sef3 | 2 | Grey | 5 + 3sef3 | 4 | Clear | 4 + 3sesdff3 | 5 | Plain | 5 + 3sesdff3 | 11 | Grey | 11 + mersfe | 1 | Chocolate | 1 + mersfe | 7 | Black | 7 +(8 rows) + +-- start_ignore +reset datestyle; +drop table tab12773_test; +drop table ow_customer; +drop table ow_vendor; +drop table ow_product; +drop table ow_sale; +drop table ow_sale_ord; +drop table ow_util; +drop function ow_count_operator; +ERROR: syntax error at or near ";" +LINE 1: drop function ow_count_operator; + ^ +-- end_ignore \ No newline at end of file diff --git a/src/test/regress/expected/cf_olap_windowerr.out b/src/test/regress/expected/cf_olap_windowerr.out new file mode 100644 index 0000000000000000000000000000000000000000..2e44a2bf8ef28a7f349cb22a7bcdcba934dcac9d --- /dev/null +++ b/src/test/regress/expected/cf_olap_windowerr.out @@ -0,0 +1,3701 @@ +-- +-- STANDARD DATA FOR olap_* TESTS. +-- +-- start_ignore +drop table cf_olap_windowerr_customer; +ERROR: table "cf_olap_windowerr_customer" does not exist +drop table cf_olap_windowerr_vendor; +ERROR: table "cf_olap_windowerr_vendor" does not exist +drop table cf_olap_windowerr_product; +ERROR: table "cf_olap_windowerr_product" does not exist +drop table cf_olap_windowerr_sale; +ERROR: table "cf_olap_windowerr_sale" does not exist +drop table cf_olap_windowerr_sale_ord; +ERROR: table "cf_olap_windowerr_sale_ord" does not exist +drop table cf_olap_windowerr_util; +ERROR: table "cf_olap_windowerr_util" does not exist +create table cf_olap_windowerr_customer +( + cn int not null, + cname text not null, + cloc text, + + primary key (cn) + +) distributed by (cn); +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "cf_olap_windowerr_customer_pkey" for table "cf_olap_windowerr_customer" +create table cf_olap_windowerr_vendor +( + vn int not null, + vname text not null, + vloc text, + + primary key (vn) + +) distributed by (vn); +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "cf_olap_windowerr_vendor_pkey" for table "cf_olap_windowerr_vendor" +create table cf_olap_windowerr_product +( + pn int not null, + pname text not null, + pcolor text, + + primary key (pn) + +) distributed by (pn); +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "cf_olap_windowerr_product_pkey" for table "cf_olap_windowerr_product" +create table cf_olap_windowerr_sale +( + cn int not null, + vn int not null, + pn int not null, + dt date not null, + qty int not null, + prc float not null, + + primary key (cn, vn, pn) + +) distributed by (cn,vn,pn); +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "cf_olap_windowerr_sale_pkey" for table "cf_olap_windowerr_sale" +create table cf_olap_windowerr_sale_ord +( + ord int not null, + cn int not null, + vn int not null, + pn int not null, + dt date not null, + qty int not null, + prc float not null, + + primary key (cn, vn, pn) + +) distributed by (cn,vn,pn); +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "cf_olap_windowerr_sale_ord_pkey" for table "cf_olap_windowerr_sale_ord" +create table cf_olap_windowerr_util +( + xn int not null, + + primary key (xn) + +) distributed by (xn); +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "cf_olap_windowerr_util_pkey" for table "cf_olap_windowerr_util" +-- cf_olap_windowerr_customers +insert into cf_olap_windowerr_customer values + ( 1, 'Macbeth', 'Inverness'), + ( 2, 'Duncan', 'Forres'), + ( 3, 'Lady Macbeth', 'Inverness'), + ( 4, 'Witches, Inc', 'Lonely Heath'); +-- cf_olap_windowerr_vendors +insert into cf_olap_windowerr_vendor values + ( 10, 'Witches, Inc', 'Lonely Heath'), + ( 20, 'Lady Macbeth', 'Inverness'), + ( 30, 'Duncan', 'Forres'), + ( 40, 'Macbeth', 'Inverness'), + ( 50, 'Macduff', 'Fife'); +-- cf_olap_windowerr_products +insert into cf_olap_windowerr_product values + ( 100, 'Sword', 'Black'), + ( 200, 'Dream', 'Black'), + ( 300, 'Castle', 'Grey'), + ( 400, 'Justice', 'Clear'), + ( 500, 'Donuts', 'Plain'), + ( 600, 'Donuts', 'Chocolate'), + ( 700, 'Hamburger', 'Grey'), + ( 800, 'Fries', 'Grey'); +-- cf_olap_windowerr_sales (transactions) +insert into cf_olap_windowerr_sale values + ( 2, 40, 100, '1401-1-1', 1100, 2400), + ( 1, 10, 200, '1401-3-1', 1, 0), + ( 3, 40, 200, '1401-4-1', 1, 0), + ( 1, 20, 100, '1401-5-1', 1, 0), + ( 1, 30, 300, '1401-5-2', 1, 0), + ( 1, 50, 400, '1401-6-1', 1, 0), + ( 2, 50, 400, '1401-6-1', 1, 0), + ( 1, 30, 500, '1401-6-1', 12, 5), + ( 3, 30, 500, '1401-6-1', 12, 5), + ( 3, 30, 600, '1401-6-1', 12, 5), + ( 4, 40, 700, '1401-6-1', 1, 1), + ( 4, 40, 800, '1401-6-1', 1, 1); +-- cf_olap_windowerr_sales (ord transactions) +insert into cf_olap_windowerr_sale_ord values + ( 1,2, 40, 100, '1401-1-1', 1100, 2400), + ( 2,1, 10, 200, '1401-3-1', 1, 0), + ( 3,3, 40, 200, '1401-4-1', 1, 0), + ( 4,1, 20, 100, '1401-5-1', 1, 0), + ( 5,1, 30, 300, '1401-5-2', 1, 0), + ( 6,1, 50, 400, '1401-6-1', 1, 0), + ( 7,2, 50, 400, '1401-6-1', 1, 0), + ( 8,1, 30, 500, '1401-6-1', 12, 5), + ( 9,3, 30, 500, '1401-6-1', 12, 5), + ( 10,3, 30, 600, '1401-6-1', 12, 5), + ( 11,4, 40, 700, '1401-6-1', 1, 1), + ( 12,4, 40, 800, '1401-6-1', 1, 1); +-- cf_olap_windowerr_util +insert into cf_olap_windowerr_util values + (1), + (20), + (300); +-- end_ignore +-- LEAD() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: ROWS parameter cannot be negative +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range 3 preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.pn desc), +win3 as (order by cf_olap_windowerr_sale.pn asc); +ERROR: division by zero +-- mvd 6->5; 4,8,6,9,1->7; 1->10; +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.qty)) OVER(order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.qty) preceding and 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.qty) preceding and 2 preceding ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn desc), +win3 as (order by cf_olap_windowerr_sale.cn desc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 2->5; 2->6; 4,3,8,1->7; 3->9; 1->10; +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.prc) preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.pn asc), +win4 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative (seg0 slice2 rahmaf2-mbp:25432 pid=48133) +-- mvd 6->5; 2,8,9->7; 9->10; 9->11; 2,8,9->12; 1,6->13; +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by cf_olap_windowerr_sale.vn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) preceding and floor(cf_olap_windowerr_sale.cn) following ), +win2 as (order by cf_olap_windowerr_sale.vn asc); +ERROR: RANGE parameter cannot be negative +-- mvd 3->6; 3->7; 3->8; +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) preceding and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.vn asc); +ERROR: RANGE parameter cannot be negative +-- mvd 4->3; 6,4,7,1,2->5; +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between current row and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.vn asc); +ERROR: division by zero +-- mvd 1->6; 2->7; +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.qty) preceding and 4 following ), +win2 as (order by cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: division by zero (seg0 slice4 rahmaf2-mbp:25432 pid=48130) +-- mvd 1,3->5; 4->6; 4->7; 1,3,4->8; 4->9; +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn)) OVER(partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win5),0),'99999999.9999999'),cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between current row and floor(cf_olap_windowerr_sale.vn) following ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.vn asc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win5 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: division by zero +-- mvd 8->7; 8,10,2,1->9; 10,2->11; 8->12; 10,2->13; 10,8,2,15,1->14; +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win5),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn asc range between unbounded preceding and floor(cf_olap_windowerr_sale.cn) following ), +win2 as (order by cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.pn asc), +win4 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win5 as (order by cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 5,6,3,1->4; 3->7; 3->8; 1->9; 6,3->10; 3->11; +-- COUNT() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.prc) preceding and current row ); +ERROR: RANGE parameter cannot be negative (seg0 slice2 rahmaf2-mbp:25432 pid=48130) +-- mvd 6,4,7,3->5; +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn)) OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win5),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.pn desc rows between 0 preceding and floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty) following ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.vn desc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win5 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 5,6,7->4; 5,9,7->8; 5,9,7->10; 9->11; 7->12; 5,9,7->13; +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.cn)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn asc range between unbounded preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: division by zero +-- mvd 3->2; 1,3->4; 1->5; 1,3->6; 1->7; 3->8; +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn asc range between 3 following and floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc); +ERROR: RANGE parameter cannot be negative +-- mvd 2->4; 2,1->5; 2,1->6; 2,1->7; 9,10,2->8; +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn asc rows between unbounded preceding and 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.prc)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn asc rows between unbounded preceding and 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn asc rows between unbounded preceding and 1 preceding ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: division by zero +-- mvd 6,7->5; 6,7->8; 2,1,6,7->9; 6,7->10; 2,1,6,7->11; +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 3->5; 7,3,1,2->6; +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.vn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between current row and current row ), +win2 as (order by cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win5 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 3->7; 9->8; 11->10; 9->12; 2,1,3,11->13; +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.vn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.vn asc rows between current row and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 2,6->5; 2,6->7; 9,2->8; 9,2->10; 9,2->11; +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.cn) following and floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.prc) following ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 3->2; 1,3,5->4; 7->6; +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and 3 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and 3 following ), +win2 as (partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.pn desc), +win3 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win4 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc); +ERROR: division by zero (seg1 slice6 rahmaf2-mbp:25433 pid=48131) +-- mvd 3,1->2; 3,1->4; 3,1->5; 7,8->6; 7,3,10,8->9; 7,3,1,10->11; +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by cf_olap_windowerr_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.cn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.pn desc rows between unbounded preceding and 2 preceding ), +win2 as (order by cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.cn asc); +ERROR: division by zero (seg1 slice2 rahmaf2-mbp:25433 pid=48131) +-- mvd 5,3,2->4; 3->6; 5->7; 3->8; 3->9; 5->10; +-- MAX() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between 7 preceding and unbounded following ); +ERROR: division by zero (seg0 slice2 rahmaf2-mbp:25432 pid=48130) +-- mvd 4,3,1->6; +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.pn asc rows between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.pn asc rows between current row and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 3,4,5,6->2; 4,1,6->7; 5->8; 6->9; 3,4,5,6->10; +-- MAX() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) following and unbounded following ); +ERROR: ROWS parameter cannot be negative (seg0 slice1 rahmaf2-mbp:25432 pid=48130) +-- mvd 3,4,5,6->2; +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.prc) following and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc); +ERROR: division by zero (seg1 slice3 rahmaf2-mbp:25433 pid=48131) +-- mvd 6,1,3,7->5; 7->8; 7->9; 7->10; 7->11; +-- MIN() function with NULL OVER() clause in combination with other window functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 7->7; 3->8; 3->9; +-- MIN() function with OVER() clause having ONLY PARTITION BY -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn); +ERROR: division by zero (seg0 slice2 rahmaf2-mbp:25432 pid=48130) +-- mvd 4->3; +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) preceding ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: RANGE parameter cannot be negative +-- mvd 6->5; 6,8,4->7; 6,8,4->9; 6,8,4->10; +-- MIN() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.cn) preceding and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) following ); +ERROR: RANGE parameter cannot be negative +-- mvd 1->6; +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty)) OVER(order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.pn) preceding and floor(cf_olap_windowerr_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.pn) preceding and floor(cf_olap_windowerr_sale.qty) following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.vn desc); +ERROR: division by zero +-- mvd 1->5; 1->6; 1->7; 3,4,9->8; +-- MIN() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn desc range between current row and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) following ); +ERROR: RANGE parameter cannot be negative +-- mvd 2->3; +-- MIN() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.pn desc rows unbounded preceding ); +ERROR: division by zero +-- mvd 3,1->2; +-- MIN() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows current row ); +ERROR: division by zero +-- mvd 5->4; +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn asc rows between unbounded preceding and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 3,4->2; 4->5; 4->6; +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.cn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 4->3; 6->5; 4->7; 6->8; 4->9; 6->10; +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn)) OVER(order by cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.vn desc rows between 1 preceding and 2 following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.vn asc), +win4 as (order by cf_olap_windowerr_sale.cn asc); +ERROR: division by zero +-- mvd 5->4; 5->6; 3,2,5,1->7; 5->8; 5->9; 3->10; +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.cn desc range unbounded preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: division by zero +-- mvd 3,4->2; 3->5; 3,4->6; +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) preceding and floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.prc) preceding ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) preceding and floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.prc) preceding ); +ERROR: RANGE parameter cannot be negative (seg0 slice5 rahmaf2-mbp:25432 pid=48130) +-- mvd 3,4,5->2; 3,4,5->6; +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.cn desc rows unbounded preceding ), +win2 as (order by cf_olap_windowerr_sale.pn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win5 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 6,3,7,1->5; 1->8; 1->9; 1->10; 6->11; +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.pn asc rows between unbounded preceding and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.vn desc), +win4 as (order by cf_olap_windowerr_sale.cn desc), +win5 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: division by zero (seg1 slice4 rahmaf2-mbp:25433 pid=48131) +-- mvd 3,8,2->7; 3->9; 1->10; 3->11; 3->12; +-- MIN() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between current row and floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) following ); +ERROR: division by zero (seg2 slice2 rahmaf2-mbp:25434 pid=48132) +-- mvd 4,1->3; +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between current row and 0 following ), +win2 as (order by cf_olap_windowerr_sale.vn asc), +win3 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: ROWS parameter cannot be negative (seg0 slice4 rahmaf2-mbp:25432 pid=48130) +-- mvd 5,6,7->4; 3->8; 3->9; 7,1->10; +-- STDDEV() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn desc range unbounded preceding ); +ERROR: division by zero +-- mvd 8->7; +-- STDDEV() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn asc range floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) preceding ); +ERROR: RANGE parameter cannot be negative +-- mvd 4->6; +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn asc range between unbounded preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.pn asc), +win4 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn desc); +ERROR: division by zero +-- mvd 2->4; 2->5; 7,8,9,10,2->6; 7,8,9,10,2->11; 2->12; 8,9,10,2->13; +-- STDDEV() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) preceding and 3 following ); +ERROR: RANGE parameter cannot be negative +-- mvd 5->6; +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn asc range between floor(cf_olap_windowerr_sale.vn) preceding and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn asc); +ERROR: division by zero +-- mvd 1->6; 2,1,8->7; +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn desc rows between current row and floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.cn) following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: division by zero +-- mvd 3,1->2; 1->4; +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between 3 following and floor(cf_olap_windowerr_sale.cn) following ), +win2 as (order by cf_olap_windowerr_sale.cn asc); +ERROR: division by zero +-- mvd 1->3; 5->4; 5->6; +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) following and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.pn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 3,6->5; 6->7; 6->8; 6->9; 6->10; +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn asc range between unbounded preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 3,1,2->7; 1,2->8; 1->9; 1->10; +-- STDDEV() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn asc range between unbounded preceding and 2 following ); +ERROR: division by zero (seg1 slice4 rahmaf2-mbp:25433 pid=48131) +-- mvd 1,6,7->5; +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn asc rows between unbounded preceding and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.vn asc), +win3 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc); +ERROR: ROWS parameter cannot be negative (seg0 slice3 rahmaf2-mbp:25432 pid=48149) +-- mvd 3,4,1,5->2; 3,4,1,5->6; 4,1->7; 3,4,5->8; +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between 4 preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: division by zero (seg0 slice4 rahmaf2-mbp:25432 pid=48130) +-- mvd 1,5,8->7; 2->9; +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between current row and floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc) following ), +win2 as (order by cf_olap_windowerr_sale.cn desc); +ERROR: division by zero (seg0 slice2 rahmaf2-mbp:25432 pid=48130) +-- mvd 8,5,1->7; 8->9; 8,5,1->10; +-- STDDEV_POP() function with NULL OVER() clause in combination with other window functions -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (), +win2 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 6->6; 1,2,5->7; 1,2,5->8; 1,2,5->9; 1,4->10; +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.dt +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn desc range between unbounded preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn asc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: division by zero (seg0 slice5 rahmaf2-mbp:25432 pid=48146) +-- mvd 1->5; 3,2->6; 3,2->7; 3,2->8; 10,2,1->9; +-- STDDEV_POP() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.vn) preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) following ); +ERROR: RANGE parameter cannot be negative +-- mvd 3->7; +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn asc range between current row and floor(cf_olap_windowerr_sale.cn) following ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc); +ERROR: division by zero +-- mvd 3->2; 5,6,7,1->4; 6,3,1->8; +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between unbounded preceding and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win4 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 4->3; 6,7,4,8->5; 8->9; 7,6,8->10; +-- STDDEV_POP() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.vn desc range between unbounded preceding and floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) preceding ); +ERROR: RANGE parameter cannot be negative (seg2 slice2 rahmaf2-mbp:25434 pid=48132) +-- mvd 3,4,5,6->2; +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.pn)) OVER(order by cf_olap_windowerr_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.vn asc range between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) preceding and 1 preceding ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.vn desc), +win4 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: RANGE parameter cannot be negative (seg2 slice5 rahmaf2-mbp:25434 pid=48132) +-- mvd 3,4->2; 3,4->5; 7,1,3->6; 3->8; 3->9; 7,1,11->10; +-- STDDEV_POP() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.cn asc range between floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.cn) preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) following ); +ERROR: RANGE parameter cannot be negative (seg0 slice3 rahmaf2-mbp:25432 pid=48130) +-- mvd 6,7->5; +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) preceding ); +ERROR: ROWS parameter cannot be negative (seg0 slice4 rahmaf2-mbp:25432 pid=48130) +-- mvd 1,3,4->2; +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc) preceding and unbounded following ); +ERROR: division by zero (seg1 slice2 rahmaf2-mbp:25433 pid=48131) +-- mvd 5,1,2->4; +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.cn)) OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn asc rows between current row and current row ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn asc rows between current row and current row ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win4 as (order by cf_olap_windowerr_sale.pn desc); +ERROR: division by zero +-- mvd 1,6,2,3->7; 1,2->8; 2->9; 3->10; 1,6,2,3->11; +-- STDDEV_SAMP() function with NULL OVER() clause in combination with other window functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win4 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 3->3; 3->4; 1->5; 7,8,1->6; 10,1->9; 1->11; +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn desc range between unbounded preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.pn asc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 3->2; 3->4; 3->5; 3->6; 3->7; 1->8; +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.cn asc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.cn asc range between current row and current row ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between current row and current row ); +ERROR: division by zero +-- mvd 2->5; 2->6; 2->7; +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.cn asc range between 2 following and floor(cf_olap_windowerr_sale.vn) following ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between 2 following and floor(cf_olap_windowerr_sale.vn) following ), +win2 as (order by cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win4 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.pn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 7->6; 7->8; 7->9; 7,11,2,1->10; 5,11,13,2,1->12; 7->14; +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.vn) preceding ); +ERROR: division by zero +-- mvd 4->3; +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.pn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.vn) preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 2,3->6; 2->7; 2->8; 2->9; 2->10; +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.prc) preceding and current row ); +ERROR: ROWS parameter cannot be negative +-- mvd 2->4; +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between 7 following and floor(cf_olap_windowerr_sale.vn) following ); +ERROR: division by zero +-- mvd 4->6; +-- STDDEV_SAMP() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn +, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn asc), +win2 as (partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +ERROR: ROWS parameter cannot be negative (seg0 slice3 rahmaf2-mbp:25432 pid=48149) +-- mvd 1,4,5,6->3; 5,6->7; 1,4,5,6->8; 5,6->9; +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc range unbounded preceding ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: division by zero (seg0 slice3 rahmaf2-mbp:25432 pid=48146) +-- mvd 2,1->5; 2,1->6; 2,1->7; 4,2,3,1->8; +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn asc), +win4 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 4,5,2,1->3; 1->6; 1->7; 4,5,2,1->8; 1->9; 4,11,5,2,12->10; +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.qty) following and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +ERROR: RANGE parameter cannot be negative (seg0 slice2 rahmaf2-mbp:25432 pid=48143) +-- mvd 5,6,3->4; 2,5->7; 2,1,5,3->8; 5,6,3->9; +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc range between 4 following and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative (seg1 slice4 rahmaf2-mbp:25433 pid=48131) +-- mvd 3,6,7->5; 1,4->8; +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn desc rows floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) preceding ); +ERROR: ROWS parameter cannot be negative (seg0 slice4 rahmaf2-mbp:25432 pid=48130) +-- mvd 3,5,6->4; +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.vn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.vn) following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: division by zero +-- mvd 3,4,5,1,6->2; 6->7; 6->8; +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between 3 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between 3 preceding and current row ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between 3 preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.pn asc); +ERROR: division by zero (seg0 slice4 rahmaf2-mbp:25432 pid=48130) +-- mvd 8,1,2->7; 8,1,2->9; 4->10; 4->11; 2,13->12; 8,1,2->14; +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.vn asc rows between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) following and floor(cf_olap_windowerr_sale.vn) following ); +ERROR: ROWS parameter cannot be negative (seg0 slice4 rahmaf2-mbp:25432 pid=48130) +-- mvd 5,8,4,6,1,3->7; +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn asc range current row ), +win2 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn desc), +win4 as (order by cf_olap_windowerr_sale.vn asc); +ERROR: division by zero +-- mvd 2->4; 1,3,2->5; 2->6; 1,3,8,9,2->7; 9->10; 1,3,2->11; +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between unbounded preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 3->2; 5->4; +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between 2 preceding and floor(cf_olap_windowerr_sale.cn) following ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 1->3; 1,5,6,7->4; 1,5,6,7->8; 1,5,6,7->9; 1,5,6,7->10; 7->11; +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn)) OVER(partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.vn) preceding and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn desc); +ERROR: division by zero +-- mvd 3->6; 3->7; 1,9,3,10->8; 3,12->11; 1,9,3,10->13; +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn asc range between 4 following and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.vn desc), +win4 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 7->6; 4,9,1,7->8; 4,9,1,7->10; 12->11; 4,9,1,7->13; 4,7->14; +-- SUM() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between unbounded preceding and unbounded following ); +ERROR: division by zero +-- mvd 5->4; +-- SUM() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between floor(cf_olap_windowerr_sale.qty) preceding and floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) preceding ); +ERROR: division by zero +-- mvd 1->5; +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win5),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.prc) preceding and floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.pn) following ), +win2 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win4 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn desc), +win5 as (order by cf_olap_windowerr_sale.pn asc); +ERROR: ROWS parameter cannot be negative (seg1 slice2 rahmaf2-mbp:25433 pid=48144) +-- mvd 3,2->4; 6,3,7,2,8->5; 7,3,2,1->9; 6,3,7,2->10; 1->11; 7,3,2,1->12; +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn asc range unbounded preceding ), +win2 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: ROWS parameter cannot be negative (seg0 slice5 rahmaf2-mbp:25432 pid=48130) +-- mvd 3,4,5->2; 3,4,7->6; 3,4,5->8; +-- SUM() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn asc range between floor(cf_olap_windowerr_sale.qty) preceding and current row ); +ERROR: division by zero (seg1 slice3 rahmaf2-mbp:25433 pid=48131) +-- mvd 3,4,5->2; +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn asc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn asc range between current row and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 2,5->4; 2,5->6; 5->7; +-- SUM() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.pn asc range between floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) following and unbounded following ); +ERROR: division by zero (seg2 slice2 rahmaf2-mbp:25434 pid=48132) +-- mvd 1,6,3,7->5; +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.pn asc rows floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) preceding ), +win2 as (order by cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +ERROR: ROWS parameter cannot be negative (seg1 slice2 rahmaf2-mbp:25433 pid=48131) +-- mvd 3,4,1,5->2; 4->6; 4->7; 5->8; 3,4,1,5->9; +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.vn asc rows between unbounded preceding and 2 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.vn asc rows between unbounded preceding and 2 following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 1,5,2->4; 7->6; 7->8; 1,5,2->9; 7->10; +-- SUM() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.cn) preceding and current row ); +ERROR: division by zero (seg0 slice4 rahmaf2-mbp:25432 pid=48130) +-- mvd 4,5->3; +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between current row and current row ); +ERROR: division by zero (seg1 slice3 rahmaf2-mbp:25433 pid=48131) +-- mvd 6,2,7,1,8,9->5; 6,2,7,1,8,9->10; +-- VAR_POP() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range 0 preceding ); +ERROR: division by zero +-- mvd 3->2; +-- VAR_POP() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) preceding and floor(cf_olap_windowerr_sale.cn) preceding ); +ERROR: division by zero +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) preceding and 4 preceding ), +win2 as (order by cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.pn asc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: division by zero +-- mvd 1->2; 4->3; 6->5; 1->7; +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) preceding and 4 following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: RANGE parameter cannot be negative +-- mvd 2->7; 2,5,3,1->8; 10,2,3,5->9; 2->11; +-- VAR_POP() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) preceding and floor(cf_olap_windowerr_sale.cn) preceding ); +ERROR: division by zero +-- mvd 2->5; +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) preceding ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) preceding ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 4->3; 4->5; 7,1,8,2,4->6; 4->9; 7,1,8,2,4->10; 4->11; +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between floor(cf_olap_windowerr_sale.pn) preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 1->6; 8,3,1->7; 8,3,1->9; 3->10; +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win5),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.vn asc rows between 2 preceding and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win4 as (order by cf_olap_windowerr_sale.pn asc), +win5 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +ERROR: division by zero +-- mvd 2,1,3->5; 1,3->6; 3->7; 3->8; 10,2,1,3->9; 3->11; +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn desc range between 0 preceding and floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) following ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: RANGE parameter cannot be negative (seg0 slice3 rahmaf2-mbp:25432 pid=48130) +-- mvd 3,4->2; 3,6,4->5; 3,4->7; 3,6,4->8; 3,6,4->9; 3,6,4->10; +-- VAR_POP() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.vn desc range between current row and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) following ); +ERROR: RANGE parameter cannot be negative (seg1 slice3 rahmaf2-mbp:25433 pid=48131) +-- mvd 3,4,5->2; +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn asc range between current row and 1 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn asc range between current row and 1 following ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative (seg0 slice2 rahmaf2-mbp:25432 pid=48130) +-- mvd 2,6,7,4->5; 2,6,7,4->8; 2,6,7,4->9; 2,6,7->10; 2,6,7,4->11; +-- VAR_POP() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between unbounded preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) following ); +ERROR: ROWS parameter cannot be negative (seg1 slice2 rahmaf2-mbp:25433 pid=48131) +-- mvd 5->4; +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between 4 preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 4,5,6,7->3; 6->8; 6->9; 6->10; +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.pn) preceding and floor(cf_olap_windowerr_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.pn) preceding and floor(cf_olap_windowerr_sale.cn) following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn asc); +ERROR: division by zero (seg0 slice2 rahmaf2-mbp:25432 pid=48136) +-- mvd 4,5,6,7->3; 4,5,6,7->8; 1,6,7->9; 1,5,6,7->10; 4,5,6,7->11; 4,5,6,7->12; +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty)) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.vn asc rows between current row and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +ERROR: division by zero (seg0 slice5 rahmaf2-mbp:25432 pid=48130) +-- mvd 4,1->3; 4,1->5; 7->6; 4,7,9,2->8; 4,1->10; 7->11; +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn desc range floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: RANGE parameter cannot be negative +-- mvd 3->2; 5,1,3->4; +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn asc range between unbounded preceding and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 2->5; 2->6; +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc)) OVER(order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.cn) preceding and floor(cf_olap_windowerr_sale.vn) preceding ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.cn) preceding and floor(cf_olap_windowerr_sale.vn) preceding ), +win2 as (order by cf_olap_windowerr_sale.cn asc); +ERROR: division by zero +-- mvd 1->4; 1->5; 1->6; 1->7; 1->8; +-- VAR_SAMP() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) preceding and unbounded following ); +ERROR: RANGE parameter cannot be negative +-- mvd 5->4; +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.pn desc rows between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) preceding and floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.pn) preceding ); +ERROR: ROWS parameter cannot be negative +-- mvd 5,1->4; +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.cn) preceding and 1 preceding ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn asc), +win4 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: division by zero +-- mvd 6->5; 6,8,4,1->7; 8,4,2->9; 6->10; 6,8,4,2->11; +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between 8 following and unbounded following ); +ERROR: division by zero +-- mvd 7->6; +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.vn desc rows between 4 following and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: division by zero +-- mvd 6,2->5; 6,2->7; 2->8; 2->9; 4,2->10; 6,2->11; +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by cf_olap_windowerr_sale.cn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn asc range floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) preceding ), +win2 as (order by cf_olap_windowerr_sale.cn desc); +ERROR: RANGE parameter cannot be negative (seg0 slice3 rahmaf2-mbp:25432 pid=48130) +-- mvd 1->5; 1->6; 1->7; +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by cf_olap_windowerr_sale.pn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.pn asc); +ERROR: division by zero (seg0 slice3 rahmaf2-mbp:25432 pid=48130) +-- mvd 7,1->6; 1->8; 1->9; +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn desc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn desc range between current row and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: division by zero +-- mvd 1,3,4->2; 1,3,4->5; 3,4->6; 8->7; 3,4->9; +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.vn desc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.qty)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.vn desc rows unbounded preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.pn asc); +ERROR: division by zero +-- mvd 1,8,9->7; 1,8,9->10; 8->11; 8->12; 9->13; 8->14; +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.pn desc rows floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) preceding ); +ERROR: ROWS parameter cannot be negative (seg0 slice2 rahmaf2-mbp:25432 pid=48130) +-- mvd 5,1,6->4; +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc)) OVER(order by cf_olap_windowerr_sale.vn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.pn desc rows between 0 preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.vn desc); +ERROR: division by zero (seg0 slice4 rahmaf2-mbp:25432 pid=48130) +-- mvd 3,4,6->5; 3->7; 4->8; 3->9; 4->10; +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn desc rows between current row and 9 following ); +ERROR: division by zero (seg0 slice3 rahmaf2-mbp:25432 pid=48130) +-- mvd 7,3,4,8->6; +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) following and unbounded following ); +ERROR: ROWS parameter cannot be negative (seg2 slice2 rahmaf2-mbp:25434 pid=48132) +-- mvd 1,2,3->7; +-- VARIANCE() function with NULL OVER() clause in combination with other window functions -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (), +win2 as (order by cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 3->3; 3->4; 6->5; 6->7; 6,1->8; +-- VARIANCE() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win5),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc), +win2 as (order by cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.pn asc), +win4 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win5 as (order by cf_olap_windowerr_sale.pn desc); +ERROR: division by zero (seg0 slice4 rahmaf2-mbp:25432 pid=48143) +-- mvd 8,4,1->7; 1->9; 1->10; 4,12,1->11; 1->13; 4,12,1->14; +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) preceding and floor(cf_olap_windowerr_sale.vn) preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: RANGE parameter cannot be negative +-- mvd 3->2; 3->4; 6->5; +-- VARIANCE() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn desc range between 2 preceding and current row ); +ERROR: division by zero +-- mvd 1->5; +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.pn asc range between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) preceding and current row ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn asc range between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) preceding and current row ); +ERROR: RANGE parameter cannot be negative +-- mvd 2->4; 2->5; 2->6; +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn asc range between floor(cf_olap_windowerr_sale.pn) following and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn) following ), +win2 as (order by cf_olap_windowerr_sale.pn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: RANGE parameter cannot be negative +-- mvd 4->3; 6->5; 6->7; 1->8; +-- VARIANCE() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between unbounded preceding and 1 preceding ); +ERROR: division by zero +-- mvd 8->7; +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.vn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.vn) preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn desc), +win3 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win4 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 3->2; 5,1,6->4; 1,3,6->7; 9,5,10,3->8; +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.qty)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn asc rows between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win5),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn asc rows between unbounded preceding and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.vn asc), +win4 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn asc), +win5 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 1,2->3; 2,5->4; 1,2->6; 2->7; 1,5->8; 10->9; +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between 1 following and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) following ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.cn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 4->3; 1,4,6->5; 1,4,6->7; 1,4,6->8; 4->9; 4->10; +-- VARIANCE() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) following and unbounded following ); +ERROR: division by zero +-- mvd 3,2->4; +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.cn desc rows between 2 following and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: division by zero +-- mvd 1,6->5; 1,2,3->7; +-- VARIANCE() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty +, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn)) OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn asc), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 5,1,6,3->4; 5,2,1,6,3->7; 5,2,1,6,3->8; 5->9; 5->10; 5,2,1,6,3->11; +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc range unbounded preceding ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: ROWS parameter cannot be negative (seg0 slice5 rahmaf2-mbp:25432 pid=48130) +-- mvd 2,4->3; 2,6,7,4->5; +-- VARIANCE() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.vn desc range floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) preceding ); +ERROR: RANGE parameter cannot be negative (seg0 slice1 rahmaf2-mbp:25432 pid=48130) +-- mvd 2,4,1,5->3; +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.vn) preceding and 3 preceding ), +win2 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +ERROR: division by zero +-- mvd 6,3->5; 8,6,1->7; 6->9; 8,6,1->10; 6,3->11; 3->12; +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between unbounded preceding and 4 preceding ), +win2 as (order by cf_olap_windowerr_sale.cn desc); +ERROR: division by zero (seg1 slice2 rahmaf2-mbp:25433 pid=48131) +-- mvd 2,4->3; 2,4->5; 2->6; +-- VARIANCE() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between 9 preceding and unbounded following ); +ERROR: division by zero (seg1 slice5 rahmaf2-mbp:25433 pid=48131) +-- mvd 2,6->5; +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between current row and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) following ), +win2 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.pn desc); +ERROR: ROWS parameter cannot be negative (seg0 slice4 rahmaf2-mbp:25432 pid=48130) +-- mvd 7,8,9,4->6; 7,9->10; 7,9->11; 4->12; +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.prc) following and 1 following ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.cn desc), +win4 as (order by cf_olap_windowerr_sale.pn asc); +ERROR: ROWS parameter cannot be negative (seg2 slice2 rahmaf2-mbp:25434 pid=48151) +-- mvd 1,3,4,5->2; 3,4,7->6; 3->8; 7->9; 3,4,7->10; 7->11; +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.cn asc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.pn)) OVER(order by cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range unbounded preceding ), +win2 as (order by cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.vn asc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 1->4; 1->5; 1->6; 1,8,3,9->7; 1->10; 1->11; +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn desc range between unbounded preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win4 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 5->4; 5->6; 5->7; 5->8; 5->9; 2,5,11->10; +-- CORR() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.vn asc rows floor(cf_olap_windowerr_sale.vn) preceding ); +ERROR: division by zero +-- mvd 3->7; +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn)) OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.vn asc rows between unbounded preceding and floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.vn) preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: division by zero +-- mvd 3,4->2; 6,3,4->5; 6,3,4->7; 3->8; +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn desc rows between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc); +ERROR: division by zero +-- mvd 1->3; 1->4; 1,6->5; 1,6->7; 1,6->8; 10->9; +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between 1 preceding and floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc) following ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win4 as (order by cf_olap_windowerr_sale.pn desc); +ERROR: division by zero +-- mvd 3->2; 5,1,3->4; 3->6; 5->7; 5,1,3->8; 3->9; +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.prc)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) preceding and unbounded following ); +ERROR: ROWS parameter cannot be negative +-- mvd 1->5; 1->6; +-- CORR() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn asc), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative (seg0 slice3 rahmaf2-mbp:25432 pid=48133) +-- mvd 3,6,1->5; 3,6,1->7; 3,6,1->8; 1,10,11->9; 1,10,11->12; +-- CORR() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn asc range between 1 preceding and floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) following ); +ERROR: division by zero (seg0 slice2 rahmaf2-mbp:25432 pid=48130) +-- mvd 2->5; +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) preceding and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win4 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: RANGE parameter cannot be negative (seg2 slice4 rahmaf2-mbp:25434 pid=48151) +-- mvd 5,2,6->4; 5,2,6->7; 5,6->8; 5,6->9; 5,6->10; 12,13,5,2,6->11; +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn asc range between current row and current row ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 3,4->2; 1,6,3,7,8->5; 1,6,3,7,8->9; 8->10; +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.qty) following and 4 following ), +win2 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: division by zero (seg0 slice2 rahmaf2-mbp:25432 pid=48136) +-- mvd 6,7,2->5; 9,1,6->8; 9,1,6->10; 9,1,6->11; 9,1,6->12; +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn desc range between 2 following and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +ERROR: ROWS parameter cannot be negative (seg2 slice4 rahmaf2-mbp:25434 pid=48132) +-- mvd 1,4->3; 6,4,2,7->5; 1,4,9->8; 6,4,2,7->10; +-- CORR() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn asc rows between unbounded preceding and floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) preceding ); +ERROR: ROWS parameter cannot be negative (seg2 slice2 rahmaf2-mbp:25434 pid=48132) +-- mvd 1,3,4,5->2; +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win5),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.cn)) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc) preceding and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.vn desc), +win4 as (partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.pn desc), +win5 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn desc); +ERROR: division by zero (seg0 slice6 rahmaf2-mbp:25432 pid=48146) +-- mvd 4,5->3; 1->6; 1,2,5->7; 4,5->8; 10,11->9; 4,5->12; +-- COVAR_POP() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn asc range between unbounded preceding and floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.cn) preceding ); +ERROR: division by zero +-- mvd 3->2; +-- COVAR_POP() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between current row and floor(cf_olap_windowerr_sale.qty) following ); +ERROR: division by zero +-- mvd 5->4; +-- COVAR_POP() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.prc) preceding and floor(cf_olap_windowerr_sale.cn) preceding ); +ERROR: ROWS parameter cannot be negative +-- mvd 3->2; +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.pn asc rows between 3 preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.pn asc rows between 3 preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) following ), +win2 as (order by cf_olap_windowerr_sale.cn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 1,4->3; 1,4->5; 1->6; +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between floor(cf_olap_windowerr_sale.prc) following and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 8->7; 5,8->9; 5,4,3,8->10; 5,4,3,8->11; 5,4,3,8->12; +-- COVAR_POP() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) preceding and floor(cf_olap_windowerr_sale.vn) preceding ); +ERROR: RANGE parameter cannot be negative (seg0 slice3 rahmaf2-mbp:25432 pid=48130) +-- mvd 7,1->6; +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn asc range between floor(cf_olap_windowerr_sale.vn) preceding and 2 preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 1,4->7; 9->8; 9->10; 9->11; 9->12; +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) preceding and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: RANGE parameter cannot be negative (seg0 slice3 rahmaf2-mbp:25432 pid=48130) +-- mvd 5,6,7,1->4; 5,6,7,1->8; 5,6,7,1->9; 11->10; 2->12; +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn asc range between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.prc) following and floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn asc range between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.prc) following and floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc) following ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: RANGE parameter cannot be negative (seg0 slice4 rahmaf2-mbp:25432 pid=48130) +-- mvd 3,4->2; 6,4->5; 3,4->7; 6,4->8; +-- COVAR_POP() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.pn asc range between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) following and unbounded following ); +ERROR: RANGE parameter cannot be negative (seg2 slice3 rahmaf2-mbp:25434 pid=48132) +-- mvd 2,1,4->3; +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.pn desc range between floor(cf_olap_windowerr_sale.prc) following and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: division by zero (seg0 slice3 rahmaf2-mbp:25432 pid=48130) +-- mvd 4,1->3; 2->5; +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc rows between unbounded preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 2,4,5,1->3; 5->6; 1->7; 1->8; 1->9; +-- COVAR_POP() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn asc rows between unbounded preceding and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) following ); +ERROR: ROWS parameter cannot be negative (seg2 slice2 rahmaf2-mbp:25434 pid=48132) +-- mvd 2,7,8,3->6; +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between unbounded preceding and 0 following ), +win2 as (order by cf_olap_windowerr_sale.pn desc), +win3 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative (seg0 slice3 rahmaf2-mbp:25432 pid=48149) +-- mvd 2,4,6,8->7; 8->9; 5,2,1->10; +-- COVAR_POP() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.vn) preceding and floor(cf_olap_windowerr_sale.pn) following ); +ERROR: division by zero (seg2 slice2 rahmaf2-mbp:25434 pid=48132) +-- mvd 6,7,8,4->5; +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between current row and floor(cf_olap_windowerr_sale.vn) following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 6,7->5; 7->8; 7->9; 7->10; +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn desc range between unbounded preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.pn desc); +ERROR: division by zero +-- mvd 7->6; 9->8; +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.qty)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) preceding ), +win2 as (order by cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 3->5; 3->6; 3->7; 3->8; 3->9; 11,2,3,12,13->10; +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) preceding ); +ERROR: ROWS parameter cannot be negative +-- mvd 3,4,5->2; +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.qty) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.qty) preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 4,1->3; 4,1->5; 2,4,7,1->6; 2,4,7,1->8; 1->9; +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn asc rows between current row and floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) following ), +win2 as (order by cf_olap_windowerr_sale.cn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 3,4->2; 3->5; +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn) preceding ), +win2 as (order by cf_olap_windowerr_sale.cn asc); +ERROR: RANGE parameter cannot be negative (seg0 slice4 rahmaf2-mbp:25432 pid=48130) +-- mvd 1,2,6->5; 1->7; +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn asc range between unbounded preceding and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) following ); +ERROR: RANGE parameter cannot be negative (seg0 slice4 rahmaf2-mbp:25432 pid=48130) +-- mvd 3,4,1->2; +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc range between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) preceding and current row ); +ERROR: RANGE parameter cannot be negative (seg0 slice2 rahmaf2-mbp:25432 pid=48130) +-- mvd 3,4,5,6->2; +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.pn)) OVER(partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc range between 3 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc range between 3 preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win4 as (order by cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative (seg2 slice3 rahmaf2-mbp:25434 pid=48138) +-- mvd 4,1->3; 6,4->5; 4,8,1->7; 4,8,1->9; 4,1->10; 2->11; +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.pn/(cf_olap_windowerr_sale.prc+1))) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.vn asc range between floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) preceding and unbounded following ); +ERROR: RANGE parameter cannot be negative (seg2 slice3 rahmaf2-mbp:25434 pid=48132) +-- mvd 6,7,8->5; +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.pn desc range between current row and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) following ); +ERROR: RANGE parameter cannot be negative (seg1 slice2 rahmaf2-mbp:25433 pid=48131) +-- mvd 4,5->3; +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.vn asc range between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) following and 0 following ); +ERROR: RANGE parameter cannot be negative (seg1 slice4 rahmaf2-mbp:25433 pid=48131) +-- mvd 2,3,1->5; +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) preceding ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.vn desc); +ERROR: ROWS parameter cannot be negative (seg1 slice3 rahmaf2-mbp:25433 pid=48137) +-- mvd 1,3,4->2; 6,7->5; 6,7->8; 1,3,4->9; 1,3,4->10; +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between unbounded preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 4,5->3; 1,7,4,8->6; 1,7,4,8->9; 4,5->10; 5->11; 1,7,4,8->12; +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.pn asc rows between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) preceding and 2 preceding ); +ERROR: ROWS parameter cannot be negative (seg0 slice1 rahmaf2-mbp:25432 pid=48130) +-- mvd 5,1,6,7,2->4; +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn)) OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.cn asc); +ERROR: ROWS parameter cannot be negative (seg1 slice3 rahmaf2-mbp:25433 pid=48137) +-- mvd 3,5,6,1->4; 3,5,6,1->7; 3,6,5->8; 3,5,6,1->9; 2->10; +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by cf_olap_windowerr_sale.vn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn asc range between 3 following and 4 following ), +win2 as (order by cf_olap_windowerr_sale.vn desc); +ERROR: division by zero +-- mvd 1->5; 1->6; 1->7; 1->8; +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.vn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) preceding ); +ERROR: ROWS parameter cannot be negative +-- mvd 3,6,1->5; +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn asc rows between unbounded preceding and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 4,5->3; 2->6; +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.cn) preceding and current row ); +ERROR: division by zero +-- mvd 6,1->5; +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn asc range current row ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win4 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn asc); +ERROR: division by zero (seg2 slice2 rahmaf2-mbp:25434 pid=48215) +-- mvd 1,4->3; 1,6,7->5; 4->8; 1,6,4->9; +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.vn desc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn)) OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.vn desc range between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.vn desc range between unbounded preceding and current row ); +ERROR: division by zero (seg2 slice2 rahmaf2-mbp:25434 pid=48132) +-- mvd 1,2,4,5,6->3; 1,2,4,5,6->7; 1,2,4,5,6->8; +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and 3 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and 3 following ), +win2 as (order by cf_olap_windowerr_sale.cn asc); +ERROR: division by zero (seg0 slice3 rahmaf2-mbp:25432 pid=48130) +-- mvd 3,4,5,6->2; 3,4,5,6->7; 3->8; +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.cn desc range between 3 following and 0 following ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 3,6,1,7->5; 6,3->8; 6,3->9; 7->10; 6,3->11; 7->12; +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn asc range between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn) following and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: RANGE parameter cannot be negative (seg0 slice2 rahmaf2-mbp:25432 pid=48143) +-- mvd 5,1,3,6->4; 1,5,8->7; 1,5,8->9; +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.cn)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.pn desc rows between unbounded preceding and 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.pn desc rows between unbounded preceding and 1 preceding ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: ROWS parameter cannot be negative (seg2 slice6 rahmaf2-mbp:25434 pid=48215) +-- mvd 5,2,6->4; 5,2,6->7; 9,5,6->8; 5,9,2,6->10; +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) preceding and floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.prc) preceding ), +win2 as (partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: ROWS parameter cannot be negative (seg2 slice3 rahmaf2-mbp:25434 pid=48151) +-- mvd 6,1,7,8->5; 1,7->9; 1,7->10; 1,7->11; 1,7->12; +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.pn)) OVER(partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.cn) following and 1 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.cn) following and 1 following ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: ROWS parameter cannot be negative (seg1 slice3 rahmaf2-mbp:25433 pid=48131) +-- mvd 3,4->2; 3,4->5; 3,7->6; 3,7->8; 3,7,10->9; +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.pn) following and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win4 as (order by cf_olap_windowerr_sale.pn desc); +ERROR: division by zero +-- mvd 6,1,3,7,8,9->5; 6,3,8,7,9->10; 6,3,8,7,9->11; 8->12; 8->13; 9->14; +-- REGR_AVGY() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range unbounded preceding ); +ERROR: division by zero +-- mvd 3->2; +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range unbounded preceding ), +win2 as (order by cf_olap_windowerr_sale.vn asc), +win3 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn asc); +ERROR: division by zero +-- mvd 2->6; 4->7; 4->8; 2,4->9; 2,4->10; +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.dt +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn desc range 4 preceding ), +win2 as (order by cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win4 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn desc); +ERROR: ROWS parameter cannot be negative (seg2 slice3 rahmaf2-mbp:25434 pid=48132) +-- mvd 6->5; 1->7; 9,6->8; 1->10; 9,12,1,6->11; +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn asc range between unbounded preceding and floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.prc) preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +ERROR: division by zero +-- mvd 4->3; 6,1->5; +-- REGR_AVGY() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn asc range between unbounded preceding and floor(cf_olap_windowerr_sale.qty) following ); +ERROR: division by zero +-- mvd 3->5; +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between unbounded preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn) following ), +win2 as (order by cf_olap_windowerr_sale.pn desc); +ERROR: RANGE parameter cannot be negative +-- mvd 2->7; 2->8; 1->9; +-- REGR_AVGY() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.vn) following and unbounded following ); +ERROR: division by zero +-- mvd 4->3; +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between unbounded preceding and floor(cf_olap_windowerr_sale.prc) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between unbounded preceding and floor(cf_olap_windowerr_sale.prc) following ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.pn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 3->2; 5,6,7,3->4; 3->8; 7,3->9; +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.pn asc rows between floor(cf_olap_windowerr_sale.pn) preceding and 4 preceding ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn desc); +ERROR: ROWS parameter cannot be negative (seg2 slice4 rahmaf2-mbp:25434 pid=48132) +-- mvd 5,1->4; 7,8,1->6; 5,2,8,1->9; 5,1->10; 5,1->11; +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.pn) preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc); +ERROR: division by zero +-- mvd 2,1->4; 1->5; 2,1->6; 8->7; +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between 4 preceding and floor(cf_olap_windowerr_sale.pn) following ); +ERROR: division by zero +-- mvd 8->7; +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.vn) preceding and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 2->5; 2,3->6; +-- REGR_AVGY() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.pn) preceding and floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) preceding ); +ERROR: RANGE parameter cannot be negative (seg1 slice4 rahmaf2-mbp:25433 pid=48131) +-- mvd 5->4; +-- REGR_AVGY() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn asc range between current row and unbounded following ); +ERROR: division by zero (seg0 slice2 rahmaf2-mbp:25432 pid=48130) +-- mvd 7,8,9->6; +-- REGR_AVGY() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.vn) following and floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) following ); +ERROR: division by zero (seg2 slice3 rahmaf2-mbp:25434 pid=48132) +-- mvd 8,1,9->7; +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn asc range between 4 following and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn asc); +ERROR: division by zero (seg2 slice2 rahmaf2-mbp:25434 pid=48132) +-- mvd 3,4,1,5->2; 3,4,1,5->6; 8,3,1->7; 8,3,1->9; 3,4,1,5->10; +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows 2 preceding ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows 2 preceding ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win4 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc); +ERROR: division by zero (seg2 slice7 rahmaf2-mbp:25434 pid=48132) +-- mvd 5,1->4; 5,1->6; 8,1,9->7; 11,1->10; 8,2,9->12; 5,1->13; +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.pn) preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 4,5,2->3; 7,5,4,1->6; 7,5,4,1->8; 4->9; +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.cn desc rows between unbounded preceding and unbounded following ); +ERROR: division by zero (seg1 slice3 rahmaf2-mbp:25433 pid=48131) +-- mvd 3,1,4->2; +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) preceding and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.pn desc), +win3 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc); +ERROR: ROWS parameter cannot be negative (seg2 slice2 rahmaf2-mbp:25434 pid=48132) +-- mvd 3,2,7,8->6; 3,2,7,8->9; 8->10; 2,8->11; +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between current row and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) following ); +ERROR: ROWS parameter cannot be negative (seg2 slice2 rahmaf2-mbp:25434 pid=48132) +-- mvd 1,3,2->4; +-- REGR_COUNT() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn +, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc), +win4 as (order by cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 5,6,1->4; 1->7; 1->8; 10,6,1,2->9; 1->11; +-- REGR_COUNT() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn asc range floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) preceding ); +ERROR: RANGE parameter cannot be negative +-- mvd 2->7; +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by cf_olap_windowerr_sale.cn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.cn desc); +ERROR: division by zero +-- mvd 1->7; 2->8; 2->9; 2->10; 1->11; 1->12; +-- REGR_COUNT() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between unbounded preceding and current row ); +ERROR: division by zero +-- mvd 2->4; +-- REGR_COUNT() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between unbounded preceding and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) following ); +ERROR: RANGE parameter cannot be negative +-- mvd 5->4; +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between 1 following and 3 following ), +win2 as (order by cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 1->3; 5->4; 5->6; +-- REGR_COUNT() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn) following and unbounded following ); +ERROR: division by zero +-- mvd 3->2; +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.qty) following and unbounded following ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.qty) following and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.cn desc); +ERROR: division by zero +-- mvd 2->7; 2->8; 1->9; 2->10; +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between 5 preceding and current row ); +ERROR: division by zero +-- mvd 2->3; +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) preceding and unbounded following ); +ERROR: ROWS parameter cannot be negative +-- mvd 1,5->6; +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between current row and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) following ); +ERROR: ROWS parameter cannot be negative +-- mvd 4->5; +-- REGR_COUNT() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn asc range between unbounded preceding and unbounded following ); +ERROR: division by zero (seg0 slice3 rahmaf2-mbp:25432 pid=48130) +-- mvd 5,1,6->4; +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn)) OVER(order by cf_olap_windowerr_sale.vn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn asc range between current row and current row ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win4 as (order by cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 5,6,1->4; 5,8,6->7; 1->9; 6->10; 6->11; +-- REGR_COUNT() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn asc range between 3 following and unbounded following ); +ERROR: division by zero (seg2 slice2 rahmaf2-mbp:25434 pid=48132) +-- mvd 4,5,6->3; +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.vn desc rows unbounded preceding ), +win2 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.vn desc), +win4 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc), +win5 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: division by zero (seg2 slice4 rahmaf2-mbp:25434 pid=48259) +-- mvd 5,1,6,7->4; 9,7->8; 1->10; 5,7->11; 5->12; +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between unbounded preceding and floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) following ); +ERROR: division by zero (seg0 slice3 rahmaf2-mbp:25432 pid=48130) +-- mvd 6,4,2->5; +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between unbounded preceding and 1 following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: division by zero +-- mvd 4,1,2->3; 6->5; 6->7; 6->8; 6->9; 6->10; +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) preceding and floor(cf_olap_windowerr_sale.vn) preceding ); +ERROR: ROWS parameter cannot be negative (seg1 slice4 rahmaf2-mbp:25433 pid=48131) +-- mvd 5,3->7; +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn asc rows between floor(cf_olap_windowerr_sale.qty) preceding and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.vn) following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 3,4,5->2; 1->6; 3,1,8,4,5->7; 3,1,8,4,5->9; 1->10; 1->11; +-- REGR_INTERCEPT() function with NULL OVER() clause -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (); +ERROR: division by zero +-- mvd 6->6; +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn asc range unbounded preceding ), +win2 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: division by zero +-- mvd 2->3; 5,2->4; 5,2->6; 5,2->7; 5,2->8; +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between current row and unbounded following ); +ERROR: division by zero +-- mvd 3->2; +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) following and floor(cf_olap_windowerr_sale.pn) following ); +ERROR: RANGE parameter cannot be negative +-- mvd 4->7; +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows unbounded preceding ); +ERROR: division by zero +-- mvd 1->5; +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows floor(cf_olap_windowerr_sale.qty) preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn desc), +win4 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.vn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 1->5; 7->6; 7->8; 10,3->9; 1,7->11; +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.vn asc rows current row ); +ERROR: division by zero +-- mvd 3->4; +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.dt +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn asc rows between unbounded preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.cn desc), +win4 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 3->2; 5->4; 5->6; 5->7; 3->8; 3,10->9; +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn asc rows between unbounded preceding and 4 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn asc rows between unbounded preceding and 4 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn asc rows between unbounded preceding and 4 following ), +win2 as (order by cf_olap_windowerr_sale.cn desc); +ERROR: division by zero +-- mvd 5,6->4; 5,6->7; 5,6->8; 5->9; 5->10; 5,6->11; +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.prc) preceding and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.prc) preceding and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) preceding ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.vn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 6->5; 8,9,6,1->7; 8,9,6,1->10; 6->11; 6->12; +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between 1 preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 1->5; 1->6; 4->7; 4->8; 4->9; +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) preceding and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn desc); +ERROR: division by zero +-- mvd 3->2; 1->4; +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) following and floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.cn) following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 3->2; 3->4; 3->5; 3->6; 3->7; +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc range unbounded preceding ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc range unbounded preceding ), +win2 as (order by cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.cn asc); +ERROR: division by zero (seg2 slice2 rahmaf2-mbp:25434 pid=48132) +-- mvd 3,2,5,6->4; 6->7; 3,2,5,6->8; 2->9; 3,2,5,6->10; +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc range between unbounded preceding and floor(cf_olap_windowerr_sale.vn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc range between unbounded preceding and floor(cf_olap_windowerr_sale.vn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc range between unbounded preceding and floor(cf_olap_windowerr_sale.vn) preceding ), +win2 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: division by zero (seg0 slice4 rahmaf2-mbp:25432 pid=48133) +-- mvd 4,3->6; 4,3->7; 4,3->8; 2,3->9; 2,3->10; +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn asc range between floor(cf_olap_windowerr_sale.cn) preceding and current row ); +ERROR: division by zero (seg0 slice2 rahmaf2-mbp:25432 pid=48130) +-- mvd 8,3->7; +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn desc range between current row and current row ); +ERROR: division by zero (seg2 slice2 rahmaf2-mbp:25434 pid=48132) +-- mvd 6,1,3,7->5; +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.vn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc range between current row and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.vn asc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: division by zero +-- mvd 7,3,8,5->6; 8->9; 7,3,8,5->10; 8->11; 5->12; 8->13; +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.pn)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows current row ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn asc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: division by zero (seg1 slice5 rahmaf2-mbp:25433 pid=48131) +-- mvd 4,2->3; 4,6,2->5; 4,2->7; 9,4,10->8; 9,4,10->11; 4->12; +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.prc) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.prc) preceding ), +win2 as (order by cf_olap_windowerr_sale.pn desc), +win3 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win4 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn desc); +ERROR: ROWS parameter cannot be negative (seg0 slice5 rahmaf2-mbp:25432 pid=48277) +-- mvd 4,3,1->7; 1->8; 4,3,1->9; 11->10; 11,4,1->12; 11->13; +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.cn)) OVER(partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc rows between unbounded preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.pn desc); +ERROR: ROWS parameter cannot be negative (seg0 slice4 rahmaf2-mbp:25432 pid=48277) +-- mvd 5,2,3->4; 7,1->6; 3->8; 7,1->9; 5,2,3->10; 5,2,3->11; +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.pn asc); +ERROR: ROWS parameter cannot be negative (seg0 slice4 rahmaf2-mbp:25432 pid=48130) +-- mvd 5,1,2,3,6,7->4; 5,1,2,3,6,7->8; 5,1,2,3,6,7->9; 7->10; +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.qty) following and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) following ); +ERROR: ROWS parameter cannot be negative (seg0 slice3 rahmaf2-mbp:25432 pid=48130) +-- mvd 4,5->3; +-- REGR_R2() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) preceding ); +ERROR: RANGE parameter cannot be negative +-- mvd 4->3; +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range current row ), +win2 as (order by cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: ROWS parameter cannot be negative (seg2 slice3 rahmaf2-mbp:25434 pid=48132) +-- mvd 2->6; 2->7; 2->8; 2,1->9; +-- REGR_R2() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn asc range between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) preceding and 2 preceding ); +ERROR: RANGE parameter cannot be negative +-- mvd 5->4; +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty)) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.pn) preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.vn asc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win4 as (partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: division by zero +-- mvd 5->4; 7->6; 5,9,3->8; 11,1->10; 7->12; +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win5),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.cn) preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.pn desc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win5 as (order by cf_olap_windowerr_sale.cn desc); +ERROR: division by zero +-- mvd 3->2; 5,3,6->4; 8->7; 8->9; 5,3,6->10; 3->11; +-- REGR_R2() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between unbounded preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) preceding ); +ERROR: ROWS parameter cannot be negative +-- mvd 5->4; +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn desc rows between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn desc rows between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn desc rows between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 3,4->2; 3,4->5; 3,4->6; 1->7; 3->8; +-- REGR_R2() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.vn asc rows between floor(cf_olap_windowerr_sale.pn) preceding and unbounded following ); +ERROR: division by zero +-- mvd 3,4->2; +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc rows between 2 preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc rows between 2 preceding and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn desc); +ERROR: division by zero +-- mvd 3,1->2; 3,5,6,1->4; 3,1->7; +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and 0 preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: ROWS parameter cannot be negative (seg2 slice5 rahmaf2-mbp:25434 pid=48132) +-- mvd 4,1,5,6->3; 4,1,5,6->7; 4,1,5,6->8; 4,5,1->9; 5,6,11->10; +-- REGR_R2() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.cn asc range between unbounded preceding and unbounded following ); +ERROR: division by zero (seg2 slice4 rahmaf2-mbp:25434 pid=48132) +-- mvd 5,2,6->4; +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.pn) preceding and floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) preceding ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: RANGE parameter cannot be negative (seg2 slice3 rahmaf2-mbp:25434 pid=48279) +-- mvd 3,2,1,5->4; 2,5->6; +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc range between current row and floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: division by zero (seg0 slice3 rahmaf2-mbp:25432 pid=48149) +-- mvd 5,2->6; 8,9,2->7; +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc range between floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty) following and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: division by zero (seg0 slice2 rahmaf2-mbp:25432 pid=48130) +-- mvd 1,7->6; 1,7->8; 7->9; 7->10; +-- REGR_R2() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.vn asc rows floor(cf_olap_windowerr_sale.vn) preceding ); +ERROR: division by zero (seg0 slice4 rahmaf2-mbp:25432 pid=48130) +-- mvd 3,1,4->2; +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.cn)) OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.cn asc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.cn asc rows current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.pn asc); +ERROR: division by zero (seg0 slice2 rahmaf2-mbp:25432 pid=48130) +-- mvd 1,4,6,3,2->5; 1,4,6,3,2->7; 4->8; 2->9; +-- REGR_R2() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn asc rows between unbounded preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn) preceding ); +ERROR: ROWS parameter cannot be negative (seg0 slice3 rahmaf2-mbp:25432 pid=48130) +-- mvd 6,7,8->5; +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.prc) preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative (seg1 slice2 rahmaf2-mbp:25433 pid=48131) +-- mvd 5,2,6,7->4; 6->8; 6->9; 6->10; +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between 4 preceding and 4 following ); +ERROR: division by zero (seg0 slice2 rahmaf2-mbp:25432 pid=48130) +-- mvd 6,5->7; 6,5->8; +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between 3 preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between 3 preceding and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 3,1,4->2; 3,1,4->5; 4->6; 8,9,4,10->7; 3,1,4->11; 3,1,4->12; +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn desc range unbounded preceding ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn asc), +win3 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 4->3; 6,1,7,4->5; 9,2,1,4->8; 9,2,1,4->10; +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and 4 preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn desc), +win3 as (partition by cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.vn asc); +ERROR: division by zero +-- mvd 3->5; 3,7->6; 3,7->8; 2,1->9; 3,7->10; +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.pn)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between unbounded preceding and 2 following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn asc); +ERROR: division by zero +-- mvd 1->3; 1,5->4; 1,5->6; 1,5->7; 1,5->8; +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.qty)) OVER(order by cf_olap_windowerr_sale.pn asc range between floor(cf_olap_windowerr_sale.vn) following and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) following ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn asc range between floor(cf_olap_windowerr_sale.vn) following and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) following ); +ERROR: RANGE parameter cannot be negative +-- mvd 1->3; 1->4; +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn desc rows floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) preceding ); +ERROR: ROWS parameter cannot be negative +-- mvd 1,4->3; +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows current row ); +ERROR: division by zero +-- mvd 1->6; +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between unbounded preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc); +ERROR: division by zero (seg1 slice4 rahmaf2-mbp:25433 pid=48131) +-- mvd 5->4; 7,8,9,2,5->6; 7,8,9,2,5->10; 9,1,2,5->11; 9,1,2,5->12; +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.dt +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.pn desc rows between 0 preceding and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) preceding ), +win2 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 1,2,4->3; 6,1,2->5; 8,4->7; +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn desc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn desc range current row ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc); +ERROR: division by zero (seg0 slice4 rahmaf2-mbp:25432 pid=48130) +-- mvd 6,3,2,7,1->5; 3,9->8; 6,3,2,7,1->10; 3,9->11; 3,9->12; +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.dt +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn desc range between floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) preceding and 4 preceding ), +win2 as (order by cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win4 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: RANGE parameter cannot be negative (seg0 slice2 rahmaf2-mbp:25432 pid=48130) +-- mvd 1,6,2->5; 1->7; 9->8; 9->10; 12,9,1,6->11; +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn desc range between current row and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) following ); +ERROR: RANGE parameter cannot be negative (seg0 slice2 rahmaf2-mbp:25432 pid=48130) +-- mvd 2->3; +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc range between current row and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc range between current row and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.vn desc); +ERROR: RANGE parameter cannot be negative (seg0 slice4 rahmaf2-mbp:25432 pid=48130) +-- mvd 5,6,7,1->4; 5,6,7,1->8; 6,7,1->9; +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc range between current row and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 4,5,6->3; 8,5,6,2->7; 6->9; +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.pn desc range between 0 following and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.cn asc), +win4 as (order by cf_olap_windowerr_sale.pn asc), +win5 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +ERROR: ROWS parameter cannot be negative (seg2 slice4 rahmaf2-mbp:25434 pid=48276) +-- mvd 1,4->5; 2,3,7,1,8->6; 3->9; 4->10; 3,8,4->11; +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn desc rows unbounded preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: division by zero +-- mvd 1,4,5->3; 1->6; 1->7; 1->8; 1->9; +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.cn) preceding and floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc) preceding ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: ROWS parameter cannot be negative (seg0 slice2 rahmaf2-mbp:25432 pid=48130) +-- mvd 2,1->3; 5,2,1->4; 5,2,1->6; 8->7; +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn desc rows between current row and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) following ), +win2 as (order by cf_olap_windowerr_sale.cn desc); +ERROR: ROWS parameter cannot be negative (seg0 slice2 rahmaf2-mbp:25432 pid=48130) +-- mvd 2,1,5,6,3->4; 2,1,5,6,3->7; 1->8; +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.pn asc rows between 4 following and 2 following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.pn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 4,2,5->3; 7->6; 5->8; 5->9; 5->10; +-- REGR_SXX() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range floor(cf_olap_windowerr_sale.cn) preceding ); +ERROR: division by zero +-- mvd 5->4; +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.cn asc range between 0 following and 3 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between 0 following and 3 following ), +win2 as (order by cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn asc); +ERROR: division by zero +-- mvd 4->3; 4->5; 4->6; 4->7; 9->8; 2,4,1,9->10; +-- REGR_SXX() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.cn asc rows 9 preceding ); +ERROR: division by zero +-- mvd 1,3->2; +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win5),0),'99999999.9999999'),cf_olap_windowerr_sale.prc +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) preceding and 4 preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.pn desc), +win4 as (order by cf_olap_windowerr_sale.cn asc), +win5 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 4->6; 4->7; 4->8; 1->9; 4->10; 12,4,2->11; +-- REGR_SXX() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) preceding and current row ); +ERROR: ROWS parameter cannot be negative +-- mvd 4,5->3; +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) preceding and 2 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) preceding and 2 following ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win4 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 2,1->3; 2,1->4; 6,2,7->5; 2,1->8; 7->9; 1,7->10; +-- REGR_SXX() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.pn asc rows between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.prc) preceding and unbounded following ); +ERROR: ROWS parameter cannot be negative +-- mvd 1->2; +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.qty) preceding and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: division by zero +-- mvd 3,4->2; 4->5; 4->6; 4->7; +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.pn desc rows between current row and current row ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: division by zero +-- mvd 3->2; 1,5,6->4; +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.vn desc rows between current row and floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 2->4; 6,7,2->5; 6,7,2->8; 6,7,2->9; 6,7,2->10; 6,7,2->11; +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.dt +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.pn) following and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win4 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.vn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 4,5->3; 5->6; 5->7; 5->8; 4->9; 11,5->10; +-- REGR_SXX() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn asc range floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) preceding ); +ERROR: RANGE parameter cannot be negative (seg1 slice4 rahmaf2-mbp:25433 pid=48131) +-- mvd 5->6; +-- REGR_SXX() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn asc range between unbounded preceding and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.cn) preceding ); +ERROR: division by zero (seg0 slice5 rahmaf2-mbp:25432 pid=48130) +-- mvd 6,4->5; +-- REGR_SXX() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn asc range between floor(cf_olap_windowerr_sale.qty) preceding and floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) preceding ); +ERROR: division by zero (seg0 slice3 rahmaf2-mbp:25432 pid=48130) +-- mvd 6->5; +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn desc range between 4 preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: division by zero (seg1 slice5 rahmaf2-mbp:25433 pid=48131) +-- mvd 4,1,5->3; 5,7->6; 5,7->8; 1->9; +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty/(cf_olap_windowerr_sale.prc+1)) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc range between 3 following and 1 following ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 5,1,2->4; 5,7,8->6; 5,7,8->9; 8->10; 5,7,8->11; 2->12; +-- REGR_SXX() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows floor(cf_olap_windowerr_sale.cn) preceding ); +ERROR: division by zero (seg1 slice3 rahmaf2-mbp:25433 pid=48131) +-- mvd 4,5,6->3; +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.pn desc rows current row ); +ERROR: division by zero (seg0 slice1 rahmaf2-mbp:25432 pid=48130) +-- mvd 2,5,6->4; 2,5,6->7; +-- REGR_SXX() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) following ); +ERROR: ROWS parameter cannot be negative (seg1 slice3 rahmaf2-mbp:25433 pid=48131) +-- mvd 4,5->3; +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn desc rows between 3 preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win4 as (partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: ROWS parameter cannot be negative (seg2 slice2 rahmaf2-mbp:25434 pid=48135) +-- mvd 4,5,2,1,6->3; 2,5,1,8,6->7; 4,5,2,1,6->9; 2,6->10; 4,2->11; 2,5,1,8,6->12; +-- REGR_SXX() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between current row and 0 following ); +ERROR: division by zero (seg2 slice3 rahmaf2-mbp:25434 pid=48132) +-- mvd 6,7->5; +-- REGR_SXX() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between floor(cf_olap_windowerr_sale.prc) following and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) following ); +ERROR: ROWS parameter cannot be negative (seg0 slice3 rahmaf2-mbp:25432 pid=48130) +-- mvd 3,6,2,4->5; +-- REGR_SXY() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn +, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: division by zero (seg1 slice4 rahmaf2-mbp:25433 pid=48275) +-- mvd 1,4,5->3; 2,4,5->6; 8,2,4->7; 8,2,4->9; +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.cn asc range floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) preceding ), +win2 as (order by cf_olap_windowerr_sale.pn desc); +ERROR: RANGE parameter cannot be negative +-- mvd 5->4; 5->6; 5->7; 3->8; +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.cn asc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 5->4; 5->6; 5->7; 5->8; 2->9; 5,2,11->10; +-- REGR_SXY() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) preceding and floor(cf_olap_windowerr_sale.prc) preceding ); +ERROR: RANGE parameter cannot be negative +-- mvd 5->6; +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between current row and floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.prc) following ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.cn asc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win5 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: ROWS parameter cannot be negative +-- mvd 6->5; 6,8,9->7; 6,8,9->10; 6->11; 6->12; 6->13; +-- REGR_SXY() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn desc rows unbounded preceding ); +ERROR: division by zero +-- mvd 3->2; +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.pn desc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.pn desc rows unbounded preceding ), +win2 as (order by cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.cn desc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: division by zero +-- mvd 3,5->4; 3->6; 8->7; 3,5->9; 8->10; 3->11; +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win5),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn asc rows 3 preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win3 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.vn desc), +win4 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win5 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 4,1->5; 3->6; 4,1,3->7; 9,4,1,3->8; 4,3->10; 4,1->11; +-- REGR_SXY() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn desc rows between unbounded preceding and current row ); +ERROR: division by zero +-- mvd 3,1->4; +-- REGR_SXY() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn desc rows between current row and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) following ); +ERROR: ROWS parameter cannot be negative +-- mvd 2,1,5->4; +-- REGR_SXY() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn asc range unbounded preceding ); +ERROR: division by zero (seg0 slice3 rahmaf2-mbp:25432 pid=48130) +-- mvd 7->6; +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc range 1 preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win4 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 1,5,6->4; 5,2->7; 5,2->8; 6->9; 6->10; 2->11; +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.pn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.pn asc); +ERROR: ROWS parameter cannot be negative (seg1 slice4 rahmaf2-mbp:25433 pid=48150) +-- mvd 5,1->4; 1,7,2,8->6; 5,8->9; 5,8->10; +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty)) OVER(order by cf_olap_windowerr_sale.pn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.pn desc range between floor(cf_olap_windowerr_sale.cn) preceding and 1 following ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn asc), +win4 as (order by cf_olap_windowerr_sale.pn asc); +ERROR: division by zero (seg0 slice5 rahmaf2-mbp:25432 pid=48130) +-- mvd 3,1,5->4; 7,3,1->6; 2,3,1,9,5->8; 2,3,1,9,5->10; 5->11; 5->12; +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.pn desc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.pn desc range between current row and current row ), +win2 as (order by cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: division by zero (seg0 slice5 rahmaf2-mbp:25432 pid=48130) +-- mvd 6,7->5; 6,7->8; 7->9; 7->10; 2->11; +-- REGR_SXY() function with partition by and order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.pn desc range between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) following and floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.prc) following ); +ERROR: RANGE parameter cannot be negative (seg0 slice4 rahmaf2-mbp:25432 pid=48130) +-- mvd 2,1->5; +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn desc rows current row ), +win2 as (partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win3 as (order by cf_olap_windowerr_sale.cn desc); +ERROR: division by zero (seg1 slice3 rahmaf2-mbp:25433 pid=48131) +-- mvd 6,7,8->5; 6,7,8->9; 8,1->10; 8,1->11; 7->12; 6,7,8->13; +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.cn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.vn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) preceding ), +win2 as (partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win3 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn desc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: ROWS parameter cannot be negative (seg1 slice3 rahmaf2-mbp:25433 pid=48278) +-- mvd 1,3,4->2; 6,4->5; 6,4->7; 6,9->8; 9->10; 6,9->11; +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.cn)) OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between current row and current row ); +ERROR: division by zero (seg0 slice2 rahmaf2-mbp:25432 pid=48130) +-- mvd 4,1->3; 4,1->5; 4,1->6; 4,1->7; +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn asc range between unbounded preceding and 0 preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.vn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 7->6; 7->8; 7->9; 7->10; 4->11; +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn desc range between floor(cf_olap_windowerr_sale.prc) preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +ERROR: ROWS parameter cannot be negative (seg2 slice4 rahmaf2-mbp:25434 pid=48132) +-- mvd 1->4; 6,1->5; 6,1->7; 6,1->8; 3->9; +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between current row and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win4 as (order by cf_olap_windowerr_sale.cn desc); +ERROR: division by zero +-- mvd 2->7; 2->8; 2,5,1->9; 2->10; 2,5,1->11; +-- REGR_SYY() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between current row and unbounded following ); +ERROR: division by zero +-- mvd 4->3; +-- REGR_SYY() function with ONLY order by having range based framing clause -- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn asc range between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) following and floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.pn) following ); +ERROR: division by zero +-- mvd 3->5; +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn asc range between 1 following and floor(cf_olap_windowerr_sale.qty) following ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.vn asc); +ERROR: division by zero +-- mvd 1->4; 1->5; 7,1,8->6; +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.vn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.vn) preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: division by zero +-- mvd 3,1->6; 3,1->7; 1->8; +-- REGR_SYY() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn asc rows between floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) preceding and 8 following ); +ERROR: division by zero (seg0 slice2 rahmaf2-mbp:25432 pid=48130) +-- mvd 1,3->2; +-- REGR_SYY() function with ONLY order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) preceding and unbounded following ); +ERROR: ROWS parameter cannot be negative +-- mvd 4->3; +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.cn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between current row and 1 following ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc); +ERROR: division by zero +-- mvd 3->7; 3,2,9->8; 3,2,9->10; 12->11; 3->13; 12->14; +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn/(cf_olap_windowerr_sale.prc+1)) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn desc range unbounded preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +ERROR: ROWS parameter cannot be negative +-- mvd 2,6->5; 1->7; 1->8; 1,2->9; 1->10; 1,2->11; +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and 3 following ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and 3 following ); +ERROR: division by zero (seg0 slice2 rahmaf2-mbp:25432 pid=48130) +-- mvd 3,6,7->5; 3,6,7->8; +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn asc range between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) preceding and 1 following ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +ERROR: RANGE parameter cannot be negative (seg2 slice3 rahmaf2-mbp:25434 pid=48132) +-- mvd 1,4,5,2->3; 4,1,5,7,2->6; 4,1,5,7,2->8; +-- REGR_SYY() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between unbounded preceding and unbounded following ); +ERROR: division by zero (seg0 slice2 rahmaf2-mbp:25432 pid=48130) +-- mvd 7,8->6; +-- REGR_SYY() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between 8 preceding and current row ); +ERROR: division by zero (seg0 slice1 rahmaf2-mbp:25432 pid=48130) +-- mvd 4,1,5,6->3; +-- REGR_SYY() function with partition by and order by having rows based framing clause -- +SELECT cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn) preceding and unbounded following ); +ERROR: ROWS parameter cannot be negative (seg0 slice2 rahmaf2-mbp:25432 pid=48130) +-- mvd 3,4,1->2; +-- start_ignore +CREATE TABLE filter_test (i int, j int) DISTRIBUTED BY (i); +INSERT INTO filter_test VALUES (1, 1); +INSERT INTO filter_test VALUES (2, 1); +INSERT INTO filter_test VALUES (3, 1); +INSERT INTO filter_test VALUES (4, 2); +INSERT INTO filter_test VALUES (NULL, 2); +INSERT INTO filter_test VALUES (6, 2); +INSERT INTO filter_test VALUES (7, 3); +INSERT INTO filter_test VALUES (8, NULL); +INSERT INTO filter_test VALUES (9, 3); +INSERT INTO filter_test VALUES (10, NULL); +-- end_ignore +select j, i, ntile(j) over (partition by j order by i) FROM filter_test; +ERROR: argument value out of range (seg1 slice2 rahmaf2-mbp:25433 pid=48131) +SELECT ntile(-1) over (order by i) FROM filter_test; +ERROR: argument value out of range +HINT: NTILE expects a positive integer argument. +SELECT ntile(0) over (order by i) FROM filter_test; +ERROR: argument value out of range +HINT: NTILE expects a positive integer argument. +SELECT ntile(0) over (order by i) FROM filter_test; +ERROR: argument value out of range +HINT: NTILE expects a positive integer argument. +-- start_ignore +DROP TABLE filter_test; +-- +-- STANDARD DATA FOR olap_* TESTS. +-- +drop table cf_olap_windowerr_customer; +drop table cf_olap_windowerr_vendor; +drop table cf_olap_windowerr_product; +drop table cf_olap_windowerr_sale; +drop table cf_olap_windowerr_sale_ord; +drop table cf_olap_windowerr_util; +-- end_ignore diff --git a/src/test/regress/greenplum_schedule b/src/test/regress/greenplum_schedule index baa005c0470be710f44cf94292011274aff96f84..0af581d329c0b26f8cefdbf20705ce748fd29181 100755 --- a/src/test/regress/greenplum_schedule +++ b/src/test/regress/greenplum_schedule @@ -83,6 +83,8 @@ test: nested_case_null test: bfv_cte bfv_joins bfv_statistic bfv_subquery bfv_planner bfv_legacy +test: cf_executor cf_olap_windowerr cf_olap_window + ignore: tpch500GB_orca # XXX: This test depends on libgpoptudfs library, which includes ORCA helper diff --git a/src/test/regress/sql/cf_executor.sql b/src/test/regress/sql/cf_executor.sql new file mode 100644 index 0000000000000000000000000000000000000000..38d6c06ee929b79aa3cee0b409e750cee6b3390c --- /dev/null +++ b/src/test/regress/sql/cf_executor.sql @@ -0,0 +1,31 @@ +--start_ignore +drop table if exists cf_executor_test; +create table cf_executor_test (a integer); +insert into cf_executor_test select a from generate_series(1,100) a; +set log_min_messages=debug5; +--end_ignore + +set debug_print_slice_table=on; +select count(*) from cf_executor_test; + +--FOR UPDATE/FOR SHARE +select * from cf_executor_test order by a limit 1 for update; +select * from cf_executor_test order by a limit 1 for share; + +--returning clause +insert into cf_executor_test values (1) returning *; + +--start_ignore +drop table cf_executor_test; +create table cf_executor_test (a integer); +insert into cf_executor_test select a from generate_series(1,5) a; +--end_ignore + +select * from cf_executor_test limit null; +select * from cf_executor_test limit 0; + +--start_ignore +reset log_min_messages; +reset debug_print_slice_table; +drop table cf_executor_test; +--end_ignore \ No newline at end of file diff --git a/src/test/regress/sql/cf_olap_window.sql b/src/test/regress/sql/cf_olap_window.sql new file mode 100644 index 0000000000000000000000000000000000000000..97e4686bc2509ea8f7a90e9434cb082ee20a8ced --- /dev/null +++ b/src/test/regress/sql/cf_olap_window.sql @@ -0,0 +1,24049 @@ +-- +-- STANDARD DATA FOR olap_* TESTS. +-- + +-- start_ignore +-- count number of certain operators in a given plan +create language plpythonu; +create or replace function ow_count_operator(explain_query text, operator text) returns int as +$$ +rv = plpy.execute(explain_query) +search_text = operator +result = 0 +for i in range(len(rv)): + cur_line = rv[i]['QUERY PLAN'] + if search_text.lower() in cur_line.lower(): + result = result+1 +return result +$$ +language plpythonu; + +drop table ow_customer; +drop table ow_vendor; +drop table ow_product; +drop table ow_sale; +drop table ow_sale_ord; +drop table ow_util; + +create table ow_customer +( + cn int not null, + cname text not null, + cloc text, + + primary key (cn) + +) distributed by (cn); + +create table ow_vendor +( + vn int not null, + vname text not null, + vloc text, + + primary key (vn) + +) distributed by (vn); + +create table ow_product +( + pn int not null, + pname text not null, + pcolor text, + + primary key (pn) + +) distributed by (pn); + +create table ow_sale +( + cn int not null, + vn int not null, + pn int not null, + dt date not null, + qty int not null, + prc float not null, + + primary key (cn, vn, pn) + +) distributed by (cn,vn,pn); + +create table ow_sale_ord +( + ord int not null, + cn int not null, + vn int not null, + pn int not null, + dt date not null, + qty int not null, + prc float not null, + + primary key (cn, vn, pn) + +) distributed by (cn,vn,pn); + +create table ow_util +( + xn int not null, + + primary key (xn) + +) distributed by (xn); + +-- Customers +insert into ow_customer values + ( 1, 'Macbeth', 'Inverness'), + ( 2, 'Duncan', 'Forres'), + ( 3, 'Lady Macbeth', 'Inverness'), + ( 4, 'Witches, Inc', 'Lonely Heath'); + +-- Vendors +insert into ow_vendor values + ( 10, 'Witches, Inc', 'Lonely Heath'), + ( 20, 'Lady Macbeth', 'Inverness'), + ( 30, 'Duncan', 'Forres'), + ( 40, 'Macbeth', 'Inverness'), + ( 50, 'Macduff', 'Fife'); + +-- Products +insert into ow_product values + ( 100, 'Sword', 'Black'), + ( 200, 'Dream', 'Black'), + ( 300, 'Castle', 'Grey'), + ( 400, 'Justice', 'Clear'), + ( 500, 'Donuts', 'Plain'), + ( 600, 'Donuts', 'Chocolate'), + ( 700, 'Hamburger', 'Grey'), + ( 800, 'Fries', 'Grey'); + + +-- Sales (transactions) +insert into ow_sale values + ( 2, 40, 100, '1401-1-1', 1100, 2400), + ( 1, 10, 200, '1401-3-1', 1, 0), + ( 3, 40, 200, '1401-4-1', 1, 0), + ( 1, 20, 100, '1401-5-1', 1, 0), + ( 1, 30, 300, '1401-5-2', 1, 0), + ( 1, 50, 400, '1401-6-1', 1, 0), + ( 2, 50, 400, '1401-6-1', 1, 0), + ( 1, 30, 500, '1401-6-1', 12, 5), + ( 3, 30, 500, '1401-6-1', 12, 5), + ( 3, 30, 600, '1401-6-1', 12, 5), + ( 4, 40, 700, '1401-6-1', 1, 1), + ( 4, 40, 800, '1401-6-1', 1, 1); + +-- Sales (ord transactions) +insert into ow_sale_ord values + ( 1,2, 40, 100, '1401-1-1', 1100, 2400), + ( 2,1, 10, 200, '1401-3-1', 1, 0), + ( 3,3, 40, 200, '1401-4-1', 1, 0), + ( 4,1, 20, 100, '1401-5-1', 1, 0), + ( 5,1, 30, 300, '1401-5-2', 1, 0), + ( 6,1, 50, 400, '1401-6-1', 1, 0), + ( 7,2, 50, 400, '1401-6-1', 1, 0), + ( 8,1, 30, 500, '1401-6-1', 12, 5), + ( 9,3, 30, 500, '1401-6-1', 12, 5), + ( 10,3, 30, 600, '1401-6-1', 12, 5), + ( 11,4, 40, 700, '1401-6-1', 1, 1), + ( 12,4, 40, 800, '1401-6-1', 1, 1); + +-- ow_util + +insert into ow_util values + (1), + (20), + (300); + +-- end_ignore + +set datestyle="ISO, MDY"; + +-- ROW_NUMBER() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc); -- mvd 2->4; + +-- ROW_NUMBER() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'),ow_sale.vn +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.pn desc,ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.pn desc,ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc,ow_sale.vn desc); -- mvd 6,2->5; 6,2->7; 6,2->8; 6,2->9; + +-- ROW_NUMBER() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.pn desc); -- mvd 4,1,5,2->3; + +-- ROW_NUMBER() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.vn order by ow_sale.pn desc,ow_sale.vn desc,ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.vn order by ow_sale.pn desc,ow_sale.vn desc,ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.vn order by ow_sale.pn desc,ow_sale.vn desc,ow_sale.vn asc); -- mvd 2,7,3,8->6; 2,7,3,8->9; 2,7,3,8->10; 2,7,3,8->11; 2,7,3,8->12; 2,7,3,8->13; + +-- DENSE_RANK() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc,ow_sale.cn asc); -- mvd 2,5->4; + +-- DENSE_RANK() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc); -- mvd 2->4; 2->5; 2->6; 2->7; 2->8; + +-- DENSE_RANK() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.pn order by ow_sale.cn desc,ow_sale.cn asc); -- mvd 4,5,6,1->3; + +-- DENSE_RANK() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn desc); -- mvd 3,4,5,1->2; 3,4,5,1->6; 3,4,5,1->7; 3,4,5,1->8; 3,4,5,1->9; 3,4,5,1->10; + +-- RANK() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(RANK() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc); -- mvd 1->5; + +-- RANK() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(RANK() OVER(win1),0),'99999999.9999999'),ow_sale.cn +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc,ow_sale.cn desc); -- mvd 5->4; 5->6; + +-- RANK() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(RANK() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.pn desc,ow_sale.vn desc); -- mvd 2,1,3->4; + +-- RANK() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(RANK() OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.dt order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.dt order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn asc); -- mvd 3,6->7; 3,6->8; 3,6->9; 3,6->10; + +-- CUME_DIST() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc,ow_sale.vn asc); -- mvd 5,3->4; + +-- CUME_DIST() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc,ow_sale.cn desc); -- mvd 1->3; 1->4; + +-- CUME_DIST() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.dt order by ow_sale.cn desc,ow_sale.cn asc); -- mvd 3,4->2; + +-- CUME_DIST() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.pn +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.dt order by ow_sale.vn desc); -- mvd 3,4,5,1,6->2; 3,4,5,1,6->7; + +-- PERCENT_RANK() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc,ow_sale.vn desc); -- mvd 7->6; + +-- PERCENT_RANK() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc); -- mvd 1->2; 1->3; 1->4; 1->5; + +-- PERCENT_RANK() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc,ow_sale.vn,ow_sale.dt order by ow_sale.cn asc); -- mvd 1,3,4,5->2; + +-- PERCENT_RANK() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999'),ow_sale.pn +, +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.qty,ow_sale.qty,ow_sale.dt order by ow_sale.cn desc,ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.dt order by ow_sale.cn desc,ow_sale.pn desc); -- mvd 1,4,2,8->7; 1,4,2,8->9; + +-- LAG() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn+ow_sale.prc) as int),NULL) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc); -- mvd 7,4->6; + +-- LAG() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc), +win2 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn desc); -- mvd 3->5; 3->6; 3->7; 3->8; 10,3->9; + +-- LAG() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc); -- mvd 2,4->3; + +-- LAG() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn-ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win1),0),'99999999.9999999'),ow_sale.vn +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,1->2; 3,1->4; 3,1->5; 3,1->6; 3,1->7; + +-- LEAD() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty*ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.prc) as int),cast (floor(ow_sale.vn-ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 5,3->6; 3->7; 3->8; 5,3->9; 3->10; + +-- LEAD() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.pn asc); -- mvd 5,1->4; + +-- LEAD() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn/ow_sale.qty) as int),NULL) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc), +win2 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 2,4,5->3; 2,4,5->6; 4->7; + +-- COUNT() function with NULL OVER() clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (); -- mvd 7->7; + +-- COUNT() function with NULL OVER() clause in combination with other window functions -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (), +win2 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.dt order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 4->4; 1,2,6,7->5; 9->8; + +-- COUNT() function with OVER() clause having ONLY PARTITION BY -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.prc); -- mvd 4,6,7->5; + +-- COUNT() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn), +win2 as (partition by ow_sale.pn order by ow_sale.cn asc); -- mvd 2,3->5; 4,3->6; + +-- COUNT() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc,ow_sale.vn asc); -- mvd 1,5->4; + +-- COUNT() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.vn asc,ow_sale.cn desc,ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc,ow_sale.cn desc,ow_sale.pn desc); -- mvd 1,2,3->5; 1,2,3->6; + +-- COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range unbounded preceding ); -- mvd 1->5; + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn/ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range unbounded preceding ), +win2 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.pn desc), +win4 as (order by ow_sale.pn desc); -- mvd 4->3; 1,6->5; 4->7; 4->8; + +-- COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range floor(ow_sale.qty) preceding ); -- mvd 1->5; + +-- COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ); -- mvd 1->4; + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ), +win2 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.qty order by ow_sale.pn desc); -- mvd 4->3; 6,7,4,8,2->5; 6,7,4,8,2->9; + +-- COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and 2 preceding ); -- mvd 2->3; + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and floor(ow_sale.vn/ow_sale.pn) preceding ), +win2 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.pn order by ow_sale.vn asc); -- mvd 3->2; 1,5,6,3->4; + +-- COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and current row ); -- mvd 5->4; + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn/ow_sale.vn) as int),cast (floor(ow_sale.vn+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and current row ), +win2 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 1->4; 6,1->5; 6,1->7; 9->8; 6,1->10; + +-- COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.prc+ow_sale.qty) following ); -- mvd 6->5; + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn-ow_sale.qty)) OVER(order by ow_sale.cn desc range between unbounded preceding and 0 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and 0 following ); -- mvd 3->2; 3->4; + +-- COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 1->5; + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty+ow_sale.qty) as int),cast (floor(ow_sale.vn+ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.cn desc), +win3 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.cn desc), +win4 as (order by ow_sale.ord, ow_sale.vn asc), +win5 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 2->4; 2,6,7,3->5; 2,6,7->8; 7->9; 2,6->10; + +-- COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 1 preceding and floor(ow_sale.vn) preceding ); -- mvd 4->3; + +-- COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 4 preceding and current row ); -- mvd 7->6; + +-- COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 3 preceding and floor(ow_sale.pn) following ); -- mvd 2->3; + +-- COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between floor(ow_sale.qty+ow_sale.vn) preceding and unbounded following ); -- mvd 1->2; + +-- COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and current row ); -- mvd 3->2; + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and current row ), +win2 as (order by ow_sale.cn asc); -- mvd 2->4; 6->5; 6->7; 6->8; + +-- COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and 4 following ); -- mvd 5->6; + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and 2 following ), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 4->3; 4->5; + +-- COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and unbounded following ); -- mvd 5->4; + +-- COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 1 following and floor(ow_sale.prc) following ); -- mvd 3->4; + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 0 following and 1 following ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.vn order by ow_sale.vn desc); -- mvd 4->3; 6->5; 4->7; + +-- COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.cn+ow_sale.prc) following and unbounded following ); -- mvd 3->4; + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 3 following and unbounded following ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.cn order by ow_sale.cn asc); -- mvd 1->4; 1->5; 2,3,7->6; 1->8; + +-- COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows unbounded preceding ); -- mvd 1->3; + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc rows unbounded preceding ), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.vn order by ow_sale.cn asc); -- mvd 3->5; 7,8,3,2,4->6; + +-- COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows floor(ow_sale.pn) preceding ); -- mvd 4->3; + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty-ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn+ow_sale.qty) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows 1 preceding ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.cn asc), +win4 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc), +win5 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc); -- mvd 3->6; 2,8,1,3->7; 1->9; 1,11,12,3->10; 1,3->13; + +-- COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows current row ); -- mvd 1->4; + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.prc) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.pn) as int),cast (floor(ow_sale.cn*ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows current row ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.dt order by ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 7->6; 9,3->8; 4,7,9->10; 7->11; 9,3->12; 7->13; + +-- COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and floor(ow_sale.pn+ow_sale.qty) preceding ); -- mvd 2->4; + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between unbounded preceding and floor(ow_sale.prc+ow_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between unbounded preceding and floor(ow_sale.prc+ow_sale.pn) preceding ); -- mvd 3,5->4; 3,5->6; 3,5->7; + +-- COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and current row ); -- mvd 4->5; + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.pn desc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.pn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.pn desc); -- mvd 6,4,3->5; 6,4,3->7; 2,3->8; + +-- COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.cn desc rows between unbounded preceding and 3 following ); -- mvd 1->6; + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 1 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 1 following ); -- mvd 1->2; 1->3; + +-- COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc,ow_sale.pn asc rows between unbounded preceding and unbounded following ); -- mvd 3,5->4; + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc,ow_sale.cn desc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.pn order by ow_sale.pn asc); -- mvd 3,4->2; 3->5; 3->6; 8,1->7; + +-- COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows between 0 preceding and 2 preceding ); -- mvd 6,4->5; + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.pn) as int),cast (floor(ow_sale.cn/ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between 1 preceding and 1 preceding ), +win2 as (partition by ow_sale.pn order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc), +win4 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->5; 2->6; 4->7; 4,3->8; + +-- COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between 3 preceding and current row ); -- mvd 4->3; + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.pn desc rows between 2 preceding and current row ), +win2 as (order by ow_sale.pn desc); -- mvd 3,6->5; 6->7; 3,6->8; 6->9; + +-- COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between 8 preceding and floor(ow_sale.prc+ow_sale.vn) following ); -- mvd 2->5; + +-- COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between 7 preceding and unbounded following ); -- mvd 1->2; + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 3 preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 5->4; 5->6; + +-- COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc/ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between current row and current row ); -- mvd 3,2->5; + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between current row and current row ); -- mvd 5->4; 5->6; + +-- COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between current row and 8 following ); -- mvd 4,1->3; + +-- COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ); -- mvd 3->5; + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.vn asc); -- mvd 1->4; 3->5; 3->6; + +-- COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 1 following and 2 following ); -- mvd 5->4; + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows between 3 following and 1 following ), +win2 as (order by ow_sale.cn asc); -- mvd 4->3; 6->5; + +-- COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.cn) following and unbounded following ); -- mvd 4->3; + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc rows between floor(ow_sale.qty) following and unbounded following ), +win2 as (partition by ow_sale.qty order by ow_sale.cn asc); -- mvd 4,5->3; 2,7->6; + +-- COUNT() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.vn asc,ow_sale.cn desc); -- mvd 3,4,1,5->2; + +-- COUNT() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty order by ow_sale.cn asc); -- mvd 2,4,5->3; 2,4,5->6; 2,4,5->7; + +-- COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.pn asc range unbounded preceding ); -- mvd 2,5->4; + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.cn order by ow_sale.vn desc range unbounded preceding ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.prc order by ow_sale.cn desc); -- mvd 1,4,5,6->3; 8,1,4->7; + +-- COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.qty order by ow_sale.cn asc range floor(ow_sale.prc/ow_sale.cn) preceding ); -- mvd 1,4,5,6->3; + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.qty,ow_sale.prc,ow_sale.pn order by ow_sale.cn asc range 1 preceding ), +win2 as (order by ow_sale.pn desc); -- mvd 2,4,5,6,7->3; 7->8; + +-- COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.pn asc range current row ); -- mvd 1,2,7->6; + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.vn asc range current row ), +win2 as (order by ow_sale.pn desc); -- mvd 4,5->3; 7->6; + +-- COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.qty order by ow_sale.pn asc range between unbounded preceding and 0 preceding ); -- mvd 2,1,7,5->6; + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.vn desc range between unbounded preceding and 4 preceding ), +win2 as (order by ow_sale.cn asc); -- mvd 3,4->2; 6->5; + +-- COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.pn desc range between unbounded preceding and current row ); -- mvd 2,5,1,6->4; + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.pn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.vn asc); -- mvd 3,4,1->2; 4->5; + +-- COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.vn order by ow_sale.cn desc range between unbounded preceding and 3 following ); -- mvd 6,1,3,2,7->5; + +-- COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.vn order by ow_sale.pn desc range between unbounded preceding and unbounded following ); -- mvd 1,4,5,2,6->3; + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.vn asc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.pn desc), +win4 as (order by ow_sale.cn desc); -- mvd 4,1,3->7; 1->8; 5->9; 1->10; 1->11; 1->12; + +-- COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.prc,ow_sale.pn order by ow_sale.vn asc range between floor(ow_sale.cn) preceding and 4 preceding ); -- mvd 7,1,8,2->6; + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc order by ow_sale.cn asc range between 0 preceding and 0 preceding ), +win2 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 6,3->5; 1,8->7; 1,8->9; 3->10; + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.cn desc range between 4 preceding and current row ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc); -- mvd 2,1->3; 2->4; 6,2,7,1->5; 2->8; + +-- COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc range between floor(ow_sale.pn+ow_sale.pn) preceding and floor(ow_sale.qty) following ); -- mvd 6,7,1->5; + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.qty order by ow_sale.vn asc range between 3 preceding and 0 following ), +win2 as (partition by ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc); -- mvd 1,3,7->6; 9,3->8; + +-- COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.qty,ow_sale.pn order by ow_sale.vn asc range between 3 preceding and unbounded following ); -- mvd 7,8,2,1->6; + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn*ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.vn order by ow_sale.cn asc range between 0 preceding and unbounded following ), +win2 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.vn desc); -- mvd 3,4,1->2; 3,6,1,7->5; 4->8; + +-- COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.vn asc range between current row and current row ); -- mvd 3,4,1->2; + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc/ow_sale.qty) as int),cast (floor(ow_sale.qty*ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn-ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc range between current row and current row ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.pn asc), +win4 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc); -- mvd 3,5,1->6; 2->7; 2->8; 2->9; 3,5,4,2->10; + +-- COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.pn desc range between current row and floor(ow_sale.vn) following ); -- mvd 3,5,2,1->4; + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc/ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc range between current row and 0 following ), +win2 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.vn asc), +win3 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc); -- mvd 4,2,5->3; 2,5->6; 4,5,8->7; 2,5->9; + +-- COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc order by ow_sale.vn asc range between current row and unbounded following ); -- mvd 5,6->4; + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.prc,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn desc range between current row and unbounded following ), +win2 as (order by ow_sale.pn asc); -- mvd 1,7->6; 9->8; 9->10; 9->11; + +-- COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn asc range between 3 following and floor(ow_sale.cn+ow_sale.vn) following ); -- mvd 2,1->7; + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.prc+ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn/ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.cn,ow_sale.dt order by ow_sale.pn desc range between floor(ow_sale.qty+ow_sale.prc) following and 4 following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 1,6,7,2,8->5; 7->9; 7->10; 8->11; + +-- COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.dt order by ow_sale.cn desc range between 3 following and unbounded following ); -- mvd 6,2,7,8->5; + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.pn asc range between 1 following and unbounded following ), +win2 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc), +win4 as (partition by ow_sale.pn order by ow_sale.cn asc); -- mvd 3,4,5->2; 7,4,1,5->6; 7,4,1,5->8; 4->9; 4->10; 7,5->11; + +-- COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows unbounded preceding ); -- mvd 8,2,9,1,10->7; + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows unbounded preceding ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.pn order by ow_sale.pn desc); -- mvd 4,5,1->3; 4,5,7->6; + +-- COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.cn desc rows 9 preceding ); -- mvd 4,5,2->3; + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.pn asc rows floor(ow_sale.prc) preceding ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.cn order by ow_sale.pn asc), +win4 as (order by ow_sale.vn desc); -- mvd 6,7,8,1->5; 8->9; 7,1->10; 8->11; + +-- COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn desc rows current row ); -- mvd 2,4->6; + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn-ow_sale.pn) as int),cast (floor(ow_sale.qty/ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc,ow_sale.pn asc rows current row ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 6,1,4,7,3->5; 3->8; 3->9; 3->10; 7->11; + +-- COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between unbounded preceding and 1 preceding ); -- mvd 2,6,7,8->5; + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and 1 preceding ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.vn order by ow_sale.vn desc); -- mvd 1,5,2,3->4; 1->6; 2->7; 2->8; 1->9; + +-- COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.pn asc rows between unbounded preceding and current row ); -- mvd 1,3,4->2; + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.cn asc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.cn asc); -- mvd 4,1,5->3; 4->6; + +-- COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.cn) following ); -- mvd 6,1->5; + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.pn/ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and 0 following ), +win2 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.vn asc); -- mvd 1,2->4; 1,3->5; 3->6; + +-- COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc rows between unbounded preceding and unbounded following ); -- mvd 3,1->2; + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc); -- mvd 2,6,1->5; 8,9,2,6->7; 8,9,2,6->10; 8,9,2,6->11; + +-- COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows between 4 preceding and floor(ow_sale.prc) preceding ); -- mvd 5,3,1->4; + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc rows between 2 preceding and 0 preceding ), +win2 as (order by ow_sale.pn asc); -- mvd 5,7,2,4,3->6; 3->8; + +-- COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc,ow_sale.cn asc rows between 8 preceding and current row ); -- mvd 4,5,6,2->3; + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty/ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty*ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.vn desc rows between 2 preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.cn asc), +win4 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc); -- mvd 4,5,1,6,7->3; 5->8; 5,1->9; 5,1->10; 1,7->11; + +-- COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.cn desc rows between 2 preceding and floor(ow_sale.qty+ow_sale.qty) following ); -- mvd 2,3,5,6,1->4; + +-- COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc rows between 0 preceding and unbounded following ); -- mvd 2,3,5->4; + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.pn asc rows between 1 preceding and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.vn order by ow_sale.pn desc); -- mvd 5,6,7->4; 5,3,1,7->8; + +-- COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.pn asc rows between current row and current row ); -- mvd 8,2->7; + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn-ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.vn desc rows between current row and current row ), +win2 as (partition by ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc), +win3 as (order by ow_sale.cn desc); -- mvd 5,7,1->6; 9,5,7->8; 5->10; 9,5,7->11; + +-- COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.vn asc rows between current row and 7 following ); -- mvd 3,1,4->2; + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty/ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between current row and floor(ow_sale.pn-ow_sale.vn) following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,4,5->2; 3->6; 3->7; 3->8; 3->9; + +-- COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc rows between current row and unbounded following ); -- mvd 4,5,6,2->3; + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.qty order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ), +win2 as (partition by ow_sale.qty order by ow_sale.vn asc), +win3 as (partition by ow_sale.prc order by ow_sale.vn desc); -- mvd 5,6,1->4; 6,5->7; 6,5->8; 10,6->9; 10,6->11; 5,6,1->12; + +-- COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.vn+ow_sale.cn) following and 5 following ); -- mvd 6,7->5; + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc/ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.pn desc rows between 4 following and 4 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.prc) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.pn desc rows between 4 following and 4 following ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc), +win3 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.pn desc), +win4 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.cn desc), +win5 as (order by ow_sale.cn desc); -- mvd 1,3,4,5,6->2; 1,3,4,5,6->7; 3,5,6->8; 6->9; 4,3,5,6->10; 4->11; + +-- COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.pn*ow_sale.prc) following and unbounded following ); -- mvd 3,5,6->4; + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.cn,ow_sale.dt order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows between 1 following and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.cn asc); -- mvd 2,4,5->3; 7,2,4,5->6; 2,4,5->8; 10,2->9; 10,2->11; + +-- MAX() function with NULL OVER() clause -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (); -- mvd 4->4; + +-- MAX() function with NULL OVER() clause in combination with other window functions -- + +SELECT ow_sale.prc,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn*ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (), +win2 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.pn order by ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc); -- mvd 4->4; 1,3,6->5; 3,8,9,6->7; 4->10; + +-- MAX() function with OVER() clause having ONLY PARTITION BY -- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn); -- mvd 1,4->3; + +-- MAX() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 1,3->2; 5->4; 5->6; 5->7; 5->8; + +-- MAX() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc,ow_sale.pn desc,ow_sale.cn asc); -- mvd 4,1->6; + +-- MAX() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc,ow_sale.vn asc); -- mvd 3->6; 3->7; + +-- MAX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ); -- mvd 1->3; + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range unbounded preceding ), +win2 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.cn asc); -- mvd 1->7; 1,9->8; 1,9->10; + +-- MAX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range floor(ow_sale.vn+ow_sale.qty) preceding ); -- mvd 2->5; + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range 3 preceding ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.vn desc); -- mvd 7->6; 1,9,3,7->8; 1,9,3,7->10; + +-- MAX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ); -- mvd 4->3; + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc*ow_sale.pn)) OVER(order by ow_sale.pn asc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.vn) as int),cast (floor(ow_sale.cn+ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range current row ), +win2 as (partition by ow_sale.cn order by ow_sale.pn asc), +win3 as (order by ow_sale.pn asc), +win4 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 4->3; 2,4->5; 4->6; 4->7; 4->8; + +-- MAX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and 4 preceding ); -- mvd 4->3; + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.qty+ow_sale.cn) preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 1->4; 6->5; + +-- MAX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and current row ); -- mvd 3->2; + +-- MAX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.vn) following ); -- mvd 1->5; + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and 1 following ), +win2 as (order by ow_sale.cn desc); -- mvd 3->2; 3->4; + +-- MAX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and unbounded following ); -- mvd 1->6; + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(order by ow_sale.pn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc); -- mvd 3->2; 5->4; 3->6; 5->7; 3->8; 5->9; + +-- MAX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 2 preceding and 1 preceding ); -- mvd 6->5; + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.pn) preceding and 4 preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.pn order by ow_sale.pn desc); -- mvd 7->6; 9->8; 11,7,3,1->10; + +-- MAX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.vn/ow_sale.qty) preceding and current row ); -- mvd 7->6; + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn/ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.vn/ow_sale.vn) preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc); -- mvd 3->2; 5->4; 5->6; 5->7; 9,1,3,5->8; + +-- MAX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 4 preceding and floor(ow_sale.vn*ow_sale.prc) following ); -- mvd 1->3; + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 4 preceding and floor(ow_sale.prc) following ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.vn asc); -- mvd 5->4; 2->6; 2->7; 9,5->8; + +-- MAX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 1 preceding and unbounded following ); -- mvd 4->3; + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn*ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 1 preceding and unbounded following ), +win2 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc), +win4 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 2->4; 6,3->5; 6,3->7; 2,1,3->8; 2,1,3->9; 11,2,6->10; + +-- MAX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and current row ); -- mvd 6->5; + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.cn)) OVER(order by ow_sale.cn desc range between current row and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and current row ); -- mvd 3->7; 3->8; 3->9; + +-- MAX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and 3 following ); -- mvd 4->3; + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and 1 following ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.cn,ow_sale.vn order by ow_sale.pn desc); -- mvd 3->6; 3->7; 4,3,9,2,10->8; 4,3,9,2,10->11; + +-- MAX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and unbounded following ); -- mvd 5->4; + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and unbounded following ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.dt order by ow_sale.vn desc); -- mvd 2->5; 1->6; 8,4,2->7; 1->9; + +-- MAX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.qty+ow_sale.qty) following and 0 following ); -- mvd 5->4; + +-- MAX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 0 following and unbounded following ); -- mvd 4->3; + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 2 following and unbounded following ), +win2 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc), +win4 as (order by ow_sale.cn desc); -- mvd 3->2; 3->4; 6,7,8,1,9->5; 3->10; + +-- MAX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows unbounded preceding ); -- mvd 6,1->5; + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn-ow_sale.cn) as int),cast (floor(ow_sale.pn*ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows unbounded preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.cn desc), +win4 as (order by ow_sale.vn asc); -- mvd 3,4->2; 3->5; 3->6; 1->7; + +-- MAX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows floor(ow_sale.cn) preceding ); -- mvd 2->3; + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn/ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn+ow_sale.qty) as int),NULL) OVER(win5),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows floor(ow_sale.prc) preceding ), +win2 as (partition by ow_sale.pn order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.pn asc), +win4 as (order by ow_sale.cn asc), +win5 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc); -- mvd 6,2->5; 2,3->7; 3->8; 6->9; 6,11,3->10; 6->12; + +-- MAX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.pn desc rows current row ); -- mvd 1->5; + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty/ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty*ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows current row ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->2; 3->4; 3->5; 7,8,9,3,1->6; 3->10; 3->11; + +-- MAX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc,ow_sale.pn desc rows between unbounded preceding and 7 preceding ); -- mvd 2,5->4; + +-- MAX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 4->5; + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.vn) as int),cast (floor(ow_sale.cn*ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn asc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn desc); -- mvd 4,1,2->3; 1->5; 1,2->6; 1->7; + +-- MAX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between unbounded preceding and 2 following ); -- mvd 3->2; + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and 3 following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.pn asc); -- mvd 1,4->3; 1->5; 1->6; 4->7; 1->8; + +-- MAX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and unbounded following ); -- mvd 3->2; + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty*ow_sale.prc) as int),cast (floor(ow_sale.qty*ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc), +win4 as (order by ow_sale.pn desc); -- mvd 4->5; 1->6; 4->7; 9,10,3,1->8; 1->11; 4->12; + +-- MAX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.vn) preceding and floor(ow_sale.qty+ow_sale.vn) preceding ); -- mvd 5->4; + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn+ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc,ow_sale.pn desc rows between 0 preceding and floor(ow_sale.prc/ow_sale.cn) preceding ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.pn asc), +win4 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc); -- mvd 1,6->5; 6->7; 6->8; 6->9; 11,12,1,6->10; + +-- MAX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between 6 preceding and current row ); -- mvd 1->3; + +-- MAX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.cn asc rows between floor(ow_sale.vn) preceding and 0 following ); -- mvd 6->5; + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 4 preceding and 1 following ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.vn desc); -- mvd 5->4; 1,7->6; 1,7->8; + +-- MAX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between 0 preceding and unbounded following ); -- mvd 2->3; + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty-ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.cn desc rows between floor(ow_sale.prc) preceding and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.cn desc), +win4 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 1,6->5; 1->7; 1->8; 3,1,10,11->9; 1->12; + +-- MAX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc,ow_sale.cn desc rows between current row and current row ); -- mvd 4,7->6; + +-- MAX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc,ow_sale.cn asc rows between current row and 0 following ); -- mvd 3,4->2; + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.pn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between current row and 4 following ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 3->6; 1,8,3->7; 1->9; + +-- MAX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ); -- mvd 4->3; + +-- MAX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc rows between 8 following and 2 following ); -- mvd 6->5; + +-- MAX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc rows between floor(ow_sale.vn) following and unbounded following ); -- mvd 2,6->5; + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between 4 following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.cn asc); -- mvd 6->5; 8->7; 6->9; 8->10; 8->11; + +-- MAX() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.vn asc); -- mvd 1,3,2->5; + +-- MAX() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.pn desc); -- mvd 2,3,6->5; 2,3,6->7; + +-- MAX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.pn desc range unbounded preceding ); -- mvd 1,5,6,7,8->4; + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.vn asc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.vn asc range unbounded preceding ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc); -- mvd 1,4,2->3; 1,4,6,2->5; 1,4,6,2->7; 1,4,2->8; 1,4,6,2->9; 1,4,6,2->10; + +-- MAX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn order by ow_sale.vn desc range floor(ow_sale.prc*ow_sale.cn) preceding ); -- mvd 4,2,3->6; + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn desc range floor(ow_sale.prc/ow_sale.vn) preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 4->3; 2->5; + +-- MAX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.prc,ow_sale.dt,ow_sale.vn order by ow_sale.vn asc range current row ); -- mvd 4,1,5,6,7->3; + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.cn asc range current row ), +win2 as (order by ow_sale.vn desc); -- mvd 4->3; 6->5; 6->7; + +-- MAX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.cn+ow_sale.pn) preceding ); -- mvd 5,6,7->4; + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.pn desc range between unbounded preceding and 0 preceding ), +win2 as (partition by ow_sale.cn order by ow_sale.pn asc); -- mvd 3,6,1->5; 3,1->7; + +-- MAX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.qty order by ow_sale.cn asc range between unbounded preceding and current row ); -- mvd 4,1,2->3; + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.cn desc); -- mvd 3,4->2; 3,4->5; 4->6; 3,4->7; 9,3,1->8; + +-- MAX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.pn desc range between unbounded preceding and 1 following ); -- mvd 4,5->3; + +-- MAX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.vn order by ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 4,6,2,1->5; + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.pn desc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.pn asc), +win4 as (order by ow_sale.vn asc); -- mvd 4,5,6,7->3; 6->8; 7->9; 7->10; 2->11; + +-- MAX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.dt order by ow_sale.cn desc range between floor(ow_sale.cn) preceding and floor(ow_sale.cn) preceding ); -- mvd 8,6,9,3->7; + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.qty) as int),cast (floor(ow_sale.qty*ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.qty order by ow_sale.vn asc range between 1 preceding and floor(ow_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty order by ow_sale.vn asc range between 1 preceding and floor(ow_sale.pn) preceding ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.pn desc), +win4 as (partition by ow_sale.prc order by ow_sale.pn asc); -- mvd 4,1,5->3; 4,7,5,1->6; 9->8; 4,1,5->10; 9->11; 13,9->12; + +-- MAX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn desc range between 2 preceding and current row ); -- mvd 6,3->5; + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.pn)) OVER(partition by ow_sale.prc,ow_sale.prc,ow_sale.dt,ow_sale.cn order by ow_sale.cn asc range between 3 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(partition by ow_sale.prc,ow_sale.prc,ow_sale.dt,ow_sale.cn order by ow_sale.cn asc range between 3 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc*ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.dt,ow_sale.cn order by ow_sale.cn asc range between 3 preceding and current row ), +win2 as (partition by ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,4,5->2; 3,4,5->6; 3,4,5->7; 3,4,9->8; + +-- MAX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.pn desc range between 0 preceding and 0 following ); -- mvd 1,3->7; + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn desc range between floor(ow_sale.vn+ow_sale.pn) preceding and 3 following ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.qty order by ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.vn desc); -- mvd 2,5->4; 2,7,5,1->6; 2,7,5,1->8; 10,5->9; + +-- MAX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.vn asc range between floor(ow_sale.vn) preceding and unbounded following ); -- mvd 1,8,4,9->7; + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.pn,ow_sale.pn order by ow_sale.vn asc range between 3 preceding and unbounded following ), +win2 as (order by ow_sale.cn desc); -- mvd 6,3,7,1->5; 9->8; + +-- MAX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.qty order by ow_sale.pn desc range between current row and current row ); -- mvd 4,2,7->6; + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn desc range between current row and current row ), +win2 as (order by ow_sale.pn desc); -- mvd 3,5->4; 2->6; + +-- MAX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.vn asc range between current row and 1 following ); -- mvd 4,2,5->3; + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.prc) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.pn asc range between current row and floor(ow_sale.prc) following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 6,8,9,5->7; 9->10; 5->11; 9->12; + +-- MAX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.pn desc range between current row and unbounded following ); -- mvd 2,5,6,1,7->4; + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.cn)) OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.vn desc range between current row and unbounded following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.vn desc), +win4 as (order by ow_sale.vn asc); -- mvd 8,9,1,10->7; 1->11; 9,1->12; 1->13; 1->14; + +-- MAX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn asc range between 2 following and floor(ow_sale.pn+ow_sale.cn) following ); -- mvd 3,4->2; + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.pn order by ow_sale.pn desc range between floor(ow_sale.cn/ow_sale.vn) following and 2 following ), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.vn asc), +win3 as (order by ow_sale.cn asc); -- mvd 5,6,7,1->4; 6,2,1->8; 6->9; + +-- MAX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.vn desc range between 0 following and unbounded following ); -- mvd 3,4->2; + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.cn asc range between floor(ow_sale.prc) following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.cn asc range between floor(ow_sale.prc) following and unbounded following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.pn order by ow_sale.cn asc); -- mvd 1,3,4,5->2; 1,3,4,5->6; 8->7; 8->9; 11,1,8,5->10; + +-- MAX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.cn desc rows unbounded preceding ); -- mvd 4,1,3->5; + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows unbounded preceding ), +win2 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.vn,ow_sale.dt order by ow_sale.vn asc); -- mvd 3,4,5,6->2; 3,5,8->7; + +-- MAX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows floor(ow_sale.prc) preceding ); -- mvd 6,7,4->5; + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn-ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.vn asc rows floor(ow_sale.vn) preceding ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.dt order by ow_sale.cn desc), +win4 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.cn order by ow_sale.pn asc), +win5 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,5,6->3; 6->7; 4,5->8; 1,4,6,10->9; 4,6,10->11; + +-- MAX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn asc rows current row ); -- mvd 1,3,4->2; + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty*ow_sale.qty) as int),cast (floor(ow_sale.pn+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.cn asc rows current row ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.cn desc), +win3 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn asc); -- mvd 8,9,10,4->7; 9,8,4->11; 10->12; 10->13; 9,8,4->14; + +-- MAX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and floor(ow_sale.qty) preceding ); -- mvd 1,3->6; + +-- MAX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and current row ); -- mvd 6,3,2,1->5; + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.cn)) OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.pn+ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 1,5,6,2->4; 8->7; 8->9; 8->10; 1->11; 8->12; + +-- MAX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between unbounded preceding and 6 following ); -- mvd 2,1,6->7; + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty+ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.qty) following ), +win2 as (partition by ow_sale.vn order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc), +win4 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.vn desc); -- mvd 6,2,1,3->5; 1,3->7; 1->8; 2,10,1,3->9; + +-- MAX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.vn asc rows between unbounded preceding and unbounded following ); -- mvd 6,2->5; + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn-ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty/ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 1,6,4->5; 1,8,6->7; 1,8,6->9; 1,8,6->10; 1,8,6->11; 1->12; + +-- MAX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between floor(ow_sale.prc) preceding and 4 preceding ); -- mvd 4,5->3; + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.cn desc rows between 3 preceding and floor(ow_sale.prc/ow_sale.cn) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.cn desc rows between 3 preceding and floor(ow_sale.prc/ow_sale.cn) preceding ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.vn desc); -- mvd 3,4,1->2; 3,4,1->5; 3->6; 3,4,1->7; 4->8; 3,4,1->9; + +-- MAX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.pn asc rows between 2 preceding and current row ); -- mvd 1,3,8->7; + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.cn asc rows between floor(ow_sale.prc) preceding and current row ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.cn desc), +win3 as (order by ow_sale.pn asc), +win4 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc); -- mvd 3,2,4,6->7; 2,9,4,6->8; 2,9,4,6->10; 6->11; 3,2,9,4,6->12; 2,9,4,6->13; + +-- MAX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows between 4 preceding and 4 following ); -- mvd 4,1->3; + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows between floor(ow_sale.cn) preceding and floor(ow_sale.vn) following ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,4,5->2; 1,7,3,5->6; + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.prc)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn asc rows between 2 preceding and unbounded following ), +win2 as (order by ow_sale.cn desc); -- mvd 5->7; 2->8; 2->9; + +-- MAX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between current row and current row ); -- mvd 4,5,6,2->3; + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MAX(floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc,ow_sale.pn asc rows between current row and current row ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.cn asc), +win4 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.cn asc); -- mvd 5,6,7,1,2->4; 5->8; 5->9; 5->10; 5->11; 5->12; + +-- MAX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows between current row and 8 following ); -- mvd 2,6->5; + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.prc)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc rows between current row and floor(ow_sale.cn) following ), +win2 as (partition by ow_sale.prc,ow_sale.cn order by ow_sale.vn desc); -- mvd 1,3,4,5->2; 7,1,3->6; 7,1,3->8; + +-- MAX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ); -- mvd 3,5,7->6; + +-- MAX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc rows between 2 following and 7 following ); -- mvd 3,4->2; + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between 4 following and floor(ow_sale.pn+ow_sale.prc) following ), +win2 as (order by ow_sale.pn desc); -- mvd 2,3->7; 4->8; + +-- MIN() function with NULL OVER() clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (); -- mvd 2->2; + +-- MIN() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn), +win2 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc); -- mvd 4,2->3; 6,4,7,8->5; + +-- MIN() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc,ow_sale.cn desc); -- mvd 5,2->4; + +-- MIN() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc), +win2 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 1->5; 2->6; 1->7; + +-- MIN() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range unbounded preceding ); -- mvd 1->5; + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range unbounded preceding ), +win2 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.cn asc), +win3 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.cn desc); -- mvd 2->4; 6,2->5; 6,8->7; + +-- MIN() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range 2 preceding ); -- mvd 6->5; + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.cn order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range floor(ow_sale.prc) preceding ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.dt order by ow_sale.pn desc), +win3 as (partition by ow_sale.cn order by ow_sale.cn desc); -- mvd 4->3; 4->5; 7,2->6; 4->8; 4->9; + +-- MIN() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range current row ); -- mvd 2->3; + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.qty)) OVER(order by ow_sale.vn asc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn/ow_sale.vn)) OVER(order by ow_sale.vn asc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn+ow_sale.qty)) OVER(order by ow_sale.vn asc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(order by ow_sale.vn asc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.qty) as int),cast (floor(ow_sale.pn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range current row ), +win2 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc); -- mvd 6->5; 6->7; 6->8; 6->9; 6->10; 2,12->11; + +-- MIN() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and 2 preceding ); -- mvd 1->4; + +-- MIN() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 4->6; + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and current row ); -- mvd 3->2; 3->4; + +-- MIN() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and floor(ow_sale.qty) following ); -- mvd 5->4; + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and 2 following ); -- mvd 1->3; 1->4; + +-- MIN() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and unbounded following ); -- mvd 6->5; + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc*ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.qty order by ow_sale.vn desc), +win4 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 5->4; 3->6; 8,5,1,2,3->7; 8,5,1,2,3->9; 5->10; 8,5,1,2,3->11; + +-- MIN() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.prc+ow_sale.cn) preceding and floor(ow_sale.cn) preceding ); -- mvd 3->2; + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(order by ow_sale.pn asc range between 2 preceding and 3 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 2 preceding and 3 preceding ), +win2 as (partition by ow_sale.cn order by ow_sale.vn asc); -- mvd 5->7; 5->8; 10,3->9; 5->11; 5->12; + +-- MIN() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.cn) preceding and current row ); -- mvd 2->3; + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.vn) preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.vn desc), +win3 as (order by ow_sale.vn desc); -- mvd 4->3; 6,4->5; 6,4->7; 4->8; 4->9; + +-- MIN() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 2 preceding and unbounded following ); -- mvd 3->2; + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 2 preceding and unbounded following ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.cn desc); -- mvd 4->3; 2->5; 2->6; 4->7; + +-- MIN() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and current row ); -- mvd 2->5; + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and current row ), +win2 as (partition by ow_sale.cn order by ow_sale.pn desc); -- mvd 4->3; 4->5; 4->6; 4,8->7; + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and 4 following ), +win2 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.prc order by ow_sale.cn desc), +win3 as (order by ow_sale.vn asc); -- mvd 6->5; 8,6,2,4,9->7; 6->10; 4->11; + +-- MIN() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and unbounded following ); -- mvd 7->6; + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn/ow_sale.vn) as int),cast (floor(ow_sale.pn*ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and unbounded following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->2; 3->4; 6,3->5; + +-- MIN() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.qty) following and 2 following ); -- mvd 5->4; + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(order by ow_sale.pn asc range between 2 following and floor(ow_sale.prc/ow_sale.pn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.vn*ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 2 following and floor(ow_sale.prc/ow_sale.pn) following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 2->7; 2->8; 10->9; + +-- MIN() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 4 following and unbounded following ); -- mvd 3->2; + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.vn)) OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 4 following and unbounded following ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.vn asc); -- mvd 4->3; 4->5; 4->6; 4->7; 4->8; + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn desc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows unbounded preceding ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 2->3; 2->4; 1->5; 2->6; 1,8,2->7; 1->9; + +-- MIN() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.cn desc rows 4 preceding ); -- mvd 5,3->7; + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn-ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.vn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.cn asc rows floor(ow_sale.prc*ow_sale.qty) preceding ), +win2 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.cn asc), +win3 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc); -- mvd 4->3; 4,6,7->5; 4,6,7->8; 4->9; 4->10; 6,7->11; + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn-ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.cn asc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows current row ), +win2 as (order by ow_sale.cn desc); -- mvd 6->5; 6->7; 6->8; + +-- MIN() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.vn asc rows between unbounded preceding and 1 preceding ); -- mvd 2,1->3; + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn desc rows between unbounded preceding and 1 preceding ), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.pn desc); -- mvd 6,3,2->5; 4,3,2->7; + +-- MIN() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between unbounded preceding and current row ); -- mvd 2->3; + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 5,6->4; 5,6->7; 5,6->8; + +-- MIN() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between unbounded preceding and 6 following ); -- mvd 4,5->3; + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn-ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and 4 following ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.cn asc), +win3 as (order by ow_sale.pn asc), +win4 as (partition by ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc); -- mvd 6->5; 6,4->7; 4->8; 3,6->9; + +-- MIN() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and unbounded following ); -- mvd 1,3->2; + +-- MIN() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.vn desc rows between 3 preceding and 6 preceding ); -- mvd 1,5->7; + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.pn desc rows between 4 preceding and 1 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.pn desc rows between 4 preceding and 1 preceding ); -- mvd 5,6->4; 5,6->7; + +-- MIN() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc rows between 9 preceding and current row ); -- mvd 1,3->2; + +-- MIN() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between floor(ow_sale.cn) preceding and floor(ow_sale.prc) following ); -- mvd 2,4->3; + +-- MIN() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.pn+ow_sale.vn) preceding and unbounded following ); -- mvd 5->4; + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.prc,ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.vn asc rows between floor(ow_sale.prc) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.pn)) OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.vn asc rows between floor(ow_sale.prc) preceding and unbounded following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.vn order by ow_sale.pn desc); -- mvd 3,8->7; 3->9; 3,8->10; 3->11; 8,6->12; 3->13; + +-- MIN() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.pn desc rows between current row and current row ); -- mvd 3,2,1->4; + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.pn order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc*ow_sale.pn) as int),cast (floor(ow_sale.prc+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.vn desc rows between current row and current row ), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.pn order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,2->6; 5,8,3,2->7; 5,8,3,2->9; 3->10; + +-- MIN() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between current row and 2 following ); -- mvd 4->3; + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc,ow_sale.vn desc rows between current row and 2 following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc); -- mvd 4->3; 2,4,6->5; 2,4,6->7; + +-- MIN() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc,ow_sale.pn asc rows between current row and unbounded following ); -- mvd 1,5->4; + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn-ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between current row and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc), +win3 as (partition by ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc); -- mvd 4->3; 6,4,1,2->5; 6,4,2->7; 6,4,2->8; 6,4,1,2->9; + +-- MIN() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between floor(ow_sale.cn*ow_sale.prc) following and 2 following ); -- mvd 6->5; + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.cn desc rows between 3 following and floor(ow_sale.qty*ow_sale.vn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.cn desc rows between 3 following and floor(ow_sale.qty*ow_sale.vn) following ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.cn asc); -- mvd 5,1->4; 5,1->6; 1->7; 9,5,10,2->8; 1->11; + +-- MIN() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between 1 following and unbounded following ); -- mvd 5->4; + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn-ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc*ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between 0 following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc); -- mvd 2->5; 2->6; 4,3->7; + +-- MIN() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.vn desc); -- mvd 1,3->2; + +-- MIN() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt +, +TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.cn order by ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn asc), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 8,9,10,3,2->7; 8,9,10,3,2->11; 9->12; + +-- MIN() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.prc order by ow_sale.pn asc range unbounded preceding ); -- mvd 3,4,5->2; + +-- MIN() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc order by ow_sale.cn asc range 1 preceding ); -- mvd 5,6->4; + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn-ow_sale.qty)) OVER(partition by ow_sale.qty,ow_sale.dt order by ow_sale.pn asc range floor(ow_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn*ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt order by ow_sale.pn asc range floor(ow_sale.pn) preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (order by ow_sale.pn asc); -- mvd 4,5,1->3; 4,5,1->6; 1->7; 1->8; + +-- MIN() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn asc range current row ); -- mvd 3,4->2; + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(partition by ow_sale.pn order by ow_sale.cn desc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn desc range current row ), +win2 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.cn desc); -- mvd 1,4->3; 1,4->5; 1,4->6; 1,8,4->7; 1,10,8,4->9; + +-- MIN() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.pn*ow_sale.prc) preceding ); -- mvd 4,8,3,1->7; + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.vn asc range between unbounded preceding and 3 preceding ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.vn desc); -- mvd 6,7->5; 1->8; 1->9; 1->10; 12,7,13->11; 1->14; + +-- MIN() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.pn desc range between unbounded preceding and current row ); -- mvd 4,7->6; + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.pn order by ow_sale.vn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.pn asc); -- mvd 4,5,6->3; 6->7; + +-- MIN() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.pn asc range between unbounded preceding and floor(ow_sale.pn) following ); -- mvd 1,2->4; + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.pn order by ow_sale.cn asc range between unbounded preceding and 2 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn asc range between unbounded preceding and 2 following ); -- mvd 4,2->3; 4,2->5; + +-- MIN() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn desc range between unbounded preceding and unbounded following ); -- mvd 5,1->4; + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.pn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.cn desc); -- mvd 5,6->4; 2,6->7; + +-- MIN() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn asc range between floor(ow_sale.prc-ow_sale.prc) preceding and 4 preceding ); -- mvd 1,3->2; + +-- MIN() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.vn desc range between 3 preceding and current row ); -- mvd 2,8,3->7; + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc*ow_sale.cn)) OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc range between floor(ow_sale.cn) preceding and current row ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.prc order by ow_sale.vn asc); -- mvd 1,3,6,7->5; 1,3,6,7->8; 1->9; 1->10; 2,1,3->11; + +-- MIN() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.vn asc range between 0 preceding and 4 following ); -- mvd 3,4->2; + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.prc)) OVER(partition by ow_sale.vn order by ow_sale.cn desc range between floor(ow_sale.pn) preceding and floor(ow_sale.vn/ow_sale.vn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn desc range between floor(ow_sale.pn) preceding and floor(ow_sale.vn/ow_sale.vn) following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.vn asc); -- mvd 3,4->2; 3,4->5; 4->6; 3,4->7; + +-- MIN() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.cn desc range between floor(ow_sale.cn) preceding and unbounded following ); -- mvd 3,1,4->2; + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn+ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn order by ow_sale.cn asc range between 2 preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 1,5,6->4; 5->7; 5->8; 5->9; 1,5,6->10; + +-- MIN() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.cn order by ow_sale.pn desc range between current row and current row ); -- mvd 7,8,1,9,4->6; + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn-ow_sale.pn) as int),cast (floor(ow_sale.prc/ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.pn asc range between current row and current row ), +win2 as (partition by ow_sale.pn order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 1,5->7; 3,5->8; 4->9; 3,5->10; 3,5->11; + +-- MIN() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.cn desc range between current row and floor(ow_sale.cn) following ); -- mvd 5,3->4; + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.prc)) OVER(partition by ow_sale.prc,ow_sale.vn,ow_sale.qty,ow_sale.pn order by ow_sale.pn asc range between current row and floor(ow_sale.pn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.qty,ow_sale.pn order by ow_sale.pn asc range between current row and floor(ow_sale.pn) following ), +win2 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.cn desc); -- mvd 1,6,7,2->5; 9,6,7->8; 1,6,7,2->10; + +-- MIN() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.pn desc range between current row and unbounded following ); -- mvd 6,7->5; + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty*ow_sale.cn) as int),cast (floor(ow_sale.vn*ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.pn desc range between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (order by ow_sale.vn asc); -- mvd 2,4->3; 4->5; 7->6; + +-- MIN() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.vn asc range between floor(ow_sale.pn) following and floor(ow_sale.prc) following ); -- mvd 2,7->6; + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty-ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.cn desc range between 2 following and floor(ow_sale.vn+ow_sale.prc) following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 4,2->3; 4->5; + +-- MIN() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.cn asc range between floor(ow_sale.vn) following and unbounded following ); -- mvd 3,4,1->2; + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn desc range between 4 following and unbounded following ), +win2 as (order by ow_sale.cn desc); -- mvd 2->4; 1->5; 1->6; 1->7; + +-- MIN() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.cn desc rows unbounded preceding ); -- mvd 5,6->4; + +-- MIN() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows floor(ow_sale.vn) preceding ); -- mvd 5,3->4; + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows 1 preceding ), +win2 as (order by ow_sale.vn desc); -- mvd 3,4,5->2; 4->6; 3,4,5->7; + +-- MIN() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.cn asc rows current row ); -- mvd 7,2,1->6; + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.cn asc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty+ow_sale.pn) as int),cast (floor(ow_sale.pn+ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.cn asc rows current row ), +win2 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn asc); -- mvd 8,9,5->7; 8,9,5->10; 8,9,5->11; 8,2->12; 8,9,5->13; + +-- MIN() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and 0 preceding ); -- mvd 4,1->3; + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc rows between unbounded preceding and floor(ow_sale.cn+ow_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc rows between unbounded preceding and floor(ow_sale.cn+ow_sale.pn) preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 3,4->2; 3,4->5; 3,4->6; 1->7; + +-- MIN() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and current row ); -- mvd 4,5,2,1,6->3; + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.pn desc); -- mvd 4,1,2,5,6->3; 2->7; 6->8; 6->9; 4,1,2,5,6->10; 6->11; + +-- MIN() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and 6 following ); -- mvd 4,5,1->3; + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc,ow_sale.pn asc rows between unbounded preceding and floor(ow_sale.prc) following ), +win2 as (order by ow_sale.cn asc); -- mvd 1,4,5,2->3; 1->6; 1,4,5,2->7; + +-- MIN() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 7,8,1,3,9,2->6; + +-- MIN() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.vn*ow_sale.pn) preceding and floor(ow_sale.pn) preceding ); -- mvd 4,5,6,7,2->3; + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.vn) as int),cast (floor(ow_sale.vn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn/ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc rows between 3 preceding and 0 preceding ), +win2 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc), +win4 as (order by ow_sale.vn desc); -- mvd 5,6->4; 1->7; 1->8; 10->9; + +-- MIN() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between 8 preceding and current row ); -- mvd 3,4,5,6->2; + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc rows between 4 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc rows between 4 preceding and current row ), +win2 as (order by ow_sale.cn asc); -- mvd 3,1,4,5->2; 3,1,4,5->6; 3->7; + +-- MIN() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc,ow_sale.pn desc rows between floor(ow_sale.prc) preceding and floor(ow_sale.vn*ow_sale.prc) following ); -- mvd 6,3,7,2->5; + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.cn) preceding and floor(ow_sale.vn+ow_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.cn) preceding and floor(ow_sale.vn+ow_sale.cn) following ), +win2 as (order by ow_sale.pn asc); -- mvd 4,5->3; 4,5->6; 5->7; + +-- MIN() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.cn desc rows between floor(ow_sale.vn-ow_sale.vn) preceding and unbounded following ); -- mvd 4,2,6->5; + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.cn) as int),cast (floor(ow_sale.vn*ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.qty+ow_sale.vn) preceding and unbounded following ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,4,1->2; 3,4,1->5; 3,4,1->6; 1->7; 3,4->8; + +-- MIN() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn asc rows between current row and current row ); -- mvd 6,1->5; + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.prc order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between current row and current row ), +win2 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.cn order by ow_sale.vn desc), +win3 as (partition by ow_sale.pn order by ow_sale.cn asc), +win4 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.prc order by ow_sale.cn desc); -- mvd 6,2->5; 3,6,4->7; 6,2->8; 6,2->9; 11,6,3,4,2->10; 11,6,3,4,2->12; + +-- MIN() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn desc rows between current row and unbounded following ); -- mvd 1,3,4->2; + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(MIN(floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.vn asc); -- mvd 4,5,6,7->3; 7->8; 5->9; + +-- MIN() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows between floor(ow_sale.vn) following and 4 following ); -- mvd 3,4,5->2; + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows between 2 following and floor(ow_sale.vn/ow_sale.pn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc+ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows between 2 following and floor(ow_sale.vn/ow_sale.pn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn+ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows between 2 following and floor(ow_sale.vn/ow_sale.pn) following ), +win2 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.vn desc), +win3 as (order by ow_sale.pn asc), +win4 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 5,6,3->4; 5,6,3->7; 6,9,3->8; 5,6,3->10; 3->11; 5->12; + +-- MIN() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.pn desc rows between floor(ow_sale.cn*ow_sale.prc) following and unbounded following ); -- mvd 1,7,2,3->6; + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(MIN(floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between 2 following and unbounded following ), +win2 as (order by ow_sale.vn desc); -- mvd 1,3,4->2; 1,3,4->5; 3->6; + +-- STDDEV() function with NULL OVER() clause -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (); -- mvd 6->6; + +-- STDDEV() function with NULL OVER() clause in combination with other window functions -- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.pn asc), +win4 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.pn desc); -- mvd 3->3; 3->4; 6->5; 1->7; 9,10,6,1->8; 1->11; + +-- STDDEV() function with OVER() clause having ONLY PARTITION BY -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.cn); -- mvd 2,7->6; + +-- STDDEV() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.qty), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc); -- mvd 5,6,2->4; 6->7; 6,2,9->8; 6,2,9->10; 6->11; + +-- STDDEV() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn desc,ow_sale.pn asc,ow_sale.pn asc); -- mvd 4->3; + +-- STDDEV() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.pn desc,ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.pn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.pn desc,ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc,ow_sale.vn desc), +win2 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc); -- mvd 2,4->5; 2,4->6; 8,1,3,4->7; 2,4->9; 8,1,3,4->10; + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.prc) as int),cast (floor(ow_sale.vn/ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range unbounded preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (order by ow_sale.vn desc); -- mvd 3->2; 3->4; 6->5; + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn/ow_sale.qty) as int),cast (floor(ow_sale.vn/ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.qty order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range 1 preceding ), +win2 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.pn desc); -- mvd 4->6; 3,8->7; 3,8->9; 3,8->10; 3,8->11; + +-- STDDEV() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ); -- mvd 6->5; + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ), +win2 as (order by ow_sale.pn asc); -- mvd 3->2; 5->4; 5->6; + +-- STDDEV() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and 2 preceding ); -- mvd 4->3; + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.prc)) OVER(order by ow_sale.pn asc range between unbounded preceding and 3 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn/ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and 3 preceding ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.cn asc), +win3 as (order by ow_sale.vn desc), +win4 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 4->3; 4->5; 7,1,4->6; 2->8; 7->9; 2->10; + +-- STDDEV() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and current row ); -- mvd 1->5; + +-- STDDEV() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and 1 following ); -- mvd 3->2; + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn+ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and 0 following ), +win2 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.dt order by ow_sale.cn desc), +win4 as (order by ow_sale.ord, ow_sale.cn desc), +win5 as (order by ow_sale.vn asc); -- mvd 3->2; 5,3,1,6->4; 3,8,1,9->7; 3->10; 9->11; + +-- STDDEV() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and unbounded following ); -- mvd 5->4; + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc); -- mvd 1->4; 6,7,8,1,9->5; 1->10; 6,7,8,1,9->11; + +-- STDDEV() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 0 preceding and floor(ow_sale.qty) preceding ); -- mvd 4->3; + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.pn+ow_sale.cn) preceding and 0 preceding ), +win2 as (order by ow_sale.vn asc); -- mvd 1->4; 1->5; 1->6; 1->7; 1->8; 1->9; + +-- STDDEV() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.vn*ow_sale.vn) preceding and current row ); -- mvd 7->6; + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(order by ow_sale.vn desc range between 2 preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 2 preceding and current row ), +win2 as (order by ow_sale.vn asc); -- mvd 2->3; 2->4; 2->5; + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 2 preceding and 2 following ), +win2 as (order by ow_sale.cn desc); -- mvd 4->3; 4->5; + +-- STDDEV() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.cn) preceding and unbounded following ); -- mvd 1->5; + +-- STDDEV() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and current row ); -- mvd 3->6; + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and current row ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 6->5; 1,6->7; 1,6->8; 1,6->9; 1,6->10; + +-- STDDEV() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and floor(ow_sale.prc) following ); -- mvd 3->2; + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.vn)) OVER(order by ow_sale.vn desc range between current row and floor(ow_sale.cn+ow_sale.vn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and floor(ow_sale.cn+ow_sale.vn) following ); -- mvd 2->5; 2->6; + +-- STDDEV() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and unbounded following ); -- mvd 2->3; + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and unbounded following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.vn asc); -- mvd 1->3; 2->4; 6,2,7->5; 2->8; 2->9; 2->10; + +-- STDDEV() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 0 following and 0 following ); -- mvd 3->2; + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 3 following and floor(ow_sale.vn+ow_sale.qty) following ), +win2 as (order by ow_sale.pn asc); -- mvd 5->4; 1->6; + +-- STDDEV() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.qty/ow_sale.cn) following and unbounded following ); -- mvd 8->7; + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn+ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn-ow_sale.qty) as int),cast (floor(ow_sale.pn+ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.cn) following and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 4->3; 4,6,2,1->5; 2->7; 2->8; 4->9; + +-- STDDEV() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc rows unbounded preceding ); -- mvd 5,1->4; + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn asc rows unbounded preceding ), +win2 as (order by ow_sale.cn asc); -- mvd 3,4->2; 3->5; 3->6; + +-- STDDEV() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc rows 4 preceding ); -- mvd 3,4->2; + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn+ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn*ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.cn asc rows 1 preceding ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.pn asc), +win4 as (partition by ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc); -- mvd 2,4->3; 2,4->5; 7->6; 9,10,7,4->8; 7->11; 9,7,4->12; + +-- STDDEV() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows current row ); -- mvd 4->3; + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.pn asc rows current row ), +win2 as (order by ow_sale.cn desc); -- mvd 7,1,2->6; 7->8; 7,1,2->9; + +-- STDDEV() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.vn asc rows between unbounded preceding and floor(ow_sale.pn) preceding ); -- mvd 4,1->3; + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc*ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and 4 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and 4 preceding ), +win2 as (order by ow_sale.vn desc); -- mvd 1->2; 1->3; 1->4; 6->5; + +-- STDDEV() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and current row ); -- mvd 5->4; + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.pn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.vn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc); -- mvd 6,1->5; 8,6,1,9,2->7; 6,1->10; 8,6,1,9,2->11; + +-- STDDEV() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows between unbounded preceding and 4 following ); -- mvd 3,4->2; + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 4 following ), +win2 as (partition by ow_sale.qty order by ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc); -- mvd 3->2; 5,1->4; 5,1->6; 3,1->7; 3,1->8; + +-- STDDEV() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between unbounded preceding and unbounded following ); -- mvd 2->4; + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc rows between unbounded preceding and unbounded following ); -- mvd 2,5->4; 2,5->6; + +-- STDDEV() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.pn-ow_sale.cn) preceding and 4 preceding ); -- mvd 2->5; + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty*ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win5),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.vn desc rows between 0 preceding and 3 preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc), +win4 as (order by ow_sale.ord, ow_sale.cn asc), +win5 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.qty order by ow_sale.cn asc); -- mvd 3,4,1->2; 4->5; 4->6; 3->7; 4->8; 3,10,11->9; + +-- STDDEV() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between floor(ow_sale.vn-ow_sale.vn) preceding and current row ); -- mvd 5,1->4; + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between 2 preceding and current row ), +win2 as (partition by ow_sale.cn,ow_sale.prc order by ow_sale.pn asc), +win3 as (order by ow_sale.cn desc); -- mvd 3->5; 7,8,3->6; 8->9; + +-- STDDEV() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.vn asc rows between floor(ow_sale.pn-ow_sale.cn) preceding and floor(ow_sale.vn) following ); -- mvd 3,4->2; + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.prc) preceding and 1 following ), +win2 as (order by ow_sale.vn asc); -- mvd 1->5; 1->6; 1->7; 2->8; 2->9; + +-- STDDEV() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows between 0 preceding and unbounded following ); -- mvd 4->6; + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.cn asc rows between 4 preceding and unbounded following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.pn asc); -- mvd 3->2; 1->4; 6,7->5; 3->8; + +-- STDDEV() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between current row and current row ); -- mvd 3->7; + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.pn) as int),cast (floor(ow_sale.cn*ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between current row and current row ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc); -- mvd 1->5; 2->6; 8,1,3,9,2->7; 2->10; + +-- STDDEV() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between current row and 8 following ); -- mvd 3->2; + +-- STDDEV() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between current row and unbounded following ); -- mvd 1->7; + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc); -- mvd 2->4; 3->5; 3,7,2->6; 3->8; 3,7,2->9; + +-- STDDEV() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between floor(ow_sale.prc) following and 7 following ); -- mvd 7->6; + +-- STDDEV() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between floor(ow_sale.pn) following and unbounded following ); -- mvd 6,3->5; + +-- STDDEV() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.pn order by ow_sale.vn asc,ow_sale.vn asc,ow_sale.cn asc); -- mvd 5,1,6,7->4; + +-- STDDEV() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty +, +TO_CHAR(COALESCE(RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.vn)) OVER(partition by ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.cn order by ow_sale.cn asc,ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.cn order by ow_sale.cn asc,ow_sale.vn desc); -- mvd 4,1,5,2,6->3; 4,1,5,2,6->7; 4,1,5,2,6->8; + +-- STDDEV() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.cn asc range unbounded preceding ); -- mvd 1,2,5->4; + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(partition by ow_sale.pn order by ow_sale.cn asc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(partition by ow_sale.pn order by ow_sale.cn asc range unbounded preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn asc range unbounded preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,3->5; 4->6; 4,3->7; 4,3->8; 4,3->9; 4,3->10; + +-- STDDEV() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.pn order by ow_sale.pn desc range floor(ow_sale.vn) preceding ); -- mvd 3,4,1,5->2; + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.cn asc range 4 preceding ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.cn desc); -- mvd 1,2->5; 1->6; 1->7; 1->8; + +-- STDDEV() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.cn desc range current row ); -- mvd 3,4,5->2; + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.cn desc range current row ), +win2 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.cn asc); -- mvd 3,4->2; 3,6->5; 3,6->7; 3->8; 3->9; + +-- STDDEV() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.prc,ow_sale.vn order by ow_sale.pn asc range between unbounded preceding and floor(ow_sale.cn) preceding ); -- mvd 6,7,1,8->5; + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.vn asc range between unbounded preceding and 4 preceding ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.vn asc), +win4 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc); -- mvd 4,5,1,6->3; 5->7; 1->8; 10,5,4,1,6->9; + +-- STDDEV() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 2,6->5; + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.cn) following ), +win2 as (order by ow_sale.cn asc); -- mvd 5,6->4; 5->7; + +-- STDDEV() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.pn desc range between unbounded preceding and unbounded following ); -- mvd 4,7,2->6; + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.cn asc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.cn order by ow_sale.vn desc), +win3 as (order by ow_sale.pn asc); -- mvd 7,8->6; 8,10->9; 7,8->11; 3->12; + +-- STDDEV() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.dt,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.pn asc range between floor(ow_sale.vn+ow_sale.cn) preceding and 0 preceding ); -- mvd 1,6->5; + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.vn order by ow_sale.vn desc range between 1 preceding and floor(ow_sale.prc+ow_sale.vn) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.vn desc range between 1 preceding and floor(ow_sale.prc+ow_sale.vn) preceding ); -- mvd 2->4; 2->5; 2->6; + +-- STDDEV() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.vn asc range between floor(ow_sale.cn-ow_sale.cn) preceding and current row ); -- mvd 8,5,2,3->7; + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(partition by ow_sale.prc order by ow_sale.cn asc range between floor(ow_sale.cn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.cn asc range between floor(ow_sale.cn) preceding and current row ), +win2 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.cn desc); -- mvd 3,4->2; 3,4->5; 3,4->6; 3,4->7; 4,9,1->8; 4,9,1->10; + +-- STDDEV() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn desc range between 4 preceding and floor(ow_sale.vn*ow_sale.cn) following ); -- mvd 3,4->2; + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.dt order by ow_sale.pn desc range between 0 preceding and 3 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.pn desc range between 0 preceding and 3 following ), +win2 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc), +win3 as (order by ow_sale.vn desc); -- mvd 6,7,8->5; 10,1,7->9; 10,1,7->11; 10,1,7->12; 7->13; 6,7,8->14; + +-- STDDEV() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.vn desc range between 1 preceding and unbounded following ); -- mvd 2,1,4,5->3; + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.pn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.pn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.cn asc range between 3 preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.cn asc range between 3 preceding and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.pn order by ow_sale.pn desc); -- mvd 6,1,7,2->5; 6,4,2->8; 6,4,2->9; 6,4,2->10; 6,4,2->11; 6,1,7,2->12; + +-- STDDEV() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.pn desc range between current row and current row ); -- mvd 3,4,5,1->2; + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn+ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.vn order by ow_sale.cn asc range between current row and current row ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,1,4,5->2; 3->6; 1->7; 3->8; + +-- STDDEV() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.cn asc range between current row and 1 following ); -- mvd 5,6,3->4; + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.vn desc range between current row and floor(ow_sale.pn) following ), +win2 as (order by ow_sale.vn asc); -- mvd 3,1->4; 1->5; + +-- STDDEV() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.dt order by ow_sale.vn desc range between current row and unbounded following ); -- mvd 5,3,6->4; + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.cn desc range between current row and unbounded following ); -- mvd 1,3,4->2; 1,3,4->5; + +-- STDDEV() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.pn asc range between 0 following and floor(ow_sale.vn+ow_sale.qty) following ); -- mvd 1,3,4->2; + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.vn asc range between floor(ow_sale.vn) following and floor(ow_sale.qty) following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 6,7,1->5; 2->8; 2->9; 7->10; 2->11; + +-- STDDEV() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.vn desc range between floor(ow_sale.vn) following and unbounded following ); -- mvd 4,5->3; + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.cn order by ow_sale.cn desc range between 1 following and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 4,5,2->3; 4->6; 1->7; + +-- STDDEV() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows unbounded preceding ); -- mvd 4,5,6->3; + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.prc)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows unbounded preceding ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.vn desc); -- mvd 2,4,5,1,6->3; 2,4,5,1,6->7; 2,5,4,1,9->8; 2,5,4,1,9->10; 2,5,4,1,9->11; 2,5,4,1,9->12; + +-- STDDEV() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows floor(ow_sale.pn) preceding ); -- mvd 3,4->2; + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows 4 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn+ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows 4 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows 4 preceding ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.pn desc), +win3 as (partition by ow_sale.dt order by ow_sale.vn desc); -- mvd 4,2,1,3,7->6; 4,2,1,3,7->8; 2,5,7->9; 4,2,1,3,7->10; 5,3->11; + +-- STDDEV() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows current row ); -- mvd 1,4,5->7; + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn-ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc rows current row ), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 6,7,1->5; 1->8; + +-- STDDEV() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc,ow_sale.vn desc rows between unbounded preceding and 2 preceding ); -- mvd 1,5,3,2->6; + +-- STDDEV() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and current row ); -- mvd 3,5->4; + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc), +win3 as (order by ow_sale.cn desc), +win4 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.pn asc), +win5 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.cn asc); -- mvd 5,6,3->4; 2,1,3->7; 5->8; 10,5,1,6,3->9; 2,1,3->11; 5,10->12; + +-- STDDEV() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and 6 following ); -- mvd 7,1,2,5->6; + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.prc order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.cn asc rows between unbounded preceding and 1 following ), +win2 as (partition by ow_sale.prc order by ow_sale.vn desc); -- mvd 1,4,2->3; 6,4->5; 6,4->7; 6,4->8; + +-- STDDEV() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc,ow_sale.pn desc rows between unbounded preceding and unbounded following ); -- mvd 3,1->2; + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc,ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 6,2,1,4->5; 6,2,1,4->7; + +-- STDDEV() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between 2 preceding and 9 preceding ); -- mvd 1,4,2->3; + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.vn*ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.cn asc rows between 4 preceding and floor(ow_sale.qty) preceding ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.pn desc), +win3 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,4->2; 6,1,4->5; 1,4->7; + +-- STDDEV() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.qty/ow_sale.qty) preceding and current row ); -- mvd 5,2,3->4; + +-- STDDEV() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between 1 preceding and floor(ow_sale.prc+ow_sale.vn) following ); -- mvd 2,6,7->5; + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between 2 preceding and 4 following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.prc order by ow_sale.cn desc), +win4 as (order by ow_sale.cn asc); -- mvd 1,4,5,6,7->3; 5->8; 10,1,5->9; 1->11; 5->12; 1->13; + +-- STDDEV() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.vn desc rows between floor(ow_sale.pn) preceding and unbounded following ); -- mvd 1,3,4,5,6->2; + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.cn)) OVER(partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn desc rows between 1 preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.pn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn desc rows between 1 preceding and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.pn order by ow_sale.cn asc), +win3 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.cn order by ow_sale.vn asc); -- mvd 3,4,5->2; 7,3,4,5->6; 3,4,5->8; 7,3,4,5->9; 7,3,11,4,5->10; 7,3,11,4,5->12; + +-- STDDEV() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between current row and current row ); -- mvd 1,6->5; + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc rows between current row and current row ), +win2 as (order by ow_sale.pn asc); -- mvd 4,5,2,1->3; 4,5,2,1->6; 1->7; + +-- STDDEV() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc rows between current row and floor(ow_sale.qty+ow_sale.pn) following ); -- mvd 4,5,1->3; + +-- STDDEV() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows between current row and unbounded following ); -- mvd 3,4,5->2; + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.cn desc rows between current row and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.vn desc), +win3 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn asc), +win4 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.pn asc); -- mvd 2,4,5->3; 4,1,5->6; 2,5->7; 9,10,4,5->8; + +-- STDDEV() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between 3 following and floor(ow_sale.qty) following ); -- mvd 5,1,6->4; + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc rows between floor(ow_sale.cn) following and floor(ow_sale.cn) following ), +win2 as (order by ow_sale.vn asc); -- mvd 4,5->3; 5->6; 5->7; 5->8; + +-- STDDEV() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between 3 following and unbounded following ); -- mvd 3,1->2; + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.vn desc rows between floor(ow_sale.cn/ow_sale.pn) following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn-ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn/ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.vn desc rows between floor(ow_sale.cn/ow_sale.pn) following and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.vn desc rows between floor(ow_sale.cn/ow_sale.pn) following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc); -- mvd 6,7,4->5; 6,7,4->8; 7->9; 7->10; 3,6,2,7,4->11; 6,7,4->12; + +-- STDDEV_POP() function with NULL OVER() clause -- + +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (); -- mvd 3->3; + +-- STDDEV_POP() function with OVER() clause having ONLY PARTITION BY -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.dt); -- mvd 3,1,6->5; + +-- STDDEV_POP() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.dt), +win2 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.vn desc); -- mvd 8,4,3,1->7; 8,4,3,1->9; 6,3,1->10; 6,3,1->11; + +-- STDDEV_POP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc); -- mvd 2->7; + +-- STDDEV_POP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn+ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc), +win2 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc); -- mvd 1->7; 1->8; 1->9; 3,1->10; + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ); -- mvd 2->6; + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc+ow_sale.vn)) OVER(order by ow_sale.vn asc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn*ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range unbounded preceding ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc), +win4 as (order by ow_sale.cn desc); -- mvd 3->2; 5->4; 3->6; 8,3,9->7; 5->10; + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range 1 preceding ); -- mvd 2->5; + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.pn) as int),cast (floor(ow_sale.vn+ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn*ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range 1 preceding ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc), +win4 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 4->3; 4->5; 1->6; 4->7; 1->8; 1->9; + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range current row ); -- mvd 8->7; + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ), +win2 as (order by ow_sale.cn asc); -- mvd 6->5; 6->7; + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and 0 preceding ); -- mvd 5->4; + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.cn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty+ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.cn) preceding ), +win2 as (partition by ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc); -- mvd 4->3; 4->5; 4,7,1->6; 9,4,1->8; + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 4->3; + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and 2 following ); -- mvd 4->3; + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.cn)) OVER(order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.prc order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.qty) following ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.dt order by ow_sale.cn desc), +win3 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.prc order by ow_sale.vn desc), +win4 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 4->3; 4->5; 4,7,8->6; 1,4,2,8->9; 1,4,2,8->10; 4->11; + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and unbounded following ); -- mvd 6->5; + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(order by ow_sale.vn desc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn-ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc); -- mvd 4->5; 4->6; 8,3,9->7; 8,3,9->10; 8,3,9->11; 8,3,9->12; + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 2 preceding and floor(ow_sale.qty*ow_sale.cn) preceding ); -- mvd 5->4; + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc/ow_sale.cn) as int),cast (floor(ow_sale.pn+ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.vn) preceding and 2 preceding ), +win2 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.dt,ow_sale.cn order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.vn desc), +win4 as (order by ow_sale.ord, ow_sale.vn asc), +win5 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->2; 5,6,7,3->4; 3->8; 3->9; 6,1->10; + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 3 preceding and current row ); -- mvd 1->3; + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn+ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between floor(ow_sale.pn-ow_sale.vn) preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc); -- mvd 3->2; 3->4; 3->5; 3->6; 8,9->7; + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.qty)) OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 3 preceding and 4 following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc); -- mvd 4->3; 4->5; 7->6; 7->8; 7->9; 11,7,4,2->10; + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 1 preceding and unbounded following ); -- mvd 4->3; + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc-ow_sale.qty)) OVER(order by ow_sale.cn asc range between floor(ow_sale.vn) preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.vn) preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.cn desc), +win3 as (order by ow_sale.vn asc); -- mvd 1->3; 5,1,6,2->4; 6->7; 1->8; + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and current row ); -- mvd 6->5; + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(order by ow_sale.cn asc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.cn asc range between current row and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and current row ); -- mvd 4->6; 4->7; 4->8; + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and 0 following ); -- mvd 2->4; + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and unbounded following ); -- mvd 3->2; + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and unbounded following ), +win2 as (order by ow_sale.vn asc), +win3 as (order by ow_sale.cn desc); -- mvd 3->5; 7->6; 9->8; 7->10; + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 1 following and 0 following ); -- mvd 3->2; + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 1 following and 3 following ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.qty order by ow_sale.pn desc); -- mvd 4->3; 4->5; 7,4,1->6; + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.pn/ow_sale.qty) following and unbounded following ); -- mvd 3->2; + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 2 following and unbounded following ), +win2 as (order by ow_sale.vn asc); -- mvd 2->4; 1->5; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows unbounded preceding ); -- mvd 5->4; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows unbounded preceding ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.cn desc); -- mvd 4,5->3; 4->6; 4->7; 4->8; 4->9; 4->10; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.cn desc rows 8 preceding ); -- mvd 2,5->4; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn*ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows floor(ow_sale.cn+ow_sale.prc) preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 2->5; 2->6; 2->7; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc rows current row ); -- mvd 4,2->3; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.cn asc rows current row ), +win2 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.pn desc); -- mvd 1,2->4; 6,2,7->5; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.cn*ow_sale.qty) preceding ); -- mvd 4,5->3; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.cn) as int),cast (floor(ow_sale.prc+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between unbounded preceding and 4 preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (order by ow_sale.pn asc); -- mvd 3->2; 5->4; 5->6; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.vn desc rows between unbounded preceding and current row ); -- mvd 2,3->5; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn-ow_sale.pn) as int),cast (floor(ow_sale.cn*ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc); -- mvd 3,4->2; 3->5; 7,8,9,3,4->6; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.pn+ow_sale.qty) following ); -- mvd 6->5; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn asc rows between unbounded preceding and 1 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn asc rows between unbounded preceding and 1 following ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.pn desc); -- mvd 3,1->2; 1->4; 3,6,1->5; 1->7; 1->8; 3,1->9; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and unbounded following ); -- mvd 7->6; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc,ow_sale.pn asc rows between 2 preceding and 5 preceding ); -- mvd 3,1->2; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc,ow_sale.pn desc rows between 3 preceding and 1 preceding ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.cn desc), +win3 as (partition by ow_sale.prc,ow_sale.qty order by ow_sale.vn asc), +win4 as (order by ow_sale.cn asc); -- mvd 3,4->2; 3,4->5; 7,1,3,4->6; 9,3,10->8; 1->11; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.vn desc rows between 5 preceding and current row ); -- mvd 1,5->4; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn desc rows between floor(ow_sale.qty+ow_sale.cn) preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.pn order by ow_sale.pn desc), +win4 as (partition by ow_sale.prc order by ow_sale.cn desc); -- mvd 5,6->4; 3->7; 9,1,6->8; 3->10; 12,5->11; 5,6->13; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.vn/ow_sale.pn) preceding and floor(ow_sale.pn) following ); -- mvd 5->6; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.prc,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.pn desc rows between floor(ow_sale.qty) preceding and 2 following ), +win2 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.prc order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 6->5; 2,4,6->7; 4->8; 6->9; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between 7 preceding and unbounded following ); -- mvd 2->5; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.cn desc rows between 3 preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.cn desc rows between 3 preceding and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.qty order by ow_sale.cn asc); -- mvd 1,3,4->2; 1,6,4->5; 1,3,4->7; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn asc rows between current row and current row ); -- mvd 2,6->5; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.cn asc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between current row and current row ), +win2 as (order by ow_sale.vn asc); -- mvd 4->3; 4->5; 4->6; 4->7; 4->8; 10->9; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between current row and floor(ow_sale.qty+ow_sale.prc) following ); -- mvd 4->6; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn asc,ow_sale.cn desc rows between current row and floor(ow_sale.vn*ow_sale.vn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn asc,ow_sale.cn desc rows between current row and floor(ow_sale.vn*ow_sale.vn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn asc,ow_sale.cn desc rows between current row and floor(ow_sale.vn*ow_sale.vn) following ), +win2 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.dt order by ow_sale.vn asc); -- mvd 2,6,7->5; 2,6,7->8; 3,6,10->9; 2,6,7->11; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between current row and unbounded following ); -- mvd 1->3; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and unbounded following ), +win2 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.qty order by ow_sale.vn asc); -- mvd 3->5; 1,2,4->6; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between floor(ow_sale.vn*ow_sale.prc) following and 5 following ); -- mvd 2->6; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc*ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.prc) following and 1 following ); -- mvd 6->7; 6->8; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.cn) following and unbounded following ); -- mvd 7->6; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.cn) following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 4->5; 7->6; + +-- STDDEV_POP() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.cn desc,ow_sale.pn asc,ow_sale.cn asc); -- mvd 6,1,8->7; + +-- STDDEV_POP() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.vn desc,ow_sale.vn desc,ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.vn desc,ow_sale.vn desc,ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn/ow_sale.qty)) OVER(partition by ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.vn desc,ow_sale.vn desc,ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.vn desc,ow_sale.vn desc,ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.vn desc,ow_sale.vn desc,ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.vn desc,ow_sale.vn desc,ow_sale.cn asc); -- mvd 3,4,1->2; 3,4,1->5; 3,4,1->6; 3,4,1->7; 3,4,1->8; 3,4,1->9; + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.cn desc range unbounded preceding ); -- mvd 8->7; + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.cn asc range unbounded preceding ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.pn asc), +win3 as (order by ow_sale.pn asc), +win4 as (order by ow_sale.pn desc); -- mvd 1,4,5->3; 7,5,8->6; 8->9; 8->10; 8->11; 7,5,8->12; + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.vn asc range floor(ow_sale.cn) preceding ); -- mvd 3,2,8,9->7; + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn*ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc/ow_sale.vn)) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc order by ow_sale.vn desc range floor(ow_sale.prc) preceding ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc), +win4 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 8,9,1->7; 11->10; 11->12; 11->13; 11->14; + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.vn asc range current row ); -- mvd 5,6,2->4; + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.dt order by ow_sale.vn asc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.vn)) OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt order by ow_sale.vn asc range current row ), +win2 as (order by ow_sale.cn desc); -- mvd 6,3,7->5; 6,3,7->8; 6->9; 6->10; 6->11; 6,3,7->12; + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.qty) preceding ), +win2 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 4,5,6->3; 4,5,6->7; 6->8; + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.pn asc range between unbounded preceding and current row ); -- mvd 2,6->5; + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.pn asc range between unbounded preceding and current row ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.prc,ow_sale.cn order by ow_sale.pn desc), +win4 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.vn asc); -- mvd 5,3->4; 7,5,3->6; 5,3->8; 10,7,3->9; 5,3->11; 10,5,13,3->12; + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.pn desc range between unbounded preceding and floor(ow_sale.pn+ow_sale.vn) following ); -- mvd 3,4,5->2; + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.vn asc range between unbounded preceding and floor(ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.vn asc range between unbounded preceding and floor(ow_sale.qty) following ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.pn asc); -- mvd 2,5,3->4; 2,5,3->6; 8->7; 8->9; + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.vn desc range between unbounded preceding and unbounded following ); -- mvd 6,7->5; + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.cn order by ow_sale.vn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.vn asc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.pn order by ow_sale.vn asc); -- mvd 5,6,1->4; 1,8->7; 5,6,1->9; 5,6,1->10; + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.pn desc range between 4 preceding and floor(ow_sale.qty+ow_sale.cn) preceding ); -- mvd 8->7; + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.pn asc range between 4 preceding and current row ); -- mvd 3,4->2; + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.prc,ow_sale.qty order by ow_sale.pn desc range between floor(ow_sale.qty+ow_sale.pn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.qty)) OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.prc,ow_sale.qty order by ow_sale.pn desc range between floor(ow_sale.qty+ow_sale.pn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.prc,ow_sale.qty order by ow_sale.pn desc range between floor(ow_sale.qty+ow_sale.pn) preceding and current row ), +win2 as (order by ow_sale.vn asc); -- mvd 3,4,5,6,7->2; 3,4,5,6,7->8; 3,4,5,6,7->9; 6->10; + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn*ow_sale.qty)) OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn+ow_sale.cn) as int),cast (floor(ow_sale.vn/ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.cn desc range between floor(ow_sale.vn+ow_sale.cn) preceding and floor(ow_sale.cn+ow_sale.vn) following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,1,5,2->3; 4->6; 4->7; 4->8; 10,4,11,5->9; 4->12; + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc range between floor(ow_sale.qty*ow_sale.qty) preceding and unbounded following ); -- mvd 5,6,7->4; + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(partition by ow_sale.cn order by ow_sale.vn desc range between floor(ow_sale.prc*ow_sale.vn) preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.vn desc range between floor(ow_sale.prc*ow_sale.vn) preceding and unbounded following ), +win2 as (order by ow_sale.vn asc); -- mvd 5,1->4; 1->6; 5,1->7; + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.pn desc range between current row and current row ); -- mvd 4,2->5; + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.dt order by ow_sale.pn asc range between current row and current row ), +win2 as (partition by ow_sale.cn,ow_sale.qty order by ow_sale.pn desc); -- mvd 3,1->2; 5,6,1->4; + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.pn asc range between current row and 2 following ); -- mvd 8,3,2,1->7; + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.pn order by ow_sale.vn asc range between current row and floor(ow_sale.pn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.vn asc range between current row and floor(ow_sale.pn) following ), +win2 as (order by ow_sale.vn asc); -- mvd 3,4,5->2; 3,4,5->6; 4->7; + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn desc range between current row and unbounded following ); -- mvd 4,5->3; + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn-ow_sale.cn) as int),cast (floor(ow_sale.pn/ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn asc range between current row and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.prc order by ow_sale.cn desc), +win3 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 5->4; 7,8,5,2->6; 8,1->9; + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.cn asc range between floor(ow_sale.prc) following and 0 following ); -- mvd 1,3,4,5->2; + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.cn asc range between floor(ow_sale.prc) following and floor(ow_sale.pn-ow_sale.vn) following ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc); -- mvd 7,1->6; 2,7,4->8; + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.pn asc range between 1 following and unbounded following ); -- mvd 1,8,3,9->7; + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.prc)) OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.prc)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn asc range between 2 following and unbounded following ), +win2 as (order by ow_sale.pn desc); -- mvd 4->3; 1->5; 1->6; 1->7; 1->8; 1->9; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows unbounded preceding ); -- mvd 1,8,2,3->7; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows unbounded preceding ), +win2 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn desc), +win3 as (order by ow_sale.cn asc); -- mvd 6,7,8->5; 1,8->9; 6->10; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc rows 6 preceding ); -- mvd 3,4->2; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows 4 preceding ), +win2 as (partition by ow_sale.pn order by ow_sale.vn desc), +win3 as (order by ow_sale.vn desc); -- mvd 1,3,4->2; 6,4->5; 6,4->7; 6,4->8; 6,4->9; 6->10; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows current row ); -- mvd 3->2; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows current row ), +win2 as (partition by ow_sale.pn order by ow_sale.cn asc), +win3 as (partition by ow_sale.pn order by ow_sale.cn desc), +win4 as (order by ow_sale.cn asc); -- mvd 2,3,1->5; 4,1->6; 4,1->7; 4,1->8; 4,1->9; 4->10; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.prc,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(partition by ow_sale.qty,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.vn) preceding ), +win2 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc); -- mvd 1,7,8,5->6; 8,2,5->9; 8,2,5->10; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and current row ); -- mvd 1,8,3->7; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(partition by ow_sale.prc,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc); -- mvd 4,2,5,1->3; 4,2,5,1->6; 4,2,5,1->7; 9->8; 4,2,9,5,1->10; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.vn) following ); -- mvd 8,6,2->7; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows between unbounded preceding and 0 following ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.vn desc); -- mvd 8,9,2->7; 2->10; 9->11; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.pn asc rows between unbounded preceding and unbounded following ); -- mvd 5,6,7,3->4; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.pn desc); -- mvd 3,5->4; 3,5->6; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between floor(ow_sale.prc+ow_sale.vn) preceding and 6 preceding ); -- mvd 4,1->3; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn/ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.prc) preceding and 0 preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,4,5->2; 1->6; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc,ow_sale.pn asc rows between 3 preceding and current row ); -- mvd 4,1,5,2->3; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc/ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.cn desc rows between floor(ow_sale.prc) preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc); -- mvd 4,5,6,1->3; 5,8,2->7; 5,2->9; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.prc+ow_sale.cn) preceding and floor(ow_sale.vn) following ); -- mvd 6,7->5; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.vn) as int),cast (floor(ow_sale.vn-ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.cn order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows between 2 preceding and floor(ow_sale.pn/ow_sale.pn) following ), +win2 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.vn asc), +win3 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc); -- mvd 4,5,6,2->3; 5,6->7; 5,1->8; 5,6->9; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.prc,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.prc) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.prc) preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.prc,ow_sale.cn order by ow_sale.cn asc), +win3 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.vn asc); -- mvd 5,6,7->4; 5,6,7->8; 5,6,1->9; 6,7,2->10; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc rows between current row and current row ); -- mvd 3,4,5,6,7->2; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between current row and 5 following ); -- mvd 3,4->2; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn asc rows between current row and floor(ow_sale.pn) following ), +win2 as (partition by ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 6,2,1->5; 8,6,9->7; 8,6,9->10; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc,ow_sale.pn asc rows between current row and unbounded following ); -- mvd 2,1,6->5; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.vn desc rows between current row and unbounded following ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc), +win4 as (order by ow_sale.vn asc); -- mvd 4,2,1,5,6->3; 6->7; 4,2,5,9->8; 4,2,1,5,6->10; 5->11; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc rows between 6 following and 7 following ); -- mvd 1,3,4->2; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.qty)) OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.cn order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.cn) following and floor(ow_sale.pn/ow_sale.qty) following ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.cn order by ow_sale.vn asc), +win3 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.vn asc), +win4 as (order by ow_sale.cn desc); -- mvd 1,4,5->3; 7,1,8,4,2->6; 7,1,8,4,2->9; 7,1,8,4->10; 1->11; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn asc rows between 1 following and unbounded following ); -- mvd 2,1->4; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.prc) following and unbounded following ), +win2 as (partition by ow_sale.cn order by ow_sale.cn asc), +win3 as (partition by ow_sale.prc,ow_sale.qty order by ow_sale.pn asc); -- mvd 1,4,5,2->3; 1->6; 1,4,5,2->7; 9,10,2->8; + +-- STDDEV_SAMP() function with NULL OVER() clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (); -- mvd 2->2; + +-- STDDEV_SAMP() function with OVER() clause having ONLY PARTITION BY -- + +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.vn); -- mvd 4,5,6->3; + +-- STDDEV_SAMP() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.cn), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.cn desc); -- mvd 6,2->5; 8->7; 8->9; 6->10; + +-- STDDEV_SAMP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc,ow_sale.cn desc); -- mvd 4,5->3; + +-- STDDEV_SAMP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +, +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc); -- mvd 3->2; 3->4; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range unbounded preceding ); -- mvd 1->4; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn+ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty/ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range unbounded preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc), +win4 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.vn desc); -- mvd 1->3; 5->4; 7,5,8,9->6; 7,5,8,9->10; 1,7,5->11; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range 2 preceding ); -- mvd 3->6; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range 3 preceding ); -- mvd 3->6; 3->7; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range current row ); -- mvd 2->5; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range current row ); -- mvd 7->6; 7->8; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and 2 preceding ); -- mvd 1->6; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.cn order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.cn) preceding ), +win2 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.cn order by ow_sale.vn desc); -- mvd 2->6; 3,8,2,4->7; 3,8,2,4->9; 3,8,2,4->10; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and current row ); -- mvd 3->2; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and 2 following ); -- mvd 1->2; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.vn+ow_sale.pn) following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc); -- mvd 6->5; 6->7; 6,9->8; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and unbounded following ); -- mvd 3->7; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn+ow_sale.pn) as int),cast (floor(ow_sale.pn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.pn asc); -- mvd 2->4; 6,7->5; 6,7->8; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 4 preceding and 3 preceding ); -- mvd 4->7; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn+ow_sale.qty)) OVER(order by ow_sale.cn asc range between 1 preceding and 3 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 1 preceding and 3 preceding ), +win2 as (order by ow_sale.pn asc); -- mvd 4->5; 4->6; 1->7; 4->8; 1->9; 4->10; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 1 preceding and current row ); -- mvd 1->5; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 3 preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc); -- mvd 3->6; 1->7; 1->8; 10,3,11,1,2->9; 1->12; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.qty) preceding and 2 following ); -- mvd 5->4; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc*ow_sale.cn)) OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.qty)) OVER(order by ow_sale.cn desc range between 0 preceding and floor(ow_sale.qty) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 0 preceding and floor(ow_sale.qty) following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc), +win4 as (order by ow_sale.vn desc); -- mvd 1->7; 1->8; 1->9; 1->10; 2->11; 1->12; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 4 preceding and unbounded following ); -- mvd 4->3; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.qty+ow_sale.cn) preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 6->5; 2->7; 2->8; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and current row ); -- mvd 1->6; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and 1 following ); -- mvd 5->4; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.vn desc range between current row and floor(ow_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.vn)) OVER(order by ow_sale.vn desc range between current row and floor(ow_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and floor(ow_sale.cn) following ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.pn asc); -- mvd 3->2; 3->4; 3->5; 3,7->6; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and unbounded following ); -- mvd 8->7; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.cn)) OVER(order by ow_sale.cn desc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.vn asc), +win3 as (order by ow_sale.cn asc); -- mvd 6->5; 6->7; 6->8; 10,11,4->9; 6->12; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.vn) following and 2 following ); -- mvd 3->2; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.pn) following and unbounded following ); -- mvd 5->4; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.prc) following and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.qty order by ow_sale.vn asc); -- mvd 1->4; 6,7,2,1->5; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc,ow_sale.cn asc rows unbounded preceding ); -- mvd 6,2->5; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty+ow_sale.vn) as int),cast (floor(ow_sale.prc/ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows unbounded preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows unbounded preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 5->4; 5->6; 8->7; 8->9; 5->10; 5->11; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc+ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc,ow_sale.vn asc rows floor(ow_sale.qty) preceding ), +win2 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc), +win4 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc); -- mvd 1,3->2; 1,5,3,6->4; 1,8,6->7; 1,5,3,6->9; 11,1,8,6->10; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows current row ); -- mvd 3,6->5; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows current row ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.vn desc); -- mvd 8->7; 1,10,4,11,8->9; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and 5 preceding ); -- mvd 5->7; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 3->2; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 2->5; 2->6; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.vn asc rows between unbounded preceding and 3 following ); -- mvd 6,3->5; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn/ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn*ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.qty/ow_sale.qty) following ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.dt order by ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc), +win4 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc); -- mvd 1->7; 1->8; 6,2->9; 1,2->10; 12,1,2->11; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and unbounded following ); -- mvd 4->3; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn/ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,1->2; 3->4; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows between floor(ow_sale.vn) preceding and 0 preceding ); -- mvd 4,2->3; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows between 4 preceding and 2 preceding ); -- mvd 1->7; 1->8; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.prc,ow_sale.cn order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn+ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between 4 preceding and current row ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.prc,ow_sale.cn order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 4->5; 7,2,3->6; 7,2,3->8; 7,2,3->9; 2->10; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.cn desc rows between 1 preceding and floor(ow_sale.vn+ow_sale.cn) following ); -- mvd 4,1->3; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc+ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc,ow_sale.vn asc rows between floor(ow_sale.vn+ow_sale.qty) preceding and 4 following ), +win2 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn asc); -- mvd 1,3->2; 5,6->4; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.pn) preceding and unbounded following ); -- mvd 2->5; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.vn+ow_sale.qty) preceding and unbounded following ); -- mvd 5->4; 5->6; 5->7; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and current row ); -- mvd 2->4; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between current row and current row ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.vn desc), +win4 as (order by ow_sale.pn desc); -- mvd 4->3; 1->5; 1->6; 1->7; 4->8; 1->9; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn asc rows between current row and 1 following ); -- mvd 3,1->2; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between current row and floor(ow_sale.pn) following ), +win2 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.pn order by ow_sale.pn asc); -- mvd 4->3; 1,6,2,4->5; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and unbounded following ); -- mvd 4->5; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 6,1->5; 6,1->7; 6,1->8; 1->9; 1->10; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.vn) following and 0 following ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.vn desc); -- mvd 5->4; 5->6; 5->7; 9->8; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows between floor(ow_sale.prc) following and unbounded following ); -- mvd 8,1->7; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.dt,ow_sale.prc,ow_sale.qty,ow_sale.dt order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty/ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.cn desc rows between 3 following and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.qty,ow_sale.dt order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 3->2; 5,3,6,1->4; 5,3,6,1->7; 5,3,6,1->8; 10->9; + +-- STDDEV_SAMP() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.cn order by ow_sale.pn desc,ow_sale.pn desc); -- mvd 1,3,4->2; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.pn order by ow_sale.vn desc range unbounded preceding ); -- mvd 1,8,9,3->7; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.dt order by ow_sale.vn asc range floor(ow_sale.vn/ow_sale.cn) preceding ); -- mvd 4,5,6,1->3; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.qty,ow_sale.dt order by ow_sale.cn asc range floor(ow_sale.pn) preceding ), +win2 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.pn asc); -- mvd 6,7,1,2->5; 7,9->8; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn asc range current row ); -- mvd 1,6->5; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn asc range current row ), +win2 as (order by ow_sale.vn desc); -- mvd 5,6->4; 2->7; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.pn asc range between unbounded preceding and 2 preceding ); -- mvd 5,6->4; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.prc) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.prc) preceding ); -- mvd 1,4,2,5->3; 1,4,2,5->6; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.qty order by ow_sale.pn desc range between unbounded preceding and current row ); -- mvd 1,4,5,2->3; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc range between unbounded preceding and 0 following ); -- mvd 4,1,5,6->3; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.dt order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.pn) following ), +win2 as (order by ow_sale.pn asc); -- mvd 3,1,4->2; 4->5; 3,1,4->6; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.pn asc range between unbounded preceding and unbounded following ); -- mvd 3,4,5,6->2; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.cn desc range between unbounded preceding and unbounded following ); -- mvd 5,2->4; 5,2->6; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.pn desc range between 3 preceding and 3 preceding ); -- mvd 4->3; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.prc,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty+ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.pn asc range between 2 preceding and floor(ow_sale.cn) preceding ), +win2 as (order by ow_sale.ord, ow_sale.vn asc), +win3 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.qty order by ow_sale.vn desc); -- mvd 7,4,8->6; 4->9; 11,1,4,8->10; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.dt order by ow_sale.cn asc range between 1 preceding and current row ); -- mvd 6,2,7->5; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.dt,ow_sale.vn,ow_sale.prc order by ow_sale.cn desc range between 3 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn/ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.prc order by ow_sale.cn desc range between 3 preceding and current row ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,4,5,6->2; 3,4,5,6->7; 4->8; 6->9; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.vn desc range between floor(ow_sale.pn+ow_sale.vn) preceding and floor(ow_sale.cn) following ); -- mvd 8,1,2->7; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty+ow_sale.prc) as int),cast (floor(ow_sale.prc/ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.qty,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.pn desc range between 3 preceding and floor(ow_sale.pn*ow_sale.cn) following ), +win2 as (partition by ow_sale.qty,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc); -- mvd 1,5->4; 7,3->6; 7,3->8; 7,3->9; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.vn desc range between floor(ow_sale.vn) preceding and unbounded following ); -- mvd 6,3->5; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.qty,ow_sale.pn order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty/ow_sale.cn)) OVER(partition by ow_sale.dt order by ow_sale.cn desc range between 1 preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.pn) as int),cast (floor(ow_sale.pn-ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn desc range between 1 preceding and unbounded following ), +win2 as (partition by ow_sale.qty,ow_sale.pn order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 1,4->3; 2,6,7->5; 2,6,7->8; 1,4->9; 1->10; 1->11; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.vn desc range between current row and current row ); -- mvd 8,6,3->7; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.qty)) OVER(partition by ow_sale.prc,ow_sale.dt order by ow_sale.pn desc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt order by ow_sale.pn desc range between current row and current row ), +win2 as (order by ow_sale.cn asc); -- mvd 4,5,1->3; 2->6; 4,5,1->7; 4,5,1->8; 2->9; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc range between current row and floor(ow_sale.prc) following ); -- mvd 4,1,5->3; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc range between current row and 2 following ), +win2 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.pn desc); -- mvd 4,5,6->3; 4,5,6->7; 6,9->8; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn desc range between current row and unbounded following ); -- mvd 3,1->2; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.vn)) OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.prc order by ow_sale.vn asc range between current row and unbounded following ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.pn desc); -- mvd 4,5,6->3; 6->7; 9->8; 6->10; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.cn desc range between 2 following and floor(ow_sale.qty) following ); -- mvd 6,7->5; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.pn desc range between 4 following and unbounded following ); -- mvd 4->3; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn asc rows unbounded preceding ); -- mvd 7,5,1,2->6; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc rows unbounded preceding ), +win2 as (order by ow_sale.cn asc); -- mvd 3,4,1->2; 4->5; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc*ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc rows floor(ow_sale.qty/ow_sale.vn) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc rows floor(ow_sale.qty/ow_sale.vn) preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 1,8,4,3,9->7; 1->10; 1,8,4,3,9->11; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc rows current row ); -- mvd 4,1,5,6,2->3; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.qty)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc rows current row ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.prc order by ow_sale.vn desc), +win3 as (order by ow_sale.vn desc); -- mvd 6,2,3,7->5; 6,2,3,7->8; 6,2,3,7->9; 11,2,6,3,7->10; 3->12; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.vn) preceding ); -- mvd 3,4,1,5,6->2; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.qty)) OVER(partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.vn*ow_sale.vn) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.vn*ow_sale.vn) preceding ); -- mvd 8,1->7; 8,1->9; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and current row ); -- mvd 1,4->3; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn/ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.vn desc); -- mvd 5,3,1,6->4; 8,1->7; 5,3,1,6->9; 5,3,1,6->10; 8,1->11; 8,1->12; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and floor(ow_sale.vn) following ); -- mvd 4,1,5->3; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 5,1->4; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn order by ow_sale.pn desc); -- mvd 4,1,2->3; 1,6->5; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.pn+ow_sale.vn) preceding and 4 preceding ); -- mvd 3,8,6->7; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.dt,ow_sale.dt order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.pn asc rows between floor(ow_sale.qty) preceding and floor(ow_sale.pn) preceding ), +win2 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.cn asc), +win3 as (order by ow_sale.cn desc); -- mvd 5->4; 3,7->6; 5->8; 3->9; 3,7->10; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between floor(ow_sale.qty) preceding and current row ); -- mvd 3,1,4->2; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between floor(ow_sale.pn/ow_sale.vn) preceding and floor(ow_sale.vn+ow_sale.qty) following ); -- mvd 4,5,6,1,7->3; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc rows between floor(ow_sale.qty*ow_sale.prc) preceding and floor(ow_sale.prc) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc rows between floor(ow_sale.qty*ow_sale.prc) preceding and floor(ow_sale.prc) following ), +win2 as (partition by ow_sale.qty order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,5->6; 2,1->7; 3,5->8; 2->9; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between 8 preceding and unbounded following ); -- mvd 4,6,7,2->5; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows between 2 preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows between 2 preceding and unbounded following ); -- mvd 6,3->5; 6,3->7; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc rows between current row and current row ); -- mvd 1,4,6,7->5; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between current row and current row ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.cn desc), +win4 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.vn asc); -- mvd 5,6,3,2->4; 2->7; 5->8; 6,10,2->9; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between current row and 4 following ); -- mvd 2,6,4->5; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.vn+ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows between current row and 1 following ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc); -- mvd 4,5,1->3; 4,5,1->6; 8->7; 5,1,10,11->9; 5,1,10,11->12; 4,5,1->13; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc rows between current row and unbounded following ); -- mvd 1,5,6->4; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc), +win4 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,5,6,7->4; 5->8; 5->9; 3,5,6,7->10; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.cn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.prc)) OVER(partition by ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.pn) following and floor(ow_sale.pn+ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(partition by ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.pn) following and floor(ow_sale.pn+ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.pn) following and floor(ow_sale.pn+ow_sale.qty) following ); -- mvd 6,7,8->5; 6,7,8->9; 6,7,8->10; 6,7,8->11; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc rows between 9 following and unbounded following ); -- mvd 4,5,1->3; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between floor(ow_sale.pn*ow_sale.cn) following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 2,3->5; 4->6; 2,3->7; + +-- SUM() function with NULL OVER() clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (); -- mvd 2->2; + +-- SUM() function with NULL OVER() clause in combination with other window functions -- + +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.vn)) OVER(),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.prc order by ow_sale.pn desc), +win3 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.pn desc), +win4 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.vn asc); -- mvd 3->3; 2,5,6,7,1,8->4; 3->9; 7,8->10; 3->11; 5,6,1,8->12; + +-- SUM() function with OVER() clause having ONLY PARTITION BY -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn); -- mvd 3,4->2; + +-- SUM() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.dt,ow_sale.dt order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc), +win2 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.cn asc); -- mvd 3->2; 1,5->4; 3->6; 1,5->7; + +-- SUM() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc,ow_sale.vn asc,ow_sale.cn asc); -- mvd 1,3,4->2; + +-- SUM() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(order by ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn desc); -- mvd 1,3,4->2; 1,3,4->5; 1,3,4->6; 1,3,4->7; 1,3,4->8; 1,3,4->9; + +-- SUM() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range unbounded preceding ); -- mvd 3->5; + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.pn)) OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range unbounded preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 3->4; 6->5; 6->7; + +-- SUM() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range 2 preceding ); -- mvd 3->2; + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn+ow_sale.vn) as int),cast (floor(ow_sale.qty*ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range 2 preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 3->2; 5->4; 5->6; + +-- SUM() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ); -- mvd 4->3; + +-- SUM() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.cn) preceding ); -- mvd 6->5; + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.vn,ow_sale.vn order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and 2 preceding ), +win2 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.vn desc); -- mvd 2->5; 3->6; 3->7; 3->8; 3->9; + +-- SUM() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and current row ); -- mvd 6->5; + +-- SUM() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.prc-ow_sale.prc) following ); -- mvd 5->4; + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn*ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty/ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and 4 following ), +win2 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 7->6; 1,7->8; 2->9; 1,7->10; + +-- SUM() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and unbounded following ); -- mvd 4->3; + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.pn desc); -- mvd 3->2; 5->4; 5->6; 5->7; + +-- SUM() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 2 preceding and floor(ow_sale.qty) preceding ); -- mvd 4->3; + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 3 preceding and floor(ow_sale.qty) preceding ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.pn desc), +win3 as (partition by ow_sale.vn order by ow_sale.vn desc); -- mvd 2->3; 5,6->4; 5->7; + +-- SUM() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.cn+ow_sale.cn) preceding and current row ); -- mvd 3->2; + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 1 preceding and current row ), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.prc order by ow_sale.pn asc); -- mvd 7->6; 7->8; 10,3,7,2->9; 10,3,7,2->11; 10,3,13,2->12; 10,3,7,2->14; + +-- SUM() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.vn) preceding and 4 following ); -- mvd 5->4; + +-- SUM() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 3 preceding and unbounded following ); -- mvd 1->2; + +-- SUM() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and current row ); -- mvd 4->5; + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and current row ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 3->2; 5->4; 5->6; 5->7; + +-- SUM() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and 4 following ); -- mvd 4->5; + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.prc)) OVER(order by ow_sale.cn desc range between current row and floor(ow_sale.prc*ow_sale.prc) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and floor(ow_sale.prc*ow_sale.prc) following ); -- mvd 2->3; 2->4; 2->5; + +-- SUM() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and unbounded following ); -- mvd 4->5; + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.pn/ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and unbounded following ), +win2 as (partition by ow_sale.qty order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc), +win4 as (order by ow_sale.cn desc); -- mvd 3->2; 3,5->4; 7->6; 3,5->8; 3->9; + +-- SUM() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 0 following and 4 following ); -- mvd 3->6; + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn+ow_sale.pn)) OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 4 following and floor(ow_sale.pn) following ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.cn asc); -- mvd 3->6; 3->7; 5->8; 1->9; 5->10; + +-- SUM() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.qty*ow_sale.cn) following and unbounded following ); -- mvd 4->3; + +-- SUM() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.pn desc rows unbounded preceding ); -- mvd 3,4->6; + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn*ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows unbounded preceding ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.cn desc); -- mvd 1,4->3; 1,6,4->5; 1,6,4->7; + +-- SUM() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows floor(ow_sale.qty) preceding ); -- mvd 6->5; + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows 1 preceding ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc); -- mvd 1,3->5; 1,3->6; 1,3->7; + +-- SUM() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.cn desc rows current row ); -- mvd 4,5->3; + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows current row ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 6->5; 6,4,8->7; 8->9; + +-- SUM() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between unbounded preceding and floor(ow_sale.qty) preceding ); -- mvd 2->3; + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.pn-ow_sale.pn) preceding ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.dt order by ow_sale.cn desc); -- mvd 3,5->4; 2,3,7,1->6; + +-- SUM() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 3->2; + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty/ow_sale.pn) as int),cast (floor(ow_sale.prc+ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.vn desc); -- mvd 3->2; 3->4; 3->5; 7->6; 9,3->8; 3->10; + +-- SUM() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.qty) following ); -- mvd 4->3; + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc,ow_sale.pn desc rows between unbounded preceding and 4 following ), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.pn order by ow_sale.vn asc), +win3 as (order by ow_sale.vn asc), +win4 as (order by ow_sale.cn desc); -- mvd 3,6->5; 8,3,6->7; 3->9; 2->10; 3,6->11; + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.vn desc); -- mvd 4->3; 4->5; 7->6; + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between 2 preceding and floor(ow_sale.pn-ow_sale.vn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between 2 preceding and floor(ow_sale.pn-ow_sale.vn) preceding ), +win2 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 3,1->2; 3,1->4; 6,3,1->5; 8->7; 8->9; 8->10; + +-- SUM() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows between 9 preceding and current row ); -- mvd 3,6->5; + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc rows between floor(ow_sale.cn) preceding and current row ); -- mvd 3,1->2; 3,1->4; + +-- SUM() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.vn+ow_sale.qty) preceding and floor(ow_sale.qty) following ); -- mvd 4->5; + +-- SUM() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.cn asc rows between 9 preceding and unbounded following ); -- mvd 6,4->5; + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between 3 preceding and unbounded following ), +win2 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc), +win4 as (partition by ow_sale.prc,ow_sale.dt order by ow_sale.pn asc); -- mvd 4,6->5; 2,4,3,8->7; 4->9; 4,6->10; 1,2,8->11; 1,2,8->12; + +-- SUM() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between current row and current row ); -- mvd 5->4; + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between current row and current row ), +win2 as (order by ow_sale.cn asc); -- mvd 1->4; 6->5; + +-- SUM() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between current row and floor(ow_sale.vn/ow_sale.cn) following ); -- mvd 5->4; + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between current row and 0 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between current row and 0 following ); -- mvd 1,3->2; 1,3->4; + +-- SUM() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ); -- mvd 4->3; + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.cn order by ow_sale.pn desc); -- mvd 4,5->3; 4,5->6; 8->7; 8->9; 1,4,5->10; + +-- SUM() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.pn asc rows between 3 following and floor(ow_sale.cn-ow_sale.cn) following ); -- mvd 1->4; + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 3 following and floor(ow_sale.qty+ow_sale.qty) following ), +win2 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.dt,ow_sale.vn order by ow_sale.pn asc); -- mvd 4->3; 6,1,7,8->5; 4->9; + +-- SUM() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between 3 following and unbounded following ); -- mvd 3->4; + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty-ow_sale.qty) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.vn*ow_sale.qty) following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (order by ow_sale.pn desc); -- mvd 4->3; 4->5; 7->6; 7->8; + +-- SUM() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.qty order by ow_sale.pn desc,ow_sale.cn asc); -- mvd 7,8,2,9,1->6; + +-- SUM() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.prc,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.vn order by ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(partition by ow_sale.vn order by ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.vn order by ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn desc); -- mvd 3,5,6->4; 3,5,6->7; 3,5,6->8; 3,5,6->9; + +-- SUM() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.cn desc range unbounded preceding ); -- mvd 3,5,6->4; + +-- SUM() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.pn desc range floor(ow_sale.cn+ow_sale.vn) preceding ); -- mvd 3,1->2; + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.qty) as int),cast (floor(ow_sale.prc+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn+ow_sale.pn) as int),cast (floor(ow_sale.vn+ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn/ow_sale.vn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.prc order by ow_sale.cn desc range floor(ow_sale.qty) preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc); -- mvd 6,7,8->5; 7->9; 6,7,11->10; 6,7,11->12; + +-- SUM() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.pn asc range current row ); -- mvd 4,3->6; + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.qty) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.cn desc range current row ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.qty order by ow_sale.vn asc); -- mvd 6,1,7->5; 1,7->8; 4,2->9; + +-- SUM() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn asc range between unbounded preceding and 2 preceding ); -- mvd 3,2->4; + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn+ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.prc) as int),cast (floor(ow_sale.pn*ow_sale.qty) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.pn desc range between unbounded preceding and 1 preceding ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc), +win4 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc), +win5 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,1,5->4; 3->6; 3,8,5->7; 10,3,1,5->9; 3->11; + +-- SUM() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.vn desc range between unbounded preceding and current row ); -- mvd 4,5,6->3; + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and current row ), +win2 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc); -- mvd 2,4,1,5,6->3; 1,6,8->7; 4,6->9; + +-- SUM() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.vn order by ow_sale.pn asc range between unbounded preceding and floor(ow_sale.cn) following ); -- mvd 1,6,7,8,2->5; + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn*ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn/ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn*ow_sale.vn)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.pn desc range between unbounded preceding and 1 following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 4,1->3; 4->5; 1->6; 1->7; 1->8; + +-- SUM() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc range between unbounded preceding and unbounded following ); -- mvd 4,5,2,6->3; + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.dt order by ow_sale.vn asc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.cn asc); -- mvd 8,3,9,2,1,4->7; 3,9,4->10; 3,9,4->11; 8,3,9,2,1,4->12; + +-- SUM() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.vn asc range between floor(ow_sale.prc/ow_sale.pn) preceding and 3 preceding ); -- mvd 6,1->5; + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.cn desc range between 0 preceding and 0 preceding ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.pn desc); -- mvd 4,5->3; 4,5->6; 8,1,5->7; 8,1,5->9; + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn/ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.cn order by ow_sale.cn desc range between floor(ow_sale.prc/ow_sale.vn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.cn order by ow_sale.cn desc range between floor(ow_sale.prc/ow_sale.vn) preceding and current row ), +win2 as (order by ow_sale.pn asc); -- mvd 3,1->7; 3,1->8; 5->9; 5->10; + +-- SUM() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.vn asc range between floor(ow_sale.vn*ow_sale.cn) preceding and floor(ow_sale.pn) following ); -- mvd 4,5,6->3; + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.cn order by ow_sale.cn desc range between floor(ow_sale.prc+ow_sale.qty) preceding and floor(ow_sale.cn*ow_sale.vn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.cn desc range between floor(ow_sale.prc+ow_sale.qty) preceding and floor(ow_sale.cn*ow_sale.vn) following ); -- mvd 4,5->3; 4,5->6; + +-- SUM() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.vn order by ow_sale.cn desc range between 3 preceding and unbounded following ); -- mvd 5,1,6->4; + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.qty)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.pn asc range between floor(ow_sale.vn) preceding and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.prc,ow_sale.qty order by ow_sale.vn asc), +win3 as (partition by ow_sale.vn,ow_sale.prc order by ow_sale.vn desc), +win4 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.cn asc); -- mvd 1,5,6->4; 2,8,9,6->7; 2,9->10; 2,8,9,6->11; 2,9->12; 1,5,6->13; + +-- SUM() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.qty order by ow_sale.pn desc range between current row and current row ); -- mvd 4,5,1,2->3; + +-- SUM() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc order by ow_sale.vn asc range between current row and floor(ow_sale.prc) following ); -- mvd 5,1->7; + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.cn asc range between current row and floor(ow_sale.prc/ow_sale.pn) following ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc); -- mvd 3,1,7,4->6; 2->8; 2->9; 11,3,1,2,4->10; 11,3,1,2,4->12; 2->13; + +-- SUM() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn asc range between current row and unbounded following ); -- mvd 3,4->2; + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty*ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.pn asc range between current row and unbounded following ), +win2 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,4,5->2; 7,4->6; + +-- SUM() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.vn asc range between floor(ow_sale.cn) following and floor(ow_sale.qty) following ); -- mvd 3,4->2; + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.pn desc range between floor(ow_sale.cn+ow_sale.cn) following and 0 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.pn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.pn desc range between floor(ow_sale.cn+ow_sale.cn) following and 0 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.pn desc range between floor(ow_sale.cn+ow_sale.cn) following and 0 following ), +win2 as (partition by ow_sale.pn order by ow_sale.cn asc); -- mvd 4,2,5->3; 4,2,5->6; 2,5->7; 2,5->8; 4,2,5->9; + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn/ow_sale.vn)) OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc range between 1 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn+ow_sale.qty)) OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc range between 1 following and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.cn desc); -- mvd 4,5,6,7->3; 4->8; 4->9; 4,5,6,7->10; 4->11; 4->12; + +-- SUM() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc rows unbounded preceding ); -- mvd 3,6,7,1,8->5; + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows unbounded preceding ), +win2 as (order by ow_sale.vn asc); -- mvd 2,7,8,3->6; 8->9; 8->10; + +-- SUM() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.cn asc rows floor(ow_sale.qty) preceding ); -- mvd 2,1->3; + +-- SUM() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows current row ); -- mvd 3,4,5,6->2; + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows current row ); -- mvd 7,2,4,3->6; 7,2,4,3->8; + +-- SUM() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.vn desc rows between unbounded preceding and 7 preceding ); -- mvd 7,1->6; + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.pn,ow_sale.vn order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and 2 preceding ), +win2 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.cn desc); -- mvd 5,1,6,7->4; 1,2,7->8; 1,2,7->9; 1,2,7->10; + +-- SUM() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and current row ); -- mvd 3,1,4->2; + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc); -- mvd 4,5,6->3; 8,1,5->7; + +-- SUM() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.pn*ow_sale.prc) following ); -- mvd 4,2,5->3; + +-- SUM() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.pn desc rows between unbounded preceding and unbounded following ); -- mvd 2,4->3; + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc/ow_sale.qty)) OVER(partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.pn desc rows between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.prc)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.pn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.qty order by ow_sale.pn asc), +win3 as (partition by ow_sale.qty order by ow_sale.pn desc); -- mvd 2,5,1,6->4; 2,1,6->7; 2,5,1,6->8; 2,1,6->9; 1,6->10; 2,1,6->11; + +-- SUM() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between floor(ow_sale.cn) preceding and floor(ow_sale.qty) preceding ); -- mvd 2,4,1->3; + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty+ow_sale.cn) as int),cast (floor(ow_sale.vn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.cn asc rows between 1 preceding and floor(ow_sale.qty) preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.vn desc); -- mvd 3,4,1->2; 3->5; 4->6; 3->7; + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between floor(ow_sale.pn*ow_sale.pn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty+ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between floor(ow_sale.pn*ow_sale.pn) preceding and current row ), +win2 as (partition by ow_sale.vn order by ow_sale.pn desc), +win3 as (order by ow_sale.vn asc), +win4 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc); -- mvd 3,1,2,4->5; 1,4->6; 1->7; 1->8; 3,1,2,4->9; 3,1,4->10; + +-- SUM() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.qty*ow_sale.cn) preceding and 5 following ); -- mvd 8,2,1->7; + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(SUM(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between floor(ow_sale.cn+ow_sale.cn) preceding and 4 following ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.vn desc); -- mvd 4,5->3; 5->6; 5->7; 5->8; 5->9; + +-- SUM() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows between 5 preceding and unbounded following ); -- mvd 3,1->4; + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.qty)) OVER(partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc,ow_sale.vn asc rows between 0 preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc,ow_sale.vn asc rows between 0 preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.cn desc), +win3 as (order by ow_sale.vn asc), +win4 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.vn asc); -- mvd 3->2; 5,1->4; 5,1->6; 3->7; 3->8; 10,5,3,11->9; + +-- SUM() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between current row and current row ); -- mvd 5,2,6,7->4; + +-- SUM() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc rows between current row and floor(ow_sale.pn/ow_sale.vn) following ); -- mvd 7,3,8->6; + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between current row and 3 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between current row and 3 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between current row and 3 following ), +win2 as (order by ow_sale.pn desc); -- mvd 3,4,5->2; 3,4,5->6; 5->7; 3,4,5->8; + +-- SUM() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ); -- mvd 2->3; + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn+ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn-ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.pn order by ow_sale.cn desc), +win4 as (order by ow_sale.pn desc), +win5 as (order by ow_sale.pn asc); -- mvd 5,6,7->4; 5,6,7->8; 5,1->9; 5,1->10; 1->11; 1->12; + +-- SUM() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(SUM(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between floor(ow_sale.qty) following and 7 following ); -- mvd 5,1,2->4; + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(SUM(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(partition by ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows between 0 following and floor(ow_sale.pn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows between 0 following and floor(ow_sale.pn) following ); -- mvd 4,5,6,7->3; 4,5,6,7->8; + +-- SUM() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.pn asc rows between 8 following and unbounded following ); -- mvd 3,5,6,7->4; + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(SUM(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn/ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between floor(ow_sale.vn) following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between floor(ow_sale.vn) following and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.cn desc), +win3 as (partition by ow_sale.qty order by ow_sale.pn asc), +win4 as (order by ow_sale.cn desc); -- mvd 4,5,6->3; 4,5,6->7; 2,6->8; 1,6->9; 2->10; + +-- VAR_POP() function with NULL OVER() clause -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (); -- mvd 6->6; + +-- VAR_POP() function with NULL OVER() clause in combination with other window functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (), +win2 as (order by ow_sale.pn desc); -- mvd 4->4; 6->5; 6->7; 6->8; + +-- VAR_POP() function with OVER() clause having ONLY PARTITION BY -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.vn); -- mvd 5,1,6,3->4; + +-- VAR_POP() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.dt),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.dt), +win2 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.pn desc), +win3 as (order by ow_sale.cn asc), +win4 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.vn order by ow_sale.cn asc); -- mvd 7,2,1,4->6; 7,2,1,4->8; 1,10,4->9; 2->11; 1,10,4->12; 2,1,10,4->13; + +-- VAR_POP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc); -- mvd 4->3; + +-- VAR_POP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.cn)) OVER(order by ow_sale.vn asc,ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc,ow_sale.vn asc); -- mvd 6->5; 6->7; + +-- VAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range unbounded preceding ); -- mvd 1->6; + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn*ow_sale.vn)) OVER(order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range unbounded preceding ), +win2 as (order by ow_sale.pn desc); -- mvd 3->2; 5->4; 5->6; + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range floor(ow_sale.vn*ow_sale.pn) preceding ), +win2 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.pn asc), +win3 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.vn asc); -- mvd 2->4; 3,6->5; 8,2,1->7; + +-- VAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range current row ); -- mvd 1->4; + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range current row ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.vn asc); -- mvd 1->5; 1->6; 1->7; 1->8; + +-- VAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and 4 preceding ); -- mvd 4->3; + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn-ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.qty) preceding ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc); -- mvd 6->5; 6,3,2->7; + +-- VAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 3->2; + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.prc order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.prc order by ow_sale.pn desc); -- mvd 3->2; 5,6,3,1->4; 5,6,3,1->7; + +-- VAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and 0 following ); -- mvd 5->4; + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn+ow_sale.pn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn) following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.prc,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc), +win4 as (order by ow_sale.cn asc), +win5 as (order by ow_sale.vn desc); -- mvd 1->3; 1->4; 6,1,7,2->5; 1->8; 1->9; 7->10; + +-- VAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and unbounded following ); -- mvd 3->6; + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.vn order by ow_sale.cn asc); -- mvd 3->2; 3,5->4; + +-- VAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.qty*ow_sale.cn) preceding and current row ); -- mvd 4->3; + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.cn) preceding and current row ), +win2 as (order by ow_sale.pn desc); -- mvd 8->7; 8->9; 8->10; 8->11; 8->12; 2->13; + +-- VAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 2 preceding and floor(ow_sale.pn) following ); -- mvd 4->7; + +-- VAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.vn/ow_sale.pn) preceding and unbounded following ); -- mvd 5->4; + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.cn order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.cn+ow_sale.pn) preceding and unbounded following ), +win2 as (partition by ow_sale.cn order by ow_sale.vn asc); -- mvd 4->5; 4->6; 3,8->7; 3,8->9; 3,8->10; + +-- VAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and current row ); -- mvd 1->2; + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and current row ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.cn desc); -- mvd 3->2; 5->4; 1->6; + +-- VAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and floor(ow_sale.qty) following ); -- mvd 6->5; + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and 4 following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 1->2; 1->3; 1->4; + +-- VAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and unbounded following ); -- mvd 7->6; + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and unbounded following ), +win2 as (order by ow_sale.cn desc); -- mvd 5->4; 5->6; 5->7; + +-- VAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.vn) following and 2 following ); -- mvd 5->4; + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 3 following and floor(ow_sale.vn*ow_sale.cn) following ), +win2 as (order by ow_sale.pn desc); -- mvd 2->5; 2->6; 1->7; + +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.qty) following and unbounded following ), +win2 as (order by ow_sale.vn asc); -- mvd 5->4; 2->6; + +-- VAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.vn desc rows unbounded preceding ); -- mvd 2,5,1->4; + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.vn) as int),cast (floor(ow_sale.qty+ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows unbounded preceding ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.cn desc), +win4 as (partition by ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 1->5; 3,7,1->6; 3,9,7->8; 3,9,7->10; 12,3,9->11; + +-- VAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows 1 preceding ); -- mvd 6->5; + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.pn asc rows 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn/ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.pn asc rows 2 preceding ), +win2 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.pn asc), +win3 as (order by ow_sale.cn desc), +win4 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 1,3->2; 5,6,3->4; 1,3->7; 1->8; 6->9; + +-- VAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows current row ); -- mvd 1->3; + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty*ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows current row ), +win2 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 6->5; 8,4,1->7; 8,4,1->9; 1->10; + +-- VAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.cn asc rows between unbounded preceding and 6 preceding ); -- mvd 3,4,5->2; + +-- VAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.vn asc rows between unbounded preceding and current row ); -- mvd 6,7->5; + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn*ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.prc,ow_sale.prc,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc,ow_sale.cn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.cn asc), +win3 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc); -- mvd 2,4,5->3; 2,7,1,4,5->6; 2,7,1,4,5->8; 10,7,2,4->9; 10,7,2,4->11; + +-- VAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.pn asc rows between unbounded preceding and 3 following ); -- mvd 3,2,1->5; + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.vn-ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.qty,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty/ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and 4 following ), +win2 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 3->2; 5,3,6->4; 5,3,6->7; 9->8; 5,3,6->10; 9->11; + +-- VAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 6->5; + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.cn desc); -- mvd 8,1->7; 8,2->9; 8,2->10; + +-- VAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.vn asc rows between 5 preceding and 4 preceding ); -- mvd 1,5,2->4; + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.vn asc rows between floor(ow_sale.pn) preceding and 3 preceding ), +win2 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.prc order by ow_sale.cn asc); -- mvd 7,3,8->6; 4,7,10,3->9; + +-- VAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 6 preceding and current row ); -- mvd 4->3; + +-- VAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between 8 preceding and 3 following ); -- mvd 6,1->5; + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.dt order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc,ow_sale.vn asc rows between floor(ow_sale.cn) preceding and 1 following ), +win2 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.pn asc); -- mvd 5,1,6->4; 5,1,6->7; 3,1,6->8; 3,1,6->9; + +-- VAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.pn desc rows between floor(ow_sale.pn+ow_sale.pn) preceding and unbounded following ); -- mvd 6,3->5; + +-- VAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between current row and current row ); -- mvd 4->3; + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between current row and current row ), +win2 as (partition by ow_sale.vn,ow_sale.prc order by ow_sale.cn desc); -- mvd 6->5; 4,6,3->7; + +-- VAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between current row and floor(ow_sale.cn-ow_sale.cn) following ); -- mvd 5->4; + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn asc rows between current row and 0 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between current row and 0 following ); -- mvd 6->5; 6->7; + +-- VAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.vn desc rows between current row and unbounded following ); -- mvd 4,1->3; + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (order by ow_sale.cn asc); -- mvd 3,6->5; 3,6->7; 6->8; 6->9; 3->10; + +-- VAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between 4 following and floor(ow_sale.cn+ow_sale.cn) following ); -- mvd 5->4; + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn-ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.cn) following and 0 following ), +win2 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.vn asc), +win3 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc), +win4 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.cn desc); -- mvd 2->4; 6,2->5; 2->7; 3,6->8; 10,1,6->9; + +-- VAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.cn asc rows between floor(ow_sale.qty) following and unbounded following ); -- mvd 1->6; + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn*ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between 1 following and unbounded following ), +win2 as (order by ow_sale.pn desc); -- mvd 3->2; 3->4; 3->5; 3->6; 3->7; 3->8; + +-- VAR_POP() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.pn asc,ow_sale.vn desc,ow_sale.cn asc); -- mvd 7,2,4->6; + +-- VAR_POP() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +, +TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.qty order by ow_sale.pn desc,ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.pn desc,ow_sale.vn desc); -- mvd 2,1,6->5; 2,1,6->7; 2,1,6->8; + +-- VAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc range unbounded preceding ); -- mvd 1,4,3->5; + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.dt order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.dt order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.pn asc range unbounded preceding ), +win2 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.dt order by ow_sale.pn asc); -- mvd 2,7,4,5->6; 2,7,9,1,5->8; 2,7,4,5->10; 2,7,9,1,5->11; 2,7,9,1,5->12; 2,7,9,1,5->13; + +-- VAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.cn order by ow_sale.vn desc range 2 preceding ); -- mvd 4,5,2,6,7->3; + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.pn order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.cn desc range 1 preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.pn order by ow_sale.cn desc); -- mvd 1,3,5->4; 7->6; 1,5->8; 1,5->9; + +-- VAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn asc range current row ); -- mvd 3,4->2; + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.dt order by ow_sale.pn asc range current row ), +win2 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,1,4,5,6->2; 1,3,4,5,6->7; 1,3,4,5,6->8; 3->9; + +-- VAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.cn) preceding ); -- mvd 8,9->7; + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.cn) preceding ), +win2 as (order by ow_sale.vn desc); -- mvd 1,4,2,5->3; 2->6; 2->7; 2->8; 2->9; 2->10; + +-- VAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn desc range between unbounded preceding and current row ); -- mvd 5->4; + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(partition by ow_sale.qty,ow_sale.pn,ow_sale.pn order by ow_sale.vn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn-ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc+ow_sale.vn) as int),cast (floor(ow_sale.vn-ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.pn order by ow_sale.vn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.prc order by ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.pn desc), +win5 as (order by ow_sale.cn desc); -- mvd 3,4,1->2; 3,4,1->5; 7->6; 9,7,1->8; 1->10; 7->11; + +-- VAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.pn asc range between unbounded preceding and 4 following ); -- mvd 4,5,2->3; + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.pn order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.cn*ow_sale.vn) following ); -- mvd 2,4,5->3; 2,4,5->6; + +-- VAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 4,5,1,6,2,7->3; + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.cn order by ow_sale.pn asc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.vn asc); -- mvd 7,8,5,9,1->6; 9->10; + +-- VAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.dt order by ow_sale.vn asc range between 2 preceding and 0 preceding ); -- mvd 5,6,1,7->4; + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.pn desc range between 4 preceding and 3 preceding ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.cn asc); -- mvd 6,1,4->5; 6,1,4->7; 6,1,4->8; + +-- VAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn desc range between floor(ow_sale.pn+ow_sale.pn) preceding and current row ); -- mvd 3,4->2; + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn/ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.cn asc range between 0 preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.vn order by ow_sale.cn desc), +win3 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc); -- mvd 8,2,9->7; 3,8,5,1,2,9->10; 3,8,5,1,2,9->11; 8,2,9->12; 5,9->13; + +-- VAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.prc,ow_sale.pn order by ow_sale.cn desc range between 0 preceding and floor(ow_sale.vn) following ); -- mvd 1,3,4,5,6->2; + +-- VAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.pn asc range between 2 preceding and unbounded following ); -- mvd 4,3->6; + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.vn asc range between floor(ow_sale.cn) preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.vn desc); -- mvd 4,5,1->3; 4,5,2->6; + +-- VAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.dt order by ow_sale.vn desc range between current row and current row ); -- mvd 6,7,4,2,8->5; + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.cn asc range between current row and current row ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc); -- mvd 4,5,2,1->3; 4,5,2,1->6; 5,2,8->7; 5,2,8->9; + +-- VAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.prc order by ow_sale.vn asc range between current row and unbounded following ); -- mvd 6,7,8,1,2->5; + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.pn desc range between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.pn desc range between current row and unbounded following ); -- mvd 3,4->2; 3,4->5; + +-- VAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.vn asc range between 1 following and 2 following ); -- mvd 4,1,5->3; + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.pn*ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.cn asc range between floor(ow_sale.pn) following and 4 following ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.cn asc), +win4 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc); -- mvd 8,1,2->7; 2->9; 8,4,2->10; 12,4,13->11; + +-- VAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.qty order by ow_sale.pn asc range between floor(ow_sale.prc*ow_sale.cn) following and unbounded following ); -- mvd 3,4->2; + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.pn desc range between floor(ow_sale.vn) following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.pn desc range between floor(ow_sale.vn) following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.pn desc range between floor(ow_sale.vn) following and unbounded following ), +win2 as (order by ow_sale.pn asc); -- mvd 3,6,7->5; 7->8; 7->9; 3,6,7->10; 3,6,7->11; 7->12; + +-- VAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows unbounded preceding ); -- mvd 4,5,6->3; + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc rows unbounded preceding ); -- mvd 4,5,6->3; 4,5,6->7; + +-- VAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc rows floor(ow_sale.vn) preceding ); -- mvd 3,4->2; + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc rows floor(ow_sale.qty) preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.pn desc), +win4 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,3,6,1->5; 1->7; 1->8; 1->9; 4,1->10; 1->11; + +-- VAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows current row ); -- mvd 6,7,2->5; + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn/ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.prc)) OVER(partition by ow_sale.prc,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows current row ), +win2 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,4,5,6->2; 3,8,4,5,6,1->7; 3,8,4,5,6,1->9; 3,4,5,6->10; 3,8,4,5,6,1->11; + +-- VAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn asc,ow_sale.cn asc rows between unbounded preceding and 6 preceding ); -- mvd 3,1,4->2; + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.cn order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between unbounded preceding and 2 preceding ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.cn order by ow_sale.pn desc), +win3 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.pn asc); -- mvd 5,6,3->4; 6,8,1,2->7; 6,8,3,2->9; 6,8,1,2->10; + +-- VAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc rows between unbounded preceding and current row ); -- mvd 4,2,5->3; + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.vn desc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.cn order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.vn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.cn order by ow_sale.vn asc); -- mvd 2,3,8->7; 2,3,8->9; 2,1,3,4->10; 2,1,3,4->11; + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty+ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn*ow_sale.qty) as int),NULL) OVER(win5),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win6),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and floor(ow_sale.pn+ow_sale.vn) following ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.cn desc), +win3 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.vn asc), +win5 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc), +win6 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 3,1->2; 5,3,1->4; 3,5,7->6; 7->8; 3,5,10,1->9; 7->11; + +-- VAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.cn desc rows between unbounded preceding and unbounded following ); -- mvd 5,6,7,1->4; + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.pn asc); -- mvd 5,6->4; 6->7; 6->8; + +-- VAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc,ow_sale.cn asc rows between floor(ow_sale.prc*ow_sale.prc) preceding and floor(ow_sale.cn*ow_sale.qty) preceding ); -- mvd 4,5->3; + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.cn asc rows between floor(ow_sale.vn) preceding and 3 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.cn asc rows between floor(ow_sale.vn) preceding and 3 preceding ); -- mvd 7,5,8,2,9->6; 7,5,8,2,9->10; + +-- VAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc,ow_sale.cn desc rows between 4 preceding and current row ); -- mvd 3,6->5; + +-- VAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.vn/ow_sale.cn) preceding and floor(ow_sale.vn-ow_sale.cn) following ); -- mvd 3,1,4->2; + +-- VAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between 5 preceding and unbounded following ); -- mvd 4,6,7,1,8->5; + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.qty*ow_sale.qty) preceding and unbounded following ), +win2 as (order by ow_sale.pn desc); -- mvd 4,2,1,7->6; 7->8; 7->9; 7->10; + +-- VAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between current row and current row ); -- mvd 3,4,5->2; + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn/ow_sale.cn) as int),cast (floor(ow_sale.pn+ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc rows between current row and current row ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.pn desc), +win4 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,4->2; 1->5; 1->6; 3,4->7; 1->8; 10->9; + +-- VAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc rows between current row and floor(ow_sale.qty) following ); -- mvd 6,1,7,4,8->5; + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc rows between current row and floor(ow_sale.cn) following ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.cn desc); -- mvd 4,1,5->3; 2,1,5,7->6; + +-- VAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn asc rows between current row and unbounded following ); -- mvd 1,3,4,5->2; + +-- VAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc,ow_sale.cn asc rows between 2 following and 6 following ); -- mvd 5,6,2,1->4; + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn/ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows between 1 following and floor(ow_sale.vn) following ), +win2 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.pn asc), +win3 as (order by ow_sale.vn asc); -- mvd 8,6->7; 1->9; 6->10; 1->11; + +-- VAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.qty) following and unbounded following ); -- mvd 3,1,4->2; + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(partition by ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between 2 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.vn)) OVER(partition by ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between 2 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between 2 following and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.cn desc), +win3 as (order by ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 3,4,1->2; 4,6->5; 3,4,1->7; 4->8; 3,4,1->9; 1->10; + +-- VAR_SAMP() function with NULL OVER() clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (); -- mvd 2->2; + +-- VAR_SAMP() function with NULL OVER() clause in combination with other window functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn/ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (), +win2 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.vn order by ow_sale.cn desc), +win3 as (order by ow_sale.vn desc), +win4 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc); -- mvd 2->2; 4,1,5,6->3; 5->7; 4,6->8; + +-- VAR_SAMP() function with OVER() clause having ONLY PARTITION BY -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn); -- mvd 4,2,5->3; + +-- VAR_SAMP() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.pn desc); -- mvd 4->3; 6->5; 6,1->7; + +-- VAR_SAMP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc); -- mvd 1->4; + +-- VAR_SAMP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.prc) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc), +win2 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 4->5; 2,7,8->6; 4->9; 2,7,8->10; 4->11; + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range unbounded preceding ); -- mvd 3->2; + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ), +win2 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.vn asc); -- mvd 1->2; 4->3; + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range 3 preceding ); -- mvd 6->5; + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range current row ); -- mvd 4->3; + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(order by ow_sale.cn asc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(order by ow_sale.cn asc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range current row ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.vn,ow_sale.prc order by ow_sale.pn desc); -- mvd 1->3; 1->4; 1->5; 1->6; 2->7; 9,2,10->8; + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc/ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and floor(ow_sale.pn) preceding ); -- mvd 3->5; + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.prc) preceding ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.pn desc); -- mvd 1->3; 5,1,6->4; 5,1,6->7; + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and current row ); -- mvd 4->3; + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and current row ), +win2 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc); -- mvd 1->2; 4,5->3; + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.vn+ow_sale.cn) following ); -- mvd 3->2; + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.pn+ow_sale.cn) following ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->2; 5->4; 7->6; 3->8; 7->9; + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and unbounded following ); -- mvd 2->4; + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 1 preceding and floor(ow_sale.qty*ow_sale.qty) preceding ); -- mvd 1->2; + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.vn) preceding and current row ); -- mvd 1->2; + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.cn)) OVER(order by ow_sale.pn asc range between 1 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 1 preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.pn desc), +win3 as (order by ow_sale.pn desc); -- mvd 5->4; 5->6; 5->7; 9,1,5->8; 5->10; + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 2 preceding and floor(ow_sale.pn+ow_sale.cn) following ); -- mvd 6->5; + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.vn*ow_sale.qty) preceding and 2 following ), +win2 as (order by ow_sale.vn desc); -- mvd 4->3; 1->5; + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 2 preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.pn desc), +win4 as (order by ow_sale.pn desc); -- mvd 1->7; 9,3->8; 9,3->10; 9,12,3->11; 3->13; + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and current row ); -- mvd 1->5; + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.qty)) OVER(order by ow_sale.pn asc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and current row ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->2; 1,5,6,3->4; 3->7; 3->8; 1,5,6,3->9; 1->10; + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and 3 following ); -- mvd 4->3; + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and floor(ow_sale.vn) following ), +win2 as (order by ow_sale.cn asc); -- mvd 4->3; 4->5; 4->6; + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and unbounded following ); -- mvd 1->3; + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc); -- mvd 6->5; 8,1,6->7; 6->9; + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 3 following and 4 following ); -- mvd 5->4; + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.cn)) OVER(order by ow_sale.vn asc range between 4 following and floor(ow_sale.qty+ow_sale.vn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 4 following and floor(ow_sale.qty+ow_sale.vn) following ), +win2 as (order by ow_sale.cn desc); -- mvd 3->2; 5->4; 3->6; + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between floor(ow_sale.pn/ow_sale.vn) following and unbounded following ); -- mvd 4->3; + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.cn) as int),cast (floor(ow_sale.prc+ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn/ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn/ow_sale.cn) as int),cast (floor(ow_sale.qty/ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.prc/ow_sale.cn) following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc); -- mvd 1->5; 1->6; 8->7; 8->9; 1,3,11->10; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows unbounded preceding ); -- mvd 4->3; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.cn desc rows unbounded preceding ), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc); -- mvd 3,4->2; 6,7,1,4->5; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows floor(ow_sale.qty*ow_sale.cn) preceding ); -- mvd 3,4->2; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.cn desc rows floor(ow_sale.qty*ow_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.cn desc rows floor(ow_sale.qty*ow_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows floor(ow_sale.qty*ow_sale.pn) preceding ), +win2 as (order by ow_sale.vn desc); -- mvd 4->3; 4->5; 4->6; 8->7; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows current row ); -- mvd 3->2; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc*ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.cn asc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn asc rows current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows current row ), +win2 as (order by ow_sale.pn desc); -- mvd 8->7; 8->9; 4->10; 8->11; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and 0 preceding ); -- mvd 4->7; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between unbounded preceding and 4 preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc); -- mvd 1,3->4; 3->5; 1,2,3->6; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows between unbounded preceding and current row ); -- mvd 5,1->7; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn/ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and current row ); -- mvd 4->5; 4->6; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and 3 following ); -- mvd 2,5->4; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between unbounded preceding and 2 following ), +win2 as (order by ow_sale.vn desc); -- mvd 4->3; 6->5; 6->7; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 7,1->6; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.cn order by ow_sale.vn desc), +win3 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 1->2; 4,5,1,6->3; 5,4,1,8->7; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.prc) preceding and current row ); -- mvd 5->4; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between floor(ow_sale.vn) preceding and current row ), +win2 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.cn desc), +win3 as (partition by ow_sale.prc,ow_sale.vn order by ow_sale.vn asc); -- mvd 6,7->5; 6,1,4->8; 3,4->9; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.qty*ow_sale.qty) preceding and 5 following ); -- mvd 5->4; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between floor(ow_sale.pn) preceding and floor(ow_sale.cn) following ), +win2 as (order by ow_sale.cn desc); -- mvd 3->4; 3->5; 3->6; 3->7; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.vn desc rows between 4 preceding and unbounded following ); -- mvd 1,2->5; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.prc+ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between 0 preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.cn desc), +win4 as (partition by ow_sale.pn order by ow_sale.vn desc); -- mvd 1,4->3; 1,4->5; 4->6; 1->7; 4,9->8; 4->10; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between current row and current row ); -- mvd 4->3; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn desc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn*ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between current row and current row ), +win2 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.vn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 1->2; 4,1->3; 1->5; 7->6; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between current row and floor(ow_sale.pn*ow_sale.cn) following ); -- mvd 5,2->4; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between current row and floor(ow_sale.prc) following ); -- mvd 8->7; 8->9; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.vn desc rows between current row and unbounded following ); -- mvd 3,4->2; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->2; 5,6,7->4; 5,6,7->8; 3->9; 5,6,7->10; 5,6,7->11; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between 1 following and 1 following ); -- mvd 2->3; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn asc rows between 1 following and floor(ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn asc rows between 1 following and floor(ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between 1 following and floor(ow_sale.qty) following ), +win2 as (partition by ow_sale.vn order by ow_sale.pn asc); -- mvd 3->5; 3->6; 3->7; 3->8; 3,10->9; + +-- VAR_SAMP() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.pn order by ow_sale.pn asc,ow_sale.cn desc); -- mvd 3,4,5->2; + +-- VAR_SAMP() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +, +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.cn asc,ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.cn asc,ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.cn asc,ow_sale.vn desc); -- mvd 8,1,4->7; 8,1,4->9; 8,1,4->10; 8,1,4->11; 8,1,4->12; 8,1,4->13; + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.cn desc range unbounded preceding ); -- mvd 4,1,5->3; + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.prc,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty/ow_sale.pn)) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.vn,ow_sale.dt order by ow_sale.vn desc range unbounded preceding ), +win2 as (partition by ow_sale.pn order by ow_sale.vn asc), +win3 as (order by ow_sale.cn asc), +win4 as (order by ow_sale.vn asc); -- mvd 2,1,6->5; 6,8->7; 4->9; 6->10; 4->11; 6->12; + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.cn desc range 1 preceding ); -- mvd 4,2,5,6,7->3; + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.pn asc range current row ); -- mvd 4,2->3; + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.prc) as int),cast (floor(ow_sale.prc/ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.cn,ow_sale.vn order by ow_sale.pn asc range current row ), +win2 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 1,6,7,3,2,8->5; 3->9; + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.pn asc range between unbounded preceding and 1 preceding ); -- mvd 5,6,3,7,8->4; + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc order by ow_sale.vn desc range between unbounded preceding and 4 preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 8,4->7; 2->9; 2->10; 2->11; + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.prc order by ow_sale.vn desc range between unbounded preceding and current row ); -- mvd 7,1,8,5,3->6; + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn*ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc order by ow_sale.cn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.pn order by ow_sale.pn desc), +win4 as (order by ow_sale.ord, ow_sale.cn asc), +win5 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.pn asc); -- mvd 2,4,1->3; 6->5; 4,8,6->7; 4->9; 4,8,6->10; 4,1,6->11; + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.pn) following ); -- mvd 1,6->5; + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.qty order by ow_sale.cn desc range between unbounded preceding and 1 following ), +win2 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.qty order by ow_sale.cn asc); -- mvd 6,1,2,3->7; 9,6,2,4,3->8; 9,6,2,4,3->10; 9,6,2,4,3->11; + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.pn asc range between unbounded preceding and unbounded following ); -- mvd 3,4->6; + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn-ow_sale.cn) as int),cast (floor(ow_sale.qty/ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.vn order by ow_sale.cn asc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,1,3->6; 4->7; 4->8; 4->9; 4->10; + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.cn asc range between 0 preceding and floor(ow_sale.cn) preceding ); -- mvd 4,5,2->3; + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc/ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.cn order by ow_sale.cn desc range between floor(ow_sale.qty+ow_sale.qty) preceding and floor(ow_sale.cn+ow_sale.vn) preceding ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc); -- mvd 1,5->4; 1,2,5,3->6; 1,2,5,3->7; + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.prc order by ow_sale.pn asc range between floor(ow_sale.vn*ow_sale.qty) preceding and current row ); -- mvd 7,8,3,2->6; + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.pn order by ow_sale.pn desc range between 3 preceding and 1 following ); -- mvd 8,1->7; + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.cn desc range between floor(ow_sale.qty) preceding and 3 following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.vn asc); -- mvd 8,6,2->7; 8->9; 8->10; 8,6,2->11; 8->12; + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.vn desc range between floor(ow_sale.cn) preceding and unbounded following ); -- mvd 3,4->2; + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.dt order by ow_sale.cn asc range between floor(ow_sale.pn) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.cn asc range between floor(ow_sale.pn) preceding and unbounded following ), +win2 as (order by ow_sale.vn desc); -- mvd 3,2->5; 3,2->6; 8->7; + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.pn asc range between current row and current row ); -- mvd 3,4,5,1->2; + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.vn) as int),cast (floor(ow_sale.qty*ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win5),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.pn asc range between current row and current row ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.pn desc), +win5 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.vn order by ow_sale.cn desc); -- mvd 5,2,1->4; 5,2,1->6; 1->7; 9->8; 1->10; 9,2,12->11; + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.pn asc range between current row and 1 following ); -- mvd 5->4; + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(partition by ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.cn order by ow_sale.pn desc range between current row and 3 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(partition by ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.cn order by ow_sale.pn desc range between current row and 3 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.cn order by ow_sale.pn desc range between current row and 3 following ), +win2 as (order by ow_sale.pn desc); -- mvd 3,5,6,2->4; 3,5,6,2->7; 3,5,6,2->8; 3,5,6,2->9; 2->10; 2->11; + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt order by ow_sale.cn desc range between current row and unbounded following ); -- mvd 4,5,6->3; + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.pn desc range between floor(ow_sale.pn) following and floor(ow_sale.cn) following ); -- mvd 5,6,3->4; + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.pn desc range between 1 following and 4 following ), +win2 as (order by ow_sale.vn desc); -- mvd 4,2,1->5; 7->6; 7->8; + +-- VAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.qty order by ow_sale.pn desc range between 2 following and unbounded following ); -- mvd 6,7,4,2->5; + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc*ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.cn desc range between floor(ow_sale.cn+ow_sale.cn) following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 1,2->4; 1->5; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn desc rows unbounded preceding ); -- mvd 4,5->3; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc*ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows floor(ow_sale.cn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows floor(ow_sale.cn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows floor(ow_sale.cn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn/ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows floor(ow_sale.cn) preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,4,1->2; 3,4,1->5; 3,4,1->6; 3,4,1->7; 3,4,1->8; 10->9; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc,ow_sale.pn desc rows current row ); -- mvd 4,5,6,1->3; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.qty, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.dt order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.dt,ow_sale.dt order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows current row ), +win2 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.cn desc), +win3 as (order by ow_sale.cn asc); -- mvd 6,7,2,8->5; 7,2->9; 7,2->10; 7->11; 7,2->12; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.cn desc rows between unbounded preceding and 2 preceding ); -- mvd 8,1,3->7; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.qty order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.pn) preceding ), +win2 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.qty order by ow_sale.cn asc), +win3 as (order by ow_sale.pn asc); -- mvd 4,6->5; 4,6->7; 1,4,9,6->8; 1,4,9,6->10; 2->11; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc,ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 1->2; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.vn,ow_sale.dt order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.cn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.vn desc), +win3 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.pn desc), +win4 as (order by ow_sale.cn asc); -- mvd 3,6,1->5; 6,8->7; 6,8->9; 11,6,3,1->10; 3->12; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.pn) following ); -- mvd 1,3,4,5,6,7->2; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and 3 following ), +win2 as (partition by ow_sale.qty,ow_sale.prc order by ow_sale.vn asc); -- mvd 1,3,4->2; 6,3,1->5; 6,3,1->7; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows between unbounded preceding and unbounded following ); -- mvd 3,4,5->2; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.vn desc); -- mvd 5,6,1,3->4; 5,6,1,3->7; 9->8; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc rows between 2 preceding and 5 preceding ); -- mvd 1,6,3,4->5; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.qty/ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.pn asc rows between floor(ow_sale.qty) preceding and 4 preceding ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.vn desc), +win4 as (partition by ow_sale.prc,ow_sale.qty order by ow_sale.cn desc); -- mvd 1,4,2,5->3; 1,4,2,5->6; 1->7; 9,4->8; 9,1,2->10; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.vn desc rows between floor(ow_sale.qty) preceding and current row ); -- mvd 1,3,4->2; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.pn*ow_sale.qty) preceding and 3 following ); -- mvd 5,2,7->6; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.qty*ow_sale.qty) preceding and floor(ow_sale.vn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.qty*ow_sale.qty) preceding and floor(ow_sale.vn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.qty*ow_sale.qty) preceding and floor(ow_sale.vn) following ), +win2 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,4,5,1->2; 1->6; 3,4,5,1->7; 1->8; 3,4,5,1->9; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between 0 preceding and unbounded following ); -- mvd 7,5,3->6; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.pn asc rows between floor(ow_sale.vn/ow_sale.qty) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc/ow_sale.qty) as int),cast (floor(ow_sale.prc+ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.pn asc rows between floor(ow_sale.vn/ow_sale.qty) preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc); -- mvd 1,4->3; 1,4->5; 1,4->6; 1,4->7; 9,4->8; 1,4->10; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between current row and current row ); -- mvd 5,6,7,2,8->4; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc rows between current row and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc rows between current row and current row ), +win2 as (order by ow_sale.vn asc); -- mvd 4,2,1->3; 6->5; 6->7; 6->8; 6->9; 4,2,1->10; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn+ow_sale.cn)) OVER(partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows between current row and 0 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows between current row and 0 following ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.pn asc); -- mvd 2,1->6; 2,1->7; 2,3,1->8; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc,ow_sale.pn asc rows between current row and unbounded following ); -- mvd 6,3,2,1,7->5; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty/ow_sale.qty) as int),cast (floor(ow_sale.prc+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between current row and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 4,2,1->5; 4,2,1->6; 4,2,1->7; 9,4,1->8; 4->10; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows between 1 following and 4 following ); -- mvd 1,2,3->5; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.cn) as int),cast (floor(ow_sale.vn/ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn-ow_sale.pn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc rows between 0 following and floor(ow_sale.qty/ow_sale.pn) following ), +win2 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 2,5->4; 7,8,5->6; 8->9; 8->10; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn asc rows between 3 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn asc rows between 3 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn asc rows between 3 following and unbounded following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.vn desc), +win4 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.vn desc); -- mvd 3,1,4->2; 3,1,4->5; 1->6; 3,1,4->7; 1,4->8; 3,10,1,4->9; + +-- VARIANCE() function with NULL OVER() clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (); -- mvd 2->2; + +-- VARIANCE() function with OVER() clause having ONLY PARTITION BY -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn); -- mvd 4->5; + +-- VARIANCE() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc,ow_sale.vn asc); -- mvd 1,4->7; + +-- VARIANCE() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.pn)) OVER(order by ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn asc), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 4,1->3; 4,1->5; 4->6; 4,1->7; + +-- VARIANCE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range unbounded preceding ); -- mvd 2->7; + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ), +win2 as (order by ow_sale.pn asc); -- mvd 7->6; 7->8; 3->9; + +-- VARIANCE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range 1 preceding ); -- mvd 3->2; + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range 4 preceding ), +win2 as (order by ow_sale.pn asc); -- mvd 3->5; 1->6; + +-- VARIANCE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ); -- mvd 2->3; + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range current row ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc); -- mvd 5->4; 5->6; 8,5,9,2->7; + +-- VARIANCE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.vn*ow_sale.qty) preceding ); -- mvd 2->4; + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and 1 preceding ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.vn desc); -- mvd 3->2; 5->4; 5,3,1,7->6; 5,3,1,7->8; + +-- VARIANCE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and current row ); -- mvd 7->6; + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(order by ow_sale.pn desc range between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and current row ); -- mvd 6->5; 6->7; + +-- VARIANCE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn/ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.prc) following ); -- mvd 3->4; + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.qty) as int),cast (floor(ow_sale.pn+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and floor(ow_sale.prc) following ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 3->2; 3->4; 3->5; 3->6; 3->7; 9->8; + +-- VARIANCE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and unbounded following ); -- mvd 5->4; + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty*ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.dt,ow_sale.vn order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn order by ow_sale.pn desc); -- mvd 4->3; 4,6->5; 6,1,2->7; 4,6->8; 6,1,2->9; + +-- VARIANCE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 1 preceding and 3 preceding ); -- mvd 4->5; + +-- VARIANCE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.prc) preceding and floor(ow_sale.prc+ow_sale.qty) following ); -- mvd 3->4; + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn/ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty-ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 0 preceding and floor(ow_sale.pn) following ), +win2 as (order by ow_sale.vn asc), +win3 as (order by ow_sale.ord, ow_sale.cn desc), +win4 as (partition by ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.cn desc); -- mvd 1->6; 4->7; 4->8; 10->9; 12,10,3->11; 4->13; + +-- VARIANCE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.cn) preceding and unbounded following ); -- mvd 3->2; + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.qty/ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn+ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.pn) preceding and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc), +win4 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 8->7; 8->9; 8->10; 12,8,4,2->11; 2->13; + +-- VARIANCE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and current row ); -- mvd 3->2; + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn+ow_sale.vn) as int),cast (floor(ow_sale.pn*ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.qty) as int),cast (floor(ow_sale.vn+ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and current row ), +win2 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.vn asc), +win4 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 4->3; 1,6->5; 8->7; 1->9; + +-- VARIANCE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and 4 following ); -- mvd 2->4; + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and 1 following ), +win2 as (order by ow_sale.cn asc); -- mvd 1->3; 1->4; 1->5; + +-- VARIANCE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and unbounded following ); -- mvd 6->5; + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(order by ow_sale.pn desc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and unbounded following ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.cn asc); -- mvd 3->6; 1->7; 3->8; 10,1,3->9; 1->11; + +-- VARIANCE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 4 following and floor(ow_sale.pn-ow_sale.pn) following ); -- mvd 4->5; + +-- VARIANCE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 2 following and unbounded following ); -- mvd 2->6; + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 2 following and unbounded following ), +win2 as (order by ow_sale.vn desc); -- mvd 2->4; 2->5; + +-- VARIANCE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows unbounded preceding ); -- mvd 4,1->3; + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows unbounded preceding ), +win2 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc); -- mvd 4,5->3; 4,5->6; 8,9,1->7; + +-- VARIANCE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc rows floor(ow_sale.vn+ow_sale.prc) preceding ); -- mvd 6,3->5; + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows 0 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows 0 preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.pn asc), +win4 as (order by ow_sale.cn desc); -- mvd 5->4; 3->6; 5->7; 5->8; 10->9; + +-- VARIANCE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows current row ); -- mvd 4->3; + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn-ow_sale.vn) as int),cast (floor(ow_sale.qty/ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows current row ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.pn asc); -- mvd 3->4; 3->5; 7,8,9,1,3->6; 3->10; + +-- VARIANCE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and current row ); -- mvd 8,9->7; + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.pn asc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.vn desc); -- mvd 7,4->6; 7,4->8; 10->9; + +-- VARIANCE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and 6 following ); -- mvd 4->3; + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty-ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.cn) following ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 5->4; 1->6; 2->7; + +-- VARIANCE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and unbounded following ); -- mvd 6->7; + +-- VARIANCE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.qty+ow_sale.cn) preceding and 3 preceding ); -- mvd 3->2; + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.pn/ow_sale.qty) preceding and floor(ow_sale.qty) preceding ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.vn order by ow_sale.cn asc); -- mvd 1->2; 1,4,5,6,7->3; 1,4,5,6,7->8; + +-- VARIANCE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows between 4 preceding and current row ); -- mvd 1->5; + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc rows between 2 preceding and current row ), +win2 as (order by ow_sale.pn desc); -- mvd 6->5; 6->7; 1->8; + +-- VARIANCE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.pn asc rows between floor(ow_sale.cn+ow_sale.cn) preceding and floor(ow_sale.pn/ow_sale.cn) following ); -- mvd 2,3->4; + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty/ow_sale.vn) as int),cast (floor(ow_sale.prc-ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between 1 preceding and 4 following ), +win2 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc), +win4 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc); -- mvd 4->3; 4,6,1->5; 1->7; 4,6,1->8; 4,1,2->9; + +-- VARIANCE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between floor(ow_sale.vn) preceding and unbounded following ); -- mvd 1,2->3; + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc rows between 4 preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc rows between 4 preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc rows between 4 preceding and unbounded following ); -- mvd 3,4->2; 3,4->5; 3,4->6; + +-- VARIANCE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between current row and current row ); -- mvd 3->2; + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between current row and current row ); -- mvd 2->4; 2->5; 2->6; + +-- VARIANCE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between current row and 8 following ); -- mvd 2->6; + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.cn asc rows between current row and floor(ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.qty order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.cn asc rows between current row and floor(ow_sale.qty) following ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.qty order by ow_sale.vn desc); -- mvd 3,4->2; 3,4->5; 3,4->6; 3,1,4,8->7; 3,1,4,8->9; + +-- VARIANCE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ); -- mvd 4->3; + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.vn) as int),cast (floor(ow_sale.prc+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between current row and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 4->3; 6,4,2,7->5; + +-- VARIANCE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.cn) following and 2 following ); -- mvd 1->5; + +-- VARIANCE() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.cn desc); -- mvd 1,2->3; + +-- VARIANCE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.cn desc range unbounded preceding ); -- mvd 2,4,5,1->3; + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn/ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc range floor(ow_sale.cn) preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 1,3,4,5->2; 7->6; 3->8; 3->9; 3->10; + +-- VARIANCE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc range current row ); -- mvd 1,4,5,2->3; + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.pn desc range current row ), +win2 as (order by ow_sale.cn desc); -- mvd 6,1,2,7->5; 1->8; 1->9; 6,1,2,7->10; + +-- VARIANCE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.qty order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.prc+ow_sale.qty) preceding ); -- mvd 8,4,9,5,1->7; + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.pn)) OVER(partition by ow_sale.prc,ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn) preceding ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.cn desc), +win3 as (order by ow_sale.vn desc), +win4 as (order by ow_sale.cn desc); -- mvd 4,5->3; 4,5->6; 5,2,1->7; 9->8; 5->10; 4,5->11; + +-- VARIANCE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.vn order by ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 4,5,2->3; + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.vn)) OVER(partition by ow_sale.pn order by ow_sale.pn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(partition by ow_sale.pn order by ow_sale.pn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.pn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.cn desc); -- mvd 2->7; 2->8; 2->9; 1->10; 2->11; 1->12; + +-- VARIANCE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.dt order by ow_sale.pn asc range between unbounded preceding and 1 following ); -- mvd 3,1,4,5,6->2; + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn) following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.pn asc); -- mvd 5,2,6,1,7,8->4; 2->9; 8->10; + +-- VARIANCE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.vn order by ow_sale.cn asc range between unbounded preceding and unbounded following ); -- mvd 4,5,6->3; + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty*ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.vn asc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn asc); -- mvd 4->7; 2,3->8; + +-- VARIANCE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.vn order by ow_sale.pn desc range between floor(ow_sale.cn) preceding and 4 preceding ); -- mvd 4,7,8,9->6; + +-- VARIANCE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.pn desc range between floor(ow_sale.vn/ow_sale.vn) preceding and current row ); -- mvd 3,4,5->2; + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.qty order by ow_sale.cn asc range between floor(ow_sale.cn) preceding and current row ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.vn asc), +win4 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 6,1,7,4->5; 1->8; 1->9; 7->10; 7->11; + +-- VARIANCE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc order by ow_sale.cn asc range between 4 preceding and 0 following ); -- mvd 4,2,5->3; + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.cn)) OVER(partition by ow_sale.vn order by ow_sale.cn desc range between floor(ow_sale.vn+ow_sale.qty) preceding and 0 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn desc range between floor(ow_sale.vn+ow_sale.qty) preceding and 0 following ), +win2 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.qty order by ow_sale.pn desc); -- mvd 6,1->5; 8,6,2,1,4->7; 6,1->9; + +-- VARIANCE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn asc range between 4 preceding and unbounded following ); -- mvd 1,2->6; + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn/ow_sale.vn)) OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.cn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.cn asc range between 1 preceding and unbounded following ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.cn order by ow_sale.pn desc); -- mvd 3,4,5,6->2; 6->7; 6->8; 3,6->9; 3,6->10; 3,6->11; + +-- VARIANCE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.cn desc range between current row and current row ); -- mvd 4,3,8->7; + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.vn) as int),cast (floor(ow_sale.pn+ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc+ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.pn desc range between current row and current row ), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc), +win4 as (partition by ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,4->2; 1,4->5; 1,4->6; 8,1,3,9,4->7; 8,1,3->10; + +-- VARIANCE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.prc order by ow_sale.pn asc range between current row and 3 following ); -- mvd 3,4,5->2; + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.pn desc range between current row and floor(ow_sale.prc) following ), +win2 as (order by ow_sale.cn asc); -- mvd 3,4->2; 3->5; + +-- VARIANCE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.pn desc range between current row and unbounded following ); -- mvd 3,1,4->2; + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.cn,ow_sale.qty order by ow_sale.cn asc range between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn asc), +win3 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.qty order by ow_sale.vn asc); -- mvd 7,1,8,2,3->6; 3->9; 1,8,3,2->10; 3->11; + +-- VARIANCE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.vn desc range between 0 following and floor(ow_sale.prc) following ); -- mvd 1,3,4,5->2; + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.pn desc range between floor(ow_sale.qty) following and 3 following ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc); -- mvd 3,4,5,1,6->2; 3,4,5,1,6->7; 3,4,5,1,6->8; + +-- VARIANCE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.pn asc range between floor(ow_sale.vn) following and unbounded following ); -- mvd 3,4,5,1->2; + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn/ow_sale.vn) as int),cast (floor(ow_sale.qty*ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn/ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.pn asc range between floor(ow_sale.prc) following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 6,2->5; 2->7; 1->8; 2->9; 1->10; 2->11; + +-- VARIANCE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc rows unbounded preceding ); -- mvd 6,7,1->5; + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.qty order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.pn)) OVER(partition by ow_sale.qty order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.qty order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.cn desc rows unbounded preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.vn asc); -- mvd 2,4,1,5->3; 5->6; 1,8->7; 1,8->9; 1,8->10; 1,8->11; + +-- VARIANCE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows 2 preceding ); -- mvd 4,1,5->3; + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.vn) as int),cast (floor(ow_sale.vn+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows 2 preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc); -- mvd 5,6,7,2->4; 2->8; 6,7,2->9; + +-- VARIANCE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.pn asc rows current row ); -- mvd 6,4,7,1->5; + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.vn,ow_sale.cn order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows current row ), +win2 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.cn asc); -- mvd 3,4,5->2; 3,4->6; 3,4->7; + +-- VARIANCE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and 1 preceding ); -- mvd 6,7,8,1->5; + +-- VARIANCE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc,ow_sale.vn asc rows between unbounded preceding and current row ); -- mvd 6,1,7->5; + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.vn asc); -- mvd 1,2->5; 3->6; + +-- VARIANCE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.cn+ow_sale.pn) following ); -- mvd 1,6,3,8->7; + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc/ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between unbounded preceding and 0 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between unbounded preceding and 0 following ), +win2 as (order by ow_sale.vn asc); -- mvd 4,5,2->3; 4,5,2->6; 2->7; + +-- VARIANCE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.vn desc rows between unbounded preceding and unbounded following ); -- mvd 3,7,1->6; + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn/ow_sale.vn)) OVER(partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn order by ow_sale.pn desc); -- mvd 2,5->4; 2,5->6; 2,5->7; + +-- VARIANCE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc rows between floor(ow_sale.pn) preceding and 7 preceding ); -- mvd 3,4,5->2; + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between 1 preceding and floor(ow_sale.qty/ow_sale.vn) preceding ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.pn order by ow_sale.cn desc); -- mvd 1,4,2->3; 2->5; 1,2->6; + +-- VARIANCE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows between floor(ow_sale.prc) preceding and current row ); -- mvd 2,5->6; + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc,ow_sale.cn asc rows between 2 preceding and current row ), +win2 as (order by ow_sale.cn desc); -- mvd 1,4,5,6,7->3; 1->8; 1->9; 1->10; 1->11; + +-- VARIANCE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc rows between 1 preceding and 5 following ); -- mvd 6,7,2->5; + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between 2 preceding and 0 following ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.cn desc), +win3 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.cn desc), +win4 as (order by ow_sale.vn desc); -- mvd 2,1->4; 6,2,3,1,7->5; 6,2,3,1,7->8; 1->9; 1->10; + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(partition by ow_sale.vn,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows between 1 preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows between 1 preceding and unbounded following ); -- mvd 1,4,5,6->3; 1,4,5,6->7; + +-- VARIANCE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.cn desc rows between current row and current row ); -- mvd 3,4,1,5->2; + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.pn desc rows between current row and current row ), +win2 as (order by ow_sale.vn desc); -- mvd 8,4,2,3->7; 1->9; + +-- VARIANCE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc rows between current row and 1 following ); -- mvd 2,5,6,1->4; + +-- VARIANCE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.vn asc rows between current row and unbounded following ); -- mvd 6,7,8->5; + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.vn)) OVER(partition by ow_sale.dt order by ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.prc) as int),cast (floor(ow_sale.pn+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.cn desc), +win3 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc); -- mvd 5,3->4; 5,3->6; 8,5->7; 8,5->9; 5,3->10; 12,8,1->11; + +-- VARIANCE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.cn) following and floor(ow_sale.qty) following ); -- mvd 7,4,8->6; + +-- VARIANCE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.vn) following and unbounded following ); -- mvd 4,5,6,7->3; + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn*ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc rows between floor(ow_sale.cn/ow_sale.cn) following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,6,4->5; 1->7; 1->8; + +-- CORR() function with NULL OVER() clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc),floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (); -- mvd 2->2; + +-- CORR() function with NULL OVER() clause in combination with other window functions -- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc+ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (), +win2 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc); -- mvd 3->3; 5,6,7,1->4; 5,6,7,1->8; + +-- CORR() function with OVER() clause having ONLY PARTITION BY -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.prc); -- mvd 6,1,3,4->5; + +-- CORR() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn/ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.dt), +win2 as (order by ow_sale.cn asc); -- mvd 5,3->4; 5,3->6; 8->7; 8->9; 8->10; + +-- CORR() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty*ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc); -- mvd 3->5; + +-- CORR() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.prc,ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc*ow_sale.vn),floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.qty)) OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc); -- mvd 7->6; 7->8; 7->9; 7,3->10; 7,3->11; + +-- CORR() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn+ow_sale.vn),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range unbounded preceding ); -- mvd 4->3; + +-- CORR() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range 2 preceding ); -- mvd 5->4; + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn+ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.pn) as int),cast (floor(ow_sale.prc*ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range floor(ow_sale.vn*ow_sale.vn) preceding ), +win2 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 4->3; 6,4,7->5; 4->8; 6,4,7->9; + +-- CORR() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn+ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range current row ); -- mvd 5->4; + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn*ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range current row ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc); -- mvd 4->3; 1->5; 4->6; 1->7; 9,1,10->8; + +-- CORR() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn/ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and floor(ow_sale.prc) preceding ); -- mvd 3->2; + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn/ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.prc) as int),cast (floor(ow_sale.vn/ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and 3 preceding ), +win2 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc); -- mvd 7->6; 9,7,10->8; + +-- CORR() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and current row ); -- mvd 2->4; + +-- CORR() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn+ow_sale.prc),floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and floor(ow_sale.qty+ow_sale.qty) following ); -- mvd 3->2; + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn*ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and floor(ow_sale.qty+ow_sale.cn) following ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn asc); -- mvd 8->7; 2->9; 2->10; 4,8->11; + +-- CORR() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 3->2; + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc); -- mvd 4->5; 7,2->6; + +-- CORR() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 2 preceding and 1 preceding ); -- mvd 3->2; + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.cn-ow_sale.cn) preceding and floor(ow_sale.prc-ow_sale.prc) preceding ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.vn asc); -- mvd 3->2; 3->4; 3->5; 7->6; + +-- CORR() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 0 preceding and current row ); -- mvd 4->7; + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn*ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.qty,ow_sale.cn order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.pn,ow_sale.qty,ow_sale.cn order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 3 preceding and current row ), +win2 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.cn order by ow_sale.vn desc); -- mvd 7->6; 1,7,3,4->8; 1,7,3,4->9; 1,7,3,4->10; 1,7,3,4->11; + +-- CORR() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 2 preceding and 3 following ); -- mvd 4->3; + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.pn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn/ow_sale.cn)) OVER(order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 0 preceding and floor(ow_sale.vn) following ), +win2 as (order by ow_sale.pn desc); -- mvd 7->6; 7->8; 5->9; 5->10; + +-- CORR() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 0 preceding and unbounded following ); -- mvd 3->2; + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 0 preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.cn desc); -- mvd 2->4; 2,6,7->5; + +-- CORR() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and current row ); -- mvd 3->2; + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn/ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and current row ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 2->6; 2->7; 3->8; 3->9; 1->10; + +-- CORR() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn/ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and 2 following ); -- mvd 3->4; + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn*ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.pn)) OVER(order by ow_sale.pn desc range between current row and 2 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.prc*ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and 2 following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.vn desc), +win4 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc); -- mvd 1->3; 1->4; 6->5; 6,8->7; 6,10,1->9; + +-- CORR() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty*ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and unbounded following ); -- mvd 5->4; + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc*ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(order by ow_sale.cn asc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.qty) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and unbounded following ), +win2 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc); -- mvd 3->6; 3->7; 3->8; 3->9; 3,11,12,4->10; + +-- CORR() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.vn+ow_sale.qty) following and floor(ow_sale.vn+ow_sale.pn) following ); -- mvd 1->5; + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.cn order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 4 following and floor(ow_sale.vn) following ), +win2 as (partition by ow_sale.cn order by ow_sale.pn desc); -- mvd 5->4; 5,1->6; 5,1->7; + +-- CORR() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 0 following and unbounded following ); -- mvd 3->4; + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc+ow_sale.qty),floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn/ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.cn) following and unbounded following ), +win2 as (order by ow_sale.pn desc); -- mvd 6->5; 8->7; 8->9; + +-- CORR() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty+ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows unbounded preceding ); -- mvd 1,3->2; + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn+ow_sale.qty) as int),cast (floor(ow_sale.prc+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn+ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows unbounded preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc), +win4 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 4->5; 4->6; 4,3->7; 4->8; 4->9; 4->10; + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc+ow_sale.cn),floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows floor(ow_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn+ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows floor(ow_sale.pn) preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 3->2; 3->4; 6->5; + +-- CORR() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows current row ); -- mvd 1->2; + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn+ow_sale.pn),floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows current row ), +win2 as (order by ow_sale.cn desc); -- mvd 1->4; 6->5; 6->7; + +-- CORR() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc*ow_sale.pn),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.pn asc rows between unbounded preceding and floor(ow_sale.pn+ow_sale.prc) preceding ); -- mvd 4,5,1->3; + +-- CORR() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 1,5->4; + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty+ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.vn asc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 3,4->2; 6->5; 6->7; 6->8; 4->9; 6->10; + +-- CORR() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc/ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between unbounded preceding and 1 following ); -- mvd 2,5->4; + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn-ow_sale.prc),floor(ow_sale.qty/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.prc order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and 4 following ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.prc order by ow_sale.vn desc), +win3 as (order by ow_sale.vn desc); -- mvd 7->6; 9,5,1,2,7->8; 7->10; 9,5,1,2,7->11; 2->12; 2->13; + +-- CORR() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and unbounded following ); -- mvd 3,2->4; + +-- CORR() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.vn desc rows between floor(ow_sale.qty*ow_sale.prc) preceding and 2 preceding ); -- mvd 8,9,2->7; + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn/ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between 1 preceding and 0 preceding ); -- mvd 3->7; 3->8; 3->9; + +-- CORR() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc+ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between 7 preceding and current row ); -- mvd 3,4->2; + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.qty,ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between floor(ow_sale.cn) preceding and current row ), +win2 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.vn asc); -- mvd 4,5->3; 7,5,1->6; 7,5,1->8; + +-- CORR() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between 0 preceding and 6 following ); -- mvd 1->4; + +-- CORR() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between 0 preceding and unbounded following ); -- mvd 2,4->3; + +-- CORR() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc),floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between current row and current row ); -- mvd 6->5; + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.vn asc rows between current row and current row ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,4->2; 3->5; + +-- CORR() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn/ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between current row and 5 following ); -- mvd 2->4; + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn/ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between current row and floor(ow_sale.prc) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between current row and floor(ow_sale.prc) following ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc); -- mvd 6,3->5; 6,3->7; 6->8; 6->9; 6->10; 2,6,3,1->11; + +-- CORR() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc rows between current row and unbounded following ); -- mvd 5->4; + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and unbounded following ), +win2 as (partition by ow_sale.pn order by ow_sale.pn asc); -- mvd 3->2; 3->4; + +-- CORR() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between floor(ow_sale.pn) following and floor(ow_sale.pn+ow_sale.vn) following ); -- mvd 3,4->2; + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc),floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between 2 following and floor(ow_sale.prc*ow_sale.vn) following ), +win2 as (partition by ow_sale.cn order by ow_sale.cn desc), +win3 as (order by ow_sale.cn asc), +win4 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.vn desc); -- mvd 2,1->6; 2->7; 2,1->8; 2->9; 2->10; 12,2,1->11; + +-- CORR() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn-ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.pn asc rows between 0 following and unbounded following ); -- mvd 1->4; + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty-ow_sale.qty),floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn/ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between floor(ow_sale.prc) following and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc); -- mvd 3->2; 5,3,6,1->4; 5,3,6,1->7; 5,9,6,1->8; 5,3,6,1->10; + +-- CORR() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn asc,ow_sale.cn asc,ow_sale.cn asc); -- mvd 4,5->3; + +-- CORR() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty*ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn desc range unbounded preceding ); -- mvd 3,4->2; + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn),floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.dt order by ow_sale.pn desc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.dt order by ow_sale.pn desc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.cn) as int),cast (floor(ow_sale.vn-ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.dt order by ow_sale.pn desc range unbounded preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.pn desc); -- mvd 4,2,1,6->5; 4,2,1,6->7; 4,2,1,6->8; 4,2,1,6->9; 3->10; 6->11; + +-- CORR() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.cn asc range floor(ow_sale.pn) preceding ); -- mvd 1,7->6; + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.prc)) OVER(partition by ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.vn,ow_sale.vn order by ow_sale.vn asc range 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty/ow_sale.cn)) OVER(partition by ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.vn,ow_sale.vn order by ow_sale.vn asc range 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.vn,ow_sale.vn order by ow_sale.vn asc range 2 preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc); -- mvd 6,1,2,7->5; 6,1,2,7->8; 6,1,2,7->9; 6,1,2,7->10; 2->11; 3,1,13->12; + +-- CORR() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn asc range current row ); -- mvd 1,3->4; + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty*ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.pn desc range current row ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.pn asc); -- mvd 5,2,7->6; 2->8; 5,2,7->9; 3,7->10; + +-- CORR() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc-ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn desc range between unbounded preceding and 0 preceding ); -- mvd 3->2; + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc-ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.dt order by ow_sale.cn asc range between unbounded preceding and 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.cn asc range between unbounded preceding and 2 preceding ), +win2 as (order by ow_sale.pn asc); -- mvd 3,1->2; 3,1->4; 6->5; + +-- CORR() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.vn order by ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 1,5,2,6->4; + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn+ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.pn) as int),cast (floor(ow_sale.cn/ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn*ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.pn order by ow_sale.pn asc range between unbounded preceding and current row ), +win2 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.vn asc), +win4 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 6,2,7->5; 9,3->8; 1->10; 1->11; + +-- CORR() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.prc*ow_sale.cn) following ); -- mvd 8,2,1->7; + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn/ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc range between unbounded preceding and 1 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty/ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc range between unbounded preceding and 1 following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc); -- mvd 2,4,1->3; 2,4,1->5; 2->6; 2,4,8,1->7; + +-- CORR() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn desc range between unbounded preceding and unbounded following ); -- mvd 3,4->2; + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.prc order by ow_sale.vn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.pn order by ow_sale.pn asc), +win3 as (order by ow_sale.cn asc); -- mvd 3,4,1->2; 6->5; 6->7; 9->8; + +-- CORR() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.dt order by ow_sale.pn desc range between floor(ow_sale.qty/ow_sale.vn) preceding and floor(ow_sale.vn) preceding ); -- mvd 5,2,7->6; + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn),floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.prc,ow_sale.cn order by ow_sale.cn asc range between 4 preceding and 0 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.cn order by ow_sale.cn asc range between 4 preceding and 0 preceding ); -- mvd 3,4,5->2; 3,4,5->6; + +-- CORR() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn*ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.vn desc range between 2 preceding and current row ); -- mvd 7,4,1->6; + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty-ow_sale.pn),floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.qty)) OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn/ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.pn desc range between 4 preceding and current row ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc); -- mvd 7,2,8,1,9->6; 1->10; 1->11; 7,2,9->12; + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.qty order by ow_sale.pn desc range between floor(ow_sale.vn) preceding and 3 following ), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.cn asc); -- mvd 3,4,5,1->2; 3,1->6; + +-- CORR() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty+ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.pn desc range between 3 preceding and unbounded following ); -- mvd 6,3->5; + +-- CORR() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc),floor(ow_sale.prc/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn asc range between current row and current row ); -- mvd 6,2->5; + +-- CORR() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.cn desc range between current row and floor(ow_sale.vn) following ); -- mvd 3,4->2; + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty+ow_sale.prc),floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.cn order by ow_sale.cn asc range between current row and 3 following ), +win2 as (partition by ow_sale.vn order by ow_sale.pn asc), +win3 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.cn desc); -- mvd 2,1,4->3; 4,6->5; 2,4->7; + +-- CORR() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.cn asc range between current row and unbounded following ); -- mvd 1,3,2->4; + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.pn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(partition by ow_sale.dt order by ow_sale.cn desc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn desc range between current row and unbounded following ), +win2 as (partition by ow_sale.cn order by ow_sale.vn asc); -- mvd 3,5->4; 3,5->6; 3,2->7; + +-- CORR() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn*ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.cn desc range between floor(ow_sale.prc) following and floor(ow_sale.prc) following ); -- mvd 6,3->5; + +-- CORR() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc-ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt order by ow_sale.pn desc range between floor(ow_sale.cn) following and unbounded following ); -- mvd 3,1,4->2; + +-- CORR() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows unbounded preceding ); -- mvd 5,6,2,7,8->4; + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty-ow_sale.cn),floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows unbounded preceding ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn desc), +win4 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,6,7,2,1->5; 1->8; 6,2->9; 3->10; 1->11; + +-- CORR() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows floor(ow_sale.pn*ow_sale.prc) preceding ); -- mvd 3,6,1->5; + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.vn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows 1 preceding ), +win2 as (order by ow_sale.vn asc), +win3 as (order by ow_sale.vn asc); -- mvd 7,4,8,5,1->6; 3->9; 3->10; 3->11; 7,4,8,5,1->12; 3->13; + +-- CORR() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows current row ); -- mvd 1,8->7; + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.vn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc rows current row ), +win2 as (partition by ow_sale.pn order by ow_sale.vn desc), +win3 as (order by ow_sale.pn desc); -- mvd 1,2->5; 7,2->6; 2->8; 2->9; + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.vn asc rows between unbounded preceding and 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.vn)) OVER(partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.vn asc rows between unbounded preceding and 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.vn asc rows between unbounded preceding and 2 preceding ), +win2 as (order by ow_sale.vn asc), +win3 as (order by ow_sale.cn asc); -- mvd 4,2->3; 4,2->5; 4,2->6; 2->7; 2->8; 4->9; + +-- CORR() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and current row ); -- mvd 3,4,5,1->2; + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty/ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.pn asc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.cn asc); -- mvd 3,4,5,6,1->2; 3,5->7; 3,4,5->8; 3,5->9; 3,5->10; 3,4,5->11; + +-- CORR() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn-ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.pn desc rows between unbounded preceding and 2 following ); -- mvd 5,6,1,2,7->4; + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty/ow_sale.vn)) OVER(partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn desc rows between unbounded preceding and 3 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn desc rows between unbounded preceding and 3 following ); -- mvd 4,5,1->3; 4,5,1->6; + +-- CORR() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.vn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and unbounded following ); -- mvd 5,6,3,1,7->4; + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn-ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.dt order by ow_sale.cn desc), +win3 as (order by ow_sale.vn asc); -- mvd 2,1,4,5->3; 7,2,1,5->6; 7,2,1,5->8; 4->9; + +-- CORR() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.cn) preceding and floor(ow_sale.qty) preceding ); -- mvd 3,4->2; + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows between floor(ow_sale.cn*ow_sale.pn) preceding and 3 preceding ); -- mvd 3,1,4->2; 3,1,4->5; + +-- CORR() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc rows between 5 preceding and current row ); -- mvd 3,6->7; + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn+ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.qty) as int),cast (floor(ow_sale.pn-ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc rows between 1 preceding and current row ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,1,4->7; 4->8; 3->9; 4->10; 1->11; 1->12; + +-- CORR() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.prc) preceding and 6 following ); -- mvd 8,4,1->7; + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn-ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn+ow_sale.prc) as int),cast (floor(ow_sale.qty+ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between floor(ow_sale.cn) preceding and floor(ow_sale.cn+ow_sale.vn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between floor(ow_sale.cn) preceding and floor(ow_sale.cn+ow_sale.vn) following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.cn desc), +win3 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc), +win4 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc); -- mvd 1,2,6->5; 1,8,2,6->7; 8,2,10->9; 10,2->11; 1,2,6->12; 10,2->13; + +-- CORR() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows between 0 preceding and unbounded following ); -- mvd 4,2,5->3; + +-- CORR() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc-ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc rows between current row and current row ); -- mvd 1,4,5->3; + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty/ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows between current row and current row ), +win2 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 5,2,1->4; 5,7->6; 5,7->8; 5,2,1->9; 5,7->10; + +-- CORR() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn),floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.pn asc rows between current row and 7 following ); -- mvd 5,6,2->4; + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.qty),floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc rows between current row and 3 following ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.dt order by ow_sale.cn asc); -- mvd 1,3,4->2; 1,3,4->5; 7,1,3,8,4,9->6; 7,1,3,8,4,9->10; 1,3,4->11; + +-- CORR() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between current row and unbounded following ); -- mvd 6,7,8,4->5; + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(CORR(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.prc) as int),cast (floor(ow_sale.vn*ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,4,5,1->2; 7->6; 7->8; 3,4,5,1->9; 1->10; + +-- CORR() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc,ow_sale.cn asc rows between floor(ow_sale.pn/ow_sale.qty) following and floor(ow_sale.vn*ow_sale.vn) following ); -- mvd 2,3,1->5; + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(CORR(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc rows between 2 following and floor(ow_sale.pn) following ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.cn asc); -- mvd 5,6->4; 6->7; 5,6->8; 6->9; 1->10; + +-- CORR() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.prc/ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.prc) following and unbounded following ); -- mvd 4,5,1,6,7->3; + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(CORR(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between 3 following and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc); -- mvd 1,2,5->4; 1,2,5->6; 8,1,9,2,10->7; + +-- COVAR_POP() function with NULL OVER() clause -- + +SELECT ow_sale.prc,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (); -- mvd 4->4; + +-- COVAR_POP() function with NULL OVER() clause in combination with other window functions -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn+ow_sale.pn),floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.prc)) OVER(),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (), +win2 as (order by ow_sale.cn asc); -- mvd 6->6; 6->7; 2->8; + +-- COVAR_POP() function with OVER() clause having ONLY PARTITION BY -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.prc/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn); -- mvd 1,3->2; + +-- COVAR_POP() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn-ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.cn),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.cn); -- mvd 5,6,1->4; 5,6,1->7; + +-- COVAR_POP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn*ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc,ow_sale.pn desc,ow_sale.cn asc); -- mvd 3,4->2; + +-- COVAR_POP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn-ow_sale.pn)) OVER(order by ow_sale.cn asc,ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.cn asc,ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(order by ow_sale.cn asc,ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc,ow_sale.vn desc); -- mvd 3,4->2; 3,4->5; 3,4->6; 3,4->7; + +-- COVAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty/ow_sale.cn),floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range unbounded preceding ); -- mvd 1->3; + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn),floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn-ow_sale.pn) as int),cast (floor(ow_sale.prc+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc/ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range unbounded preceding ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.cn asc), +win4 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc); -- mvd 5->4; 7,5->6; 7->8; 7,5->9; 11,7,12,3->10; 7,5->13; + +-- COVAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn/ow_sale.pn),floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range 3 preceding ); -- mvd 3->2; + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn+ow_sale.prc),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.vn)) OVER(order by ow_sale.vn desc range floor(ow_sale.cn) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range floor(ow_sale.cn) preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 4->3; 2->5; 2->6; 4->7; + +-- COVAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ); -- mvd 3->4; + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range current row ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 1->4; 1->5; 7,8,9->6; 8->10; + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc-ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and 2 preceding ), +win2 as (order by ow_sale.pn asc); -- mvd 5->7; 3->8; + +-- COVAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn),floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and current row ); -- mvd 1->4; + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn+ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and current row ); -- mvd 3->2; 3->4; 3->5; + +-- COVAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and 0 following ); -- mvd 4->3; + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty-ow_sale.qty) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn*ow_sale.pn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and 4 following ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.pn desc), +win4 as (order by ow_sale.cn asc), +win5 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.pn asc); -- mvd 3->4; 1->5; 1->6; 8->7; 1->9; + +-- COVAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn+ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and unbounded following ); -- mvd 3->7; + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn-ow_sale.vn),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty+ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty*ow_sale.cn) as int),cast (floor(ow_sale.prc+ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty/ow_sale.pn) as int),cast (floor(ow_sale.prc+ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc), +win4 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 5->6; 8,9,5->7; 9,3,11,5->10; 8,9,5->12; 1->13; 1->14; + +-- COVAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 2 preceding and floor(ow_sale.cn) preceding ); -- mvd 3->2; + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 3 preceding and 4 preceding ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.vn asc), +win3 as (order by ow_sale.cn desc); -- mvd 1->2; 1->3; 5,6,1->4; 8->7; + +-- COVAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn*ow_sale.cn),floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.pn) preceding and current row ); -- mvd 3->2; + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 3 preceding and current row ); -- mvd 2->5; 2->6; + +-- COVAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn),floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.qty*ow_sale.prc) preceding and floor(ow_sale.cn/ow_sale.cn) following ); -- mvd 2->6; + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.vn,ow_sale.qty order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.cn/ow_sale.qty) preceding and floor(ow_sale.vn+ow_sale.pn) following ), +win2 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.pn desc); -- mvd 3->2; 5,3,6->4; 5,3,6->7; + +-- COVAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.cn) preceding and unbounded following ); -- mvd 6->5; + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.pn) preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.vn desc), +win3 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn desc); -- mvd 4->3; 4,6->5; 6,8->7; 4->9; 4->10; + +-- COVAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and current row ); -- mvd 3->2; + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn),floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty+ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.pn,ow_sale.dt order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc*ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and current row ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 5->4; 2->6; 2,8,9->7; 2->10; 2,8,9->11; 2->12; + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn+ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.prc+ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and floor(ow_sale.pn/ow_sale.qty) following ), +win2 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.pn desc), +win3 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc), +win4 as (order by ow_sale.cn asc); -- mvd 2->3; 5,2->4; 7,8,5,2->6; 5,2->9; 7->10; + +-- COVAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and unbounded following ); -- mvd 1->7; + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.prc order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and unbounded following ), +win2 as (partition by ow_sale.prc order by ow_sale.cn desc); -- mvd 8->7; 10,8->9; 10,8->11; 10,8->12; + +-- COVAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 1 following and 0 following ); -- mvd 1->4; + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn*ow_sale.pn),floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.cn)) OVER(order by ow_sale.pn asc range between 2 following and 2 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 2 following and 2 following ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.prc,ow_sale.prc,ow_sale.pn order by ow_sale.pn desc), +win4 as (order by ow_sale.vn desc); -- mvd 7->6; 7->8; 7->9; 2->10; 3,12,7->11; 14->13; + +-- COVAR_POP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 4 following and unbounded following ); -- mvd 3->2; + +-- COVAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc/ow_sale.vn),floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(order by ow_sale.cn asc range between floor(ow_sale.cn) following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.cn) following and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.prc order by ow_sale.cn asc), +win3 as (order by ow_sale.vn desc); -- mvd 3->2; 3->4; 6,7,3,8,9->5; 3->10; 1->11; + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc+ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.pn asc rows unbounded preceding ); -- mvd 1,3,4->2; + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.pn asc rows unbounded preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,5->4; 3->6; + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty-ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.cn asc rows floor(ow_sale.pn+ow_sale.vn) preceding ); -- mvd 5->4; + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn-ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows 3 preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 2->5; 2->6; + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.pn asc rows current row ); -- mvd 3,4,5->2; + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn),floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty/ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.cn asc rows current row ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc), +win4 as (order by ow_sale.pn asc); -- mvd 1,5->4; 5->6; 5->7; 9->8; 5->10; + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.cn+ow_sale.cn) preceding ); -- mvd 5->4; + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc,ow_sale.vn asc rows between unbounded preceding and 1 preceding ), +win2 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.cn desc), +win3 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.dt,ow_sale.qty order by ow_sale.cn asc); -- mvd 7->6; 1,9,4->8; 1,9,3->10; + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 4->3; + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and current row ); -- mvd 5,1->4; 5,1->6; + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn*ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between unbounded preceding and 4 following ); -- mvd 4->3; + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc/ow_sale.vn),floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn asc rows between unbounded preceding and 0 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn asc rows between unbounded preceding and 0 following ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.qty order by ow_sale.cn asc); -- mvd 1,5->6; 1,5->7; 4->8; 4,1,10->9; + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn-ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 5,6->4; + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.pn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc,ow_sale.vn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.cn asc); -- mvd 2->6; 2->7; 3,9,2->8; + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between 2 preceding and floor(ow_sale.cn) preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 6->7; 4->8; + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty+ow_sale.qty),floor(ow_sale.pn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between 1 preceding and current row ); -- mvd 4->3; + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn-ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.pn asc rows between 4 preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between 4 preceding and current row ); -- mvd 2->3; 2->4; + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty+ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.vn) preceding and floor(ow_sale.cn+ow_sale.vn) following ); -- mvd 3->5; + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty+ow_sale.pn),floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.pn desc rows between 1 preceding and unbounded following ); -- mvd 3,1->2; + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 0 preceding and unbounded following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.pn order by ow_sale.vn asc); -- mvd 2->3; 2->4; 6,7->5; + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows between current row and current row ); -- mvd 1,5->4; + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn*ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn asc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn+ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn asc rows between current row and current row ), +win2 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 5,3->4; 5,3->6; 1,8,5->7; 1->9; 5,3->10; + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn*ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.vn desc rows between current row and 8 following ); -- mvd 1,5->6; + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty*ow_sale.vn) as int),cast (floor(ow_sale.cn*ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between current row and 0 following ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.dt order by ow_sale.vn asc), +win3 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc), +win4 as (order by ow_sale.pn asc); -- mvd 7,1->6; 9,1,4,2->8; 11,7,2->10; 2->12; 7,1->13; 11,7,2->14; + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty*ow_sale.qty),floor(ow_sale.cn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.vn asc rows between current row and unbounded following ); -- mvd 4,1->3; + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty/ow_sale.pn),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.qty order by ow_sale.vn asc), +win4 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 5->4; 5->6; 5,8->7; 10,1,5,3->9; + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn/ow_sale.qty),floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.pn desc rows between floor(ow_sale.pn+ow_sale.cn) following and floor(ow_sale.vn+ow_sale.cn) following ); -- mvd 4,2->5; + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn/ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc rows between 4 following and 3 following ), +win2 as (order by ow_sale.vn asc); -- mvd 1->3; 1->4; 1->5; 1->6; 1->7; + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn/ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between floor(ow_sale.vn/ow_sale.cn) following and unbounded following ); -- mvd 1,2->3; + +-- COVAR_POP() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn-ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn desc,ow_sale.pn desc,ow_sale.cn asc); -- mvd 1,6,7,8->5; + +-- COVAR_POP() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn/ow_sale.vn),floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +, +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.pn order by ow_sale.cn desc,ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.prc)) OVER(partition by ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.pn order by ow_sale.cn desc,ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty+ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.pn order by ow_sale.cn desc,ow_sale.vn asc), +win2 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 1,4,6,2->5; 1,4,6,2->7; 1,4,6,2->8; 1,4,6,2->9; 1,4,6,2->10; 4->11; + +-- COVAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.qty*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.vn order by ow_sale.cn asc range unbounded preceding ); -- mvd 8,5,4,1->7; + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn/ow_sale.cn),floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn/ow_sale.pn)) OVER(partition by ow_sale.dt order by ow_sale.cn asc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn asc range unbounded preceding ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.qty order by ow_sale.cn desc), +win3 as (order by ow_sale.cn desc), +win4 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.pn order by ow_sale.pn asc); -- mvd 5,6->4; 5,6->7; 5,2,9->8; 5,6->10; 5->11; 13,5,6,1->12; + +-- COVAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty-ow_sale.qty),floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc order by ow_sale.pn asc range floor(ow_sale.qty) preceding ); -- mvd 2,1,3->7; + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc+ow_sale.prc),floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.prc order by ow_sale.pn asc range floor(ow_sale.pn*ow_sale.prc) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc order by ow_sale.pn asc range floor(ow_sale.pn*ow_sale.prc) preceding ); -- mvd 8,2,4->7; 8,2,4->9; + +-- COVAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc range current row ); -- mvd 1,4,6,2->5; + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn-ow_sale.prc),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.pn)) OVER(partition by ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.vn order by ow_sale.cn asc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc/ow_sale.pn) as int),cast (floor(ow_sale.pn*ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.vn order by ow_sale.cn asc range current row ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.cn asc), +win3 as (partition by ow_sale.vn order by ow_sale.cn desc), +win4 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc); -- mvd 4,3,7,8->6; 3,10,8->9; 3,7->11; 4,3,7,8->12; 3,7,8->13; + +-- COVAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.qty) preceding ); -- mvd 6,7,1,4->5; + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn/ow_sale.cn),floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty/ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.prc order by ow_sale.pn asc range between unbounded preceding and floor(ow_sale.vn*ow_sale.pn) preceding ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.vn asc), +win3 as (order by ow_sale.pn desc), +win4 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,4,5->2; 1,4,7->6; 5->8; 3,1,7,10->9; 1,4,7->11; 3,1,7,10->12; + +-- COVAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty-ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.vn asc range between unbounded preceding and current row ); -- mvd 4,3->5; + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn*ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.vn desc range between unbounded preceding and current row ); -- mvd 6,7->5; 6,7->8; + +-- COVAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty*ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.dt order by ow_sale.cn desc range between unbounded preceding and 2 following ); -- mvd 4,2,5,6->3; + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn*ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.cn)) OVER(partition by ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.vn order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.qty) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.vn order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.qty) following ); -- mvd 4,2,1->5; 4,2,1->6; + +-- COVAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.cn asc range between unbounded preceding and unbounded following ); -- mvd 6,7,1->5; + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.cn asc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.vn asc); -- mvd 1,4->6; 4,2,8->7; 4,2,8->9; + +-- COVAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.pn desc range between 1 preceding and current row ); -- mvd 2,4->6; + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn-ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.vn order by ow_sale.cn desc range between floor(ow_sale.vn) preceding and current row ), +win2 as (partition by ow_sale.qty,ow_sale.qty order by ow_sale.cn desc), +win3 as (order by ow_sale.cn desc); -- mvd 3,4,5,1->2; 3,4,5,1->6; 3,5->7; 3->8; + +-- COVAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.prc/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn asc range between floor(ow_sale.pn-ow_sale.pn) preceding and floor(ow_sale.pn-ow_sale.cn) following ); -- mvd 4,7->6; + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc range between floor(ow_sale.qty) preceding and 1 following ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc); -- mvd 1,3,5->4; 2->6; 2->7; 3,9,5->8; + +-- COVAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc/ow_sale.vn),floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.dt order by ow_sale.vn desc range between 3 preceding and unbounded following ); -- mvd 1,5,3,6->4; + +-- COVAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn+ow_sale.vn),floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.pn order by ow_sale.pn asc range between current row and current row ); -- mvd 1,5->4; + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc-ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.vn asc range between current row and current row ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc), +win4 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.pn desc), +win5 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 1,4->6; 1,4->7; 9->8; 4->10; 12,1,9->11; 4->13; + +-- COVAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn/ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.pn order by ow_sale.vn asc range between current row and 4 following ); -- mvd 1,3,4->6; + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn-ow_sale.pn),floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc/ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn*ow_sale.pn) as int),cast (floor(ow_sale.cn*ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.prc,ow_sale.pn order by ow_sale.cn asc range between current row and floor(ow_sale.vn+ow_sale.pn) following ), +win2 as (partition by ow_sale.cn,ow_sale.prc order by ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc); -- mvd 5,1,6->4; 5,1->7; 5,1->8; 5,1->9; 2,1,6->10; + +-- COVAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.cn order by ow_sale.vn asc range between current row and unbounded following ); -- mvd 8,2,4,9,1->7; + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn*ow_sale.vn),floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.vn order by ow_sale.vn asc range between current row and unbounded following ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.cn desc); -- mvd 1,6,4->5; 2->7; 9->8; + +-- COVAR_POP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.pn asc range between floor(ow_sale.pn+ow_sale.pn) following and floor(ow_sale.pn-ow_sale.cn) following ); -- mvd 3,1->2; + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc rows unbounded preceding ); -- mvd 1,2,3->6; + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty*ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.pn,ow_sale.pn order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows unbounded preceding ), +win2 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.cn desc), +win3 as (order by ow_sale.pn desc); -- mvd 3,7,2,8->6; 3,8->9; 3,8->10; 8->11; + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows 2 preceding ); -- mvd 2,6,1->5; + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn*ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc/ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc rows 0 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc rows 0 preceding ), +win2 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,4,1->2; 6->5; 6->7; 3,4,1->8; + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc,ow_sale.pn asc rows current row ); -- mvd 5,3,6->4; + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn-ow_sale.cn) as int),cast (floor(ow_sale.prc*ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn+ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.cn asc rows current row ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc), +win4 as (order by ow_sale.cn asc); -- mvd 3,1->2; 3->4; 6,1->5; 6,1->7; 3->8; 3->9; + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc),floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and 4 preceding ); -- mvd 1,6,3,8->7; + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.cn)) OVER(partition by ow_sale.prc,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc,ow_sale.pn desc rows between unbounded preceding and 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc,ow_sale.pn desc rows between unbounded preceding and 1 preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 6,2,1,8->7; 6,2,1,8->9; 11->10; 11->12; + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 1,3,4->2; + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn/ow_sale.cn),floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and unbounded following ); -- mvd 4,5->3; + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn+ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn+ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn asc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 6,1,4->5; 4->7; 4->8; 6,1,4->9; 4->10; + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows between 9 preceding and floor(ow_sale.cn) preceding ); -- mvd 6,7,8->5; + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.cn asc rows between 4 preceding and floor(ow_sale.vn) preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.qty order by ow_sale.pn desc), +win4 as (order by ow_sale.ord, ow_sale.cn asc), +win5 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 1,4,5->3; 5->6; 8,1,9,4,5->7; 1->10; 4->11; + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty-ow_sale.cn),floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.vn asc rows between floor(ow_sale.qty) preceding and current row ); -- mvd 6,1,3,7,8->5; + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows between 1 preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows between 1 preceding and current row ); -- mvd 5,6,2,1,7->4; 5,6,2,1,7->8; + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.vn*ow_sale.vn) preceding and floor(ow_sale.vn+ow_sale.pn) following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.pn desc); -- mvd 2,8,4->7; 10,1,4->9; + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.cn+ow_sale.vn) preceding and unbounded following ); -- mvd 5,6,2,1->4; + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc rows between floor(ow_sale.cn) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn/ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc rows between floor(ow_sale.cn) preceding and unbounded following ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.cn asc); -- mvd 6,2,1->5; 8->7; 8->9; 6,2,1->10; 8->11; + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.vn asc rows between current row and current row ); -- mvd 3,4->5; + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.prc),floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.dt order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn asc rows between current row and current row ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.dt order by ow_sale.cn asc); -- mvd 3,1,4->2; 3,1,6->5; 3,1,6->7; 3,1,6->8; 3,1,6->9; 3,1,6->10; + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn-ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc rows between current row and floor(ow_sale.prc/ow_sale.cn) following ); -- mvd 3,1,5->6; + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn+ow_sale.cn),floor(ow_sale.pn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between current row and unbounded following ); -- mvd 3,8,2,5->7; + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty-ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.pn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 4,6,3->5; 8->7; 4,6,3->9; + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between 1 following and 8 following ); -- mvd 3,4,5->2; + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.cn*ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.qty+ow_sale.qty) following and 4 following ), +win2 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.vn desc); -- mvd 4,5,6,7->3; 5,1,7->8; + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.vn*ow_sale.qty),floor(ow_sale.vn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows between 5 following and unbounded following ); -- mvd 4,5,6->3; + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between floor(ow_sale.qty) following and unbounded following ), +win2 as (partition by ow_sale.vn order by ow_sale.cn asc); -- mvd 1,8,9,3->7; 1,8,9,3->10; 1,9->11; 1,8,9,3->12; 1,9->13; 1,9->14; + +-- COVAR_SAMP() function with NULL OVER() clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (); -- mvd 6->6; + +-- COVAR_SAMP() function with NULL OVER() clause in combination with other window functions -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc-ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.cn) as int),cast (floor(ow_sale.cn+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc); -- mvd 6->6; 6->7; 3->8; 10,4,3,11->9; 10,4,3,11->12; 10,4,3,11->13; + +-- COVAR_SAMP() function with OVER() clause having ONLY PARTITION BY -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.cn); -- mvd 4,5,6->3; + +-- COVAR_SAMP() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn*ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.qty,ow_sale.qty),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.qty,ow_sale.qty), +win2 as (order by ow_sale.vn asc); -- mvd 8,9,6,1->7; 8,9,6,1->10; 2->11; + +-- COVAR_SAMP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc/ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc); -- mvd 1->4; + +-- COVAR_SAMP() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn desc); -- mvd 6,4->5; 6,4->7; 6,4->8; 6,4->9; 6,4->10; 6,4->11; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ); -- mvd 6->5; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.qty)) OVER(order by ow_sale.pn desc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.pn+ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range unbounded preceding ), +win2 as (order by ow_sale.ord, ow_sale.vn asc), +win3 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.vn asc), +win4 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.cn order by ow_sale.pn asc); -- mvd 2->7; 2->8; 1->9; 4,11,3,1->10; 11,3,13,2->12; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range floor(ow_sale.qty*ow_sale.prc) preceding ); -- mvd 3->5; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn+ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.vn)) OVER(order by ow_sale.vn asc range 4 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty-ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range 4 preceding ), +win2 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 3->2; 3->4; 3->5; 3->6; 8,3,9->7; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn*ow_sale.cn),floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range current row ); -- mvd 7->6; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range current row ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc); -- mvd 1->5; 1->6; 1,8->7; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and 4 preceding ); -- mvd 1->6; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn-ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and 1 preceding ), +win2 as (order by ow_sale.vn asc), +win3 as (order by ow_sale.ord, ow_sale.vn desc), +win4 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc); -- mvd 2->4; 2->5; 2->6; 2->7; 2->8; 2,10->9; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty/ow_sale.qty),floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and current row ); -- mvd 5->4; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn/ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.pn) following ); -- mvd 2->6; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn*ow_sale.vn),floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and 1 following ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc); -- mvd 3->2; 5,6,3,7,1->4; 3->8; 5,6,3,7,1->9; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty+ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and unbounded following ); -- mvd 3->2; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.pn asc); -- mvd 5->4; 1->6; 1->7; 1->8; 1->9; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.cn-ow_sale.cn) preceding and floor(ow_sale.vn) preceding ); -- mvd 4->3; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn*ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 4 preceding and 0 preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 1->5; 1->6; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 1 preceding and current row ); -- mvd 4->3; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty+ow_sale.prc),floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn/ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 3 preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (partition by ow_sale.cn order by ow_sale.vn desc); -- mvd 5->4; 1->6; 1->7; 2,1->8; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.pn) preceding and floor(ow_sale.pn) following ); -- mvd 4->5; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty+ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn/ow_sale.pn)) OVER(order by ow_sale.cn desc range between floor(ow_sale.prc) preceding and floor(ow_sale.pn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.prc) preceding and floor(ow_sale.pn) following ), +win2 as (order by ow_sale.cn desc); -- mvd 1->4; 1->5; 1->6; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn-ow_sale.prc),floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.vn*ow_sale.cn) preceding and unbounded following ); -- mvd 3->2; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn-ow_sale.pn),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.pn) preceding and unbounded following ), +win2 as (order by ow_sale.pn asc); -- mvd 3->2; 5->4; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and current row ); -- mvd 4->5; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn-ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn/ow_sale.cn)) OVER(order by ow_sale.pn asc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and current row ); -- mvd 3->2; 3->4; 3->5; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and floor(ow_sale.vn/ow_sale.cn) following ); -- mvd 1->3; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn+ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and 4 following ), +win2 as (order by ow_sale.vn asc); -- mvd 2->3; 5->4; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn+ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and unbounded following ); -- mvd 5->4; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn-ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and unbounded following ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.pn order by ow_sale.cn asc); -- mvd 6->5; 1->7; 1->8; 10,6,2,1->9; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc+ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 1 following and floor(ow_sale.vn) following ); -- mvd 1->4; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.cn)) OVER(order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 1 following and floor(ow_sale.cn/ow_sale.cn) following ), +win2 as (order by ow_sale.pn asc); -- mvd 1->3; 2->4; 2->5; 1->6; 2->7; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 3 following and unbounded following ); -- mvd 2->5; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(order by ow_sale.vn desc range between 4 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 4 following and unbounded following ); -- mvd 6->7; 6->8; 6->9; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc,ow_sale.cn desc rows unbounded preceding ); -- mvd 4,5->3; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn*ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows unbounded preceding ), +win2 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 3->2; 5,6->4; 6->7; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.vn desc rows floor(ow_sale.qty/ow_sale.vn) preceding ); -- mvd 4,1,5->3; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc,ow_sale.vn asc rows current row ); -- mvd 5,6,1->4; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows current row ), +win2 as (order by ow_sale.vn desc); -- mvd 2->5; 7->6; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn asc rows between unbounded preceding and 3 preceding ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.cn order by ow_sale.vn asc); -- mvd 2,8,1->7; 4,2,8,1->9; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn/ow_sale.pn),floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between unbounded preceding and current row ); -- mvd 1,6->5; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc*ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,1->2; 3,1->4; 3,1->5; 1->6; 3,1->7; 1->8; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.cn) following ); -- mvd 3->2; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn*ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn desc rows between unbounded preceding and 1 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty-ow_sale.prc) as int),cast (floor(ow_sale.prc+ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn desc rows between unbounded preceding and 1 following ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 4,5->3; 4->6; 4,5->7; 4->8; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.prc,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between unbounded preceding and unbounded following ); -- mvd 6->5; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc,ow_sale.vn desc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 4->3; 6->5; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn+ow_sale.vn),floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc rows between 8 preceding and 3 preceding ); -- mvd 1->6; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn/ow_sale.pn) as int),cast (floor(ow_sale.cn*ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty+ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc rows between floor(ow_sale.vn*ow_sale.cn) preceding and floor(ow_sale.vn) preceding ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 1->5; 7,2,4,8->6; 8->9; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc/ow_sale.qty),floor(ow_sale.prc*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows between floor(ow_sale.pn) preceding and current row ); -- mvd 6,7->5; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.pn desc rows between 7 preceding and floor(ow_sale.pn) following ); -- mvd 3->2; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn*ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.pn desc rows between floor(ow_sale.vn) preceding and 2 following ), +win2 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.pn desc); -- mvd 4,5->3; 4,7,5->6; 4,7,5->8; 4,7,5->9; 4,5->10; 4,5->11; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.prc/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc rows between 2 preceding and unbounded following ); -- mvd 4,5->3; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty*ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc rows between floor(ow_sale.prc*ow_sale.prc) preceding and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.prc,ow_sale.vn order by ow_sale.vn asc), +win3 as (order by ow_sale.vn asc), +win4 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.pn asc); -- mvd 1->6; 4,8,2,1,9->7; 1->10; 12->11; 1->13; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.vn asc rows between current row and current row ); -- mvd 3,4->5; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.cn desc rows between current row and current row ), +win2 as (order by ow_sale.pn desc); -- mvd 8->7; 8->9; 2->10; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn-ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.pn asc rows between current row and 0 following ); -- mvd 6,5->7; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn/ow_sale.cn),floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc rows between current row and unbounded following ); -- mvd 3,4->2; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.pn-ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc*ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 5,3->4; 5,3->6; 3->7; 3->8; 3->9; 3->10; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.pn+ow_sale.vn) following and 6 following ); -- mvd 8->7; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty+ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc,ow_sale.pn asc rows between 4 following and 4 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc,ow_sale.pn asc rows between 4 following and 4 following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.cn desc), +win4 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 6,7->5; 6->8; 1,10->9; 7->11; 6,7->12; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn-ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc,ow_sale.cn desc rows between floor(ow_sale.qty) following and unbounded following ); -- mvd 3,6,8->7; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.cn asc rows between 1 following and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.vn order by ow_sale.vn asc), +win3 as (partition by ow_sale.cn order by ow_sale.vn asc); -- mvd 2,5->4; 1,7,2,8,5->6; 2,8->9; 2,8->10; + +-- COVAR_SAMP() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.vn order by ow_sale.pn desc,ow_sale.pn asc); -- mvd 6,2,7,1->5; + +-- COVAR_SAMP() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn/ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.prc order by ow_sale.cn asc), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc); -- mvd 4,5,6,1->3; 4,5,6,1->7; 4,5,9->8; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.cn desc range unbounded preceding ); -- mvd 2->6; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty*ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc*ow_sale.prc) as int),cast (floor(ow_sale.pn-ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.prc,ow_sale.cn,ow_sale.vn order by ow_sale.vn asc range unbounded preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.pn asc); -- mvd 8,2,9,10->7; 2->11; 2->12; 2->13; 8,15->14; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn-ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.vn asc range 2 preceding ); -- mvd 2,4->5; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn-ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.cn order by ow_sale.pn desc range floor(ow_sale.pn) preceding ), +win2 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.cn asc); -- mvd 1,7,4,3->6; 9,1,2,3->8; 1,7,3->10; 9,1,2,3->11; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.cn desc range current row ); -- mvd 3,4,5->2; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.dt order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn-ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.cn desc range current row ), +win2 as (partition by ow_sale.dt order by ow_sale.vn desc), +win3 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 2,4,7->6; 1,4->8; 1,4->9; 11,1,2,7->10; 1,4->12; 1,4->13; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.cn desc range between unbounded preceding and 3 preceding ); -- mvd 4,5->7; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 4->3; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc*ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.dt order by ow_sale.cn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.dt order by ow_sale.cn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.dt order by ow_sale.cn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.dt order by ow_sale.cn asc range between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.dt order by ow_sale.cn asc range between unbounded preceding and current row ); -- mvd 5,1,6,7->4; 5,1,6,7->8; 5,1,6,7->9; 5,1,6,7->10; 5,1,6,7->11; 5,1,6,7->12; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc*ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn*ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.qty)) OVER(partition by ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.prc,ow_sale.vn,ow_sale.prc order by ow_sale.pn desc range between unbounded preceding and 2 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.prc,ow_sale.vn,ow_sale.prc order by ow_sale.pn desc range between unbounded preceding and 2 following ), +win2 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc); -- mvd 5,2,3,1->4; 7,1->6; 7,3->8; 5,2,3,1->9; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn*ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.pn desc range between unbounded preceding and unbounded following ); -- mvd 6,4->5; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn/ow_sale.pn),floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.prc order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.pn asc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.prc order by ow_sale.vn desc); -- mvd 3,4->2; 6,7->5; 6,7->8; 3,4->9; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn-ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.pn desc range between floor(ow_sale.vn) preceding and 3 preceding ); -- mvd 4,2->3; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.prc*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.pn asc range between floor(ow_sale.qty) preceding and 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.prc)) OVER(order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.pn asc range between floor(ow_sale.qty) preceding and 2 preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.prc,ow_sale.dt order by ow_sale.cn desc), +win4 as (order by ow_sale.pn asc); -- mvd 3,4,5->2; 3,4,5->6; 4->7; 9,3,10,1->8; 5->11; 5->12; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.cn desc range between 0 preceding and 4 following ); -- mvd 4,5->3; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.vn asc range between 0 preceding and floor(ow_sale.prc+ow_sale.cn) following ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,5->6; 8->7; 8->9; 8->10; 4,5->11; 1->12; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn*ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.dt order by ow_sale.pn asc range between 0 preceding and unbounded following ), +win2 as (order by ow_sale.cn desc); -- mvd 7,8,9,1->6; 8->10; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn+ow_sale.cn),floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.vn desc range between current row and current row ); -- mvd 3,1,4->2; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.cn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn/ow_sale.pn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc range between current row and current row ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.cn order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 7,8,9->6; 7,9,2->10; 7,9,2->11; 2->12; 2->13; 7,8,9->14; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.prc,ow_sale.cn order by ow_sale.vn asc range between current row and floor(ow_sale.prc/ow_sale.vn) following ), +win2 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.vn desc); -- mvd 5,2,1->4; 7,1,3->6; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.prc order by ow_sale.vn desc range between current row and unbounded following ); -- mvd 4,2,5,1,6->3; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn+ow_sale.cn),floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn-ow_sale.vn)) OVER(partition by ow_sale.dt order by ow_sale.vn asc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn asc range between current row and unbounded following ), +win2 as (order by ow_sale.cn asc); -- mvd 2,7->6; 1->8; 2,7->9; 1->10; 1->11; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc range between 4 following and floor(ow_sale.prc) following ), +win2 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.dt order by ow_sale.cn desc); -- mvd 3,4,5->2; 3,4,5,7->6; 3,4,5,7->8; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn/ow_sale.qty),floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.cn asc range between 4 following and unbounded following ); -- mvd 1,5->7; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty/ow_sale.cn),floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.pn desc range between floor(ow_sale.vn) following and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc); -- mvd 4,5->3; 7,4,5->6; 7,4,5->8; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows unbounded preceding ); -- mvd 2,5,6->4; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.prc order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows unbounded preceding ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.dt order by ow_sale.vn asc), +win3 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.prc order by ow_sale.pn asc); -- mvd 3,1,4,5->2; 3,1,4,5->6; 8,3,1->7; 10,3,1,4,5->9; 8,3,1->11; 10,3,1,4,5->12; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows 6 preceding ); -- mvd 1->2; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows 1 preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.qty order by ow_sale.vn desc); -- mvd 4,5->3; 5->6; 8,4->7; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty*ow_sale.qty),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows current row ); -- mvd 3,2,5,6,1->4; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty/ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.prc) as int),cast (floor(ow_sale.vn*ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.cn desc rows current row ), +win2 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc); -- mvd 4,5,6,1->3; 8,6,1->7; 8,6,1->9; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and 3 preceding ); -- mvd 8,2->7; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn+ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and current row ); -- mvd 6,7,4,1->5; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.prc*ow_sale.cn) following ); -- mvd 4,1,5,6->3; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn-ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and 3 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and 3 following ), +win2 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.cn order by ow_sale.cn desc), +win3 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.cn desc); -- mvd 6,7,1->5; 6,7,2,3->8; 7,3->9; 6,7,1->10; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc,ow_sale.vn desc rows between unbounded preceding and unbounded following ); -- mvd 6,7,8,1,2->5; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.dt order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.dt order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.dt order by ow_sale.cn desc), +win3 as (partition by ow_sale.qty,ow_sale.prc order by ow_sale.pn asc); -- mvd 4,6->5; 4,6->7; 9,10,4,1->8; 9,10,4,1->11; 9,1,6->12; 9,10,4,1->13; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn+ow_sale.prc),floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.cn)) OVER(partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc rows between 0 preceding and 4 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc rows between 0 preceding and 4 preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.prc order by ow_sale.pn asc); -- mvd 3,4->6; 3,4->7; 4->8; 4->9; 4->10; 12,2,1,4->11; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc rows between 0 preceding and current row ); -- mvd 5,6,7,8->4; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.prc/ow_sale.cn) preceding and floor(ow_sale.pn) following ); -- mvd 2,3->6; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows between 3 preceding and floor(ow_sale.vn/ow_sale.qty) following ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.cn desc), +win4 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.pn asc); -- mvd 6,7,8->5; 2->9; 2->10; 1,8->11; 2->12; 1,8->13; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.pn desc rows between 0 preceding and unbounded following ); -- mvd 4,5,6,1,7->3; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between 2 preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between 2 preceding and unbounded following ), +win2 as (order by ow_sale.pn desc); -- mvd 3,4,5->2; 5->6; 3,4,5->7; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc rows between current row and current row ); -- mvd 8,3,1->7; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(partition by ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.pn desc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.pn desc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.pn desc rows between current row and current row ), +win2 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.pn desc); -- mvd 7,1,4,2->6; 7,1,4,2->8; 7,1,4,2->9; 3,2->10; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn-ow_sale.pn),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc rows between current row and floor(ow_sale.pn/ow_sale.cn) following ); -- mvd 6,7->5; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn/ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc-ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc rows between current row and floor(ow_sale.qty+ow_sale.prc) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc rows between current row and floor(ow_sale.qty+ow_sale.prc) following ), +win2 as (order by ow_sale.cn desc); -- mvd 3,4,5->2; 3,4,5->6; 3,4,5->7; 3->8; 3->9; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc rows between current row and unbounded following ); -- mvd 3,4,1->2; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc*ow_sale.cn) as int),cast (floor(ow_sale.pn*ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 6,7,3,2->5; 3->8; 3->9; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.prc),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows between floor(ow_sale.pn) following and 6 following ); -- mvd 1,5,6->4; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.vn),floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.qty) following and 3 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.qty) following and 3 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.qty) following and 3 following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.cn asc); -- mvd 5,6,3->4; 6->7; 6->8; 5,6,3->9; 5,6,3->10; 6->11; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.cn),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc rows between 6 following and unbounded following ); -- mvd 7,3,1->6; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty/ow_sale.pn)) OVER(partition by ow_sale.prc,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc rows between 3 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn-ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc rows between 3 following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.cn asc); -- mvd 3,1->4; 3,1->5; 7->6; 7->8; 10,7,11->9; 3,1->12; + +-- REGR_AVGX() function with NULL OVER() clause -- + +SELECT ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn+ow_sale.cn),floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (); -- mvd 6->6; + +-- REGR_AVGX() function with NULL OVER() clause in combination with other window functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn*ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.cn order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.cn order by ow_sale.pn desc); -- mvd 7->7; 1->8; 2,4->9; 2,4->10; + +-- REGR_AVGX() function with OVER() clause having ONLY PARTITION BY -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.prc); -- mvd 8,9,4->7; + +-- REGR_AVGX() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- + +SELECT ow_sale.dt,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn*ow_sale.vn),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn), +win2 as (order by ow_sale.cn desc); -- mvd 5->4; 5->6; 8->7; + +-- REGR_AVGX() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc,ow_sale.pn asc,ow_sale.vn desc); -- mvd 2,1->3; + +-- REGR_AVGX() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc-ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn/ow_sale.qty)) OVER(order by ow_sale.pn desc,ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc,ow_sale.pn asc); -- mvd 3->4; 3->5; 3->6; 3->7; + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc*ow_sale.prc),floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range unbounded preceding ); -- mvd 6->5; + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc*ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.cn)) OVER(order by ow_sale.vn desc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc*ow_sale.vn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range unbounded preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.cn order by ow_sale.pn asc); -- mvd 1->5; 1->6; 1->7; 9->8; 2,9->10; 2,9->11; + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn*ow_sale.cn),floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range floor(ow_sale.vn) preceding ); -- mvd 8->7; + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range 4 preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 1->2; 4->3; 4->5; + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ); -- mvd 5->4; + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn),floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range current row ); -- mvd 3->6; 3->7; + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and 3 preceding ); -- mvd 1->5; + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn) preceding ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.cn asc); -- mvd 6->5; 6,1,2->7; 6,1,2->8; + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 6->5; + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.pn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.vn asc), +win3 as (order by ow_sale.cn desc), +win4 as (order by ow_sale.cn desc); -- mvd 5->4; 5->6; 2->7; 9->8; 2->10; 9->11; + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.qty) following ); -- mvd 3->4; + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn*ow_sale.prc),floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.cn,ow_sale.qty order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty*ow_sale.prc)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.vn order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and 1 following ), +win2 as (partition by ow_sale.cn,ow_sale.qty order by ow_sale.vn desc), +win3 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.vn order by ow_sale.vn asc); -- mvd 3->2; 3,1,5->4; 3,1,5->6; 8,1->7; 8,1->9; 3->10; + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 1->2; + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn),floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.prc)) OVER(order by ow_sale.pn desc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.vn asc); -- mvd 1->4; 1->5; 2,7->6; + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 1 preceding and 0 preceding ); -- mvd 8->7; + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn),floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 4 preceding and 1 preceding ), +win2 as (partition by ow_sale.pn order by ow_sale.vn desc); -- mvd 4->3; 4,1->5; + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.dt,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.qty) preceding and current row ); -- mvd 5->7; + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.cn) preceding and current row ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc), +win3 as (order by ow_sale.pn desc), +win4 as (order by ow_sale.cn desc); -- mvd 4->5; 7,4,8,2,9->6; 7,4,8,2,9->10; 9->11; 4->12; 9->13; + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn),floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 0 preceding and floor(ow_sale.cn+ow_sale.pn) following ); -- mvd 5->4; + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc*ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.qty order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.vn*ow_sale.qty) preceding and 3 following ), +win2 as (partition by ow_sale.dt,ow_sale.qty order by ow_sale.pn desc), +win3 as (order by ow_sale.pn desc); -- mvd 4->3; 4->5; 7,8,1->6; 1->9; 7,8,1->10; + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.qty) preceding and unbounded following ); -- mvd 3->4; + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty+ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.cn order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 3 preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.vn asc), +win3 as (order by ow_sale.vn desc), +win4 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc); -- mvd 1->7; 1,3->8; 3->9; 1,3->10; 12,1,13->11; 1->14; + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc),floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and current row ); -- mvd 6->5; + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn+ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and current row ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.vn desc), +win3 as (order by ow_sale.vn asc); -- mvd 4->3; 1,6,4->5; 4->7; + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn/ow_sale.cn),floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and floor(ow_sale.qty) following ); -- mvd 7->6; + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and floor(ow_sale.cn+ow_sale.cn) following ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.pn desc); -- mvd 3->2; 5,6->4; 5,6->7; + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn),floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and unbounded following ); -- mvd 6->5; + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty-ow_sale.vn),floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and unbounded following ); -- mvd 4->3; 4->5; + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn*ow_sale.cn),floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.vn) following and floor(ow_sale.qty) following ); -- mvd 8->7; + +-- REGR_AVGX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn/ow_sale.cn),floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.vn/ow_sale.qty) following and unbounded following ); -- mvd 1->5; + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.pn*ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 2 following and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 6->5; 2,3,4,1->7; 6->8; 6->9; 1->10; 1->11; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc rows unbounded preceding ); -- mvd 2->5; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn/ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.cn desc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.cn) as int),cast (floor(ow_sale.prc-ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.cn desc rows unbounded preceding ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,4->2; 3,4->5; 3,1,7->6; 3,4->8; 3,1,7->9; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.vn desc rows floor(ow_sale.cn) preceding ); -- mvd 5,6,3->4; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn),floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.vn+ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows 3 preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.pn desc), +win4 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.pn order by ow_sale.cn desc); -- mvd 3->2; 3->4; 1->5; 7,8,1->6; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn*ow_sale.pn),floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows current row ); -- mvd 4,1->3; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows current row ), +win2 as (order by ow_sale.cn desc); -- mvd 3,4->2; 3->5; 3->6; 3->7; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn/ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc,ow_sale.pn asc rows between unbounded preceding and 0 preceding ), +win2 as (partition by ow_sale.cn order by ow_sale.cn asc); -- mvd 3,1->2; 3->4; 3->5; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc-ow_sale.prc),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 2->3; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn+ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.prc order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 6->5; 8,3->7; 2->9; 2->10; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn*ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc,ow_sale.vn asc rows between unbounded preceding and 7 following ); -- mvd 2,5->4; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.prc*ow_sale.prc) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.prc*ow_sale.prc) following ), +win2 as (partition by ow_sale.cn,ow_sale.prc order by ow_sale.pn desc); -- mvd 6->5; 6->7; 3,6,4->8; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.cn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows between unbounded preceding and unbounded following ); -- mvd 4,1->3; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn desc rows between floor(ow_sale.qty/ow_sale.pn) preceding and floor(ow_sale.pn) preceding ); -- mvd 1,3->2; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn-ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.vn) as int),cast (floor(ow_sale.vn*ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.prc) preceding and floor(ow_sale.qty*ow_sale.cn) preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.vn desc); -- mvd 4->3; 1->5; 1->6; 2,8->7; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn desc rows between 2 preceding and current row ), +win2 as (order by ow_sale.cn desc); -- mvd 3,5->4; 3->6; 3,5->7; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows between floor(ow_sale.cn*ow_sale.cn) preceding and 6 following ); -- mvd 1,6->7; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc-ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn/ow_sale.cn) as int),cast (floor(ow_sale.cn/ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.pn desc rows between 1 preceding and floor(ow_sale.pn*ow_sale.pn) following ), +win2 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,5,1->3; 4,7,1->6; 4,5,2->8; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.prc) preceding and unbounded following ); -- mvd 3->2; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn-ow_sale.vn),floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.vn asc rows between floor(ow_sale.vn) preceding and unbounded following ), +win2 as (partition by ow_sale.vn order by ow_sale.pn asc), +win3 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.pn desc); -- mvd 4,1->3; 4,1->5; 4,1->6; 4,1->7; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn),floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and current row ); -- mvd 4->5; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc-ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc+ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn desc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.pn desc rows between current row and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between current row and current row ), +win2 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 3->2; 5,1->4; 3->6; 3->7; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between current row and floor(ow_sale.pn-ow_sale.cn) following ); -- mvd 4->3; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and floor(ow_sale.prc+ow_sale.vn) following ), +win2 as (order by ow_sale.vn asc); -- mvd 7->6; 2->8; 2->9; 2->10; 7->11; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc),floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc rows between current row and unbounded following ); -- mvd 3,4->2; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn*ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows between current row and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.pn asc), +win3 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.cn asc), +win4 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc), +win5 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 5->4; 7,5->6; 2,1,3->8; 7,2,1,5->9; 7,5->10; 2->11; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc-ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn desc rows between floor(ow_sale.vn) following and floor(ow_sale.cn) following ); -- mvd 3,4->2; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.cn desc rows between 3 following and 1 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 3 following and 1 following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.cn asc); -- mvd 5->6; 5->7; 5->8; 5->9; 5->10; 5->11; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc rows between floor(ow_sale.cn/ow_sale.pn) following and unbounded following ); -- mvd 6,4->5; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc+ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc*ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn asc rows between 1 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.cn)) OVER(partition by ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between 1 following and unbounded following ), +win2 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc); -- mvd 2->7; 9,1,4->8; 9,1,4->10; 2->11; 9,1,4->12; 9,1,4->13; + +-- REGR_AVGX() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn/ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.cn order by ow_sale.cn asc,ow_sale.cn asc,ow_sale.cn asc); -- mvd 4,5,6,1->3; + +-- REGR_AVGX() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn+ow_sale.qty),floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty,ow_sale.vn +, +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.pn order by ow_sale.cn asc,ow_sale.cn desc,ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.pn order by ow_sale.cn asc,ow_sale.cn desc,ow_sale.vn desc); -- mvd 6,4,7,8,2->5; 6,4,7,8,2->9; + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.cn order by ow_sale.vn desc range unbounded preceding ); -- mvd 7,4,8,1->6; + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty order by ow_sale.cn asc range unbounded preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 3,4->2; 6->5; + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty-ow_sale.vn),floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.cn asc range floor(ow_sale.cn*ow_sale.qty) preceding ); -- mvd 4,5->3; + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc),floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.qty)) OVER(partition by ow_sale.pn order by ow_sale.cn asc range floor(ow_sale.qty+ow_sale.vn) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn asc range floor(ow_sale.qty+ow_sale.vn) preceding ); -- mvd 1,5->4; 1,5->6; + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.cn asc range current row ); -- mvd 3,4->2; + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn-ow_sale.pn),floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.pn desc range between unbounded preceding and floor(ow_sale.cn*ow_sale.cn) preceding ); -- mvd 4,1->5; + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc+ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.vn order by ow_sale.cn asc range between unbounded preceding and 1 preceding ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc), +win3 as (order by ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.vn desc), +win5 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.dt order by ow_sale.pn asc); -- mvd 7,4,1,5,3->6; 7,4,5,3->8; 7,4,5,3->9; 7->10; 5->11; 4,1,3->12; + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.pn desc range between unbounded preceding and current row ); -- mvd 1->5; + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn-ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.cn) following ); -- mvd 1,8->7; + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty+ow_sale.prc),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.cn desc range between unbounded preceding and unbounded following ); -- mvd 6,7,3->5; + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn+ow_sale.qty),floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn/ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.cn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,4,5->2; 7,3,8,5->6; 7,3,8,5->9; 3,4,5->10; + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc),floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.vn order by ow_sale.pn asc range between floor(ow_sale.vn) preceding and floor(ow_sale.qty*ow_sale.qty) preceding ); -- mvd 1,5,3,6->4; + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.cn order by ow_sale.vn desc range between 1 preceding and floor(ow_sale.vn+ow_sale.cn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.cn order by ow_sale.vn desc range between 1 preceding and floor(ow_sale.vn+ow_sale.cn) preceding ); -- mvd 1,8,9,4->7; 1,8,9,4->10; 1,8,9,4->11; + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn+ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn order by ow_sale.cn desc range between floor(ow_sale.vn) preceding and current row ); -- mvd 4,6->5; + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc),floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc order by ow_sale.cn desc range between floor(ow_sale.cn+ow_sale.vn) preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (order by ow_sale.cn desc); -- mvd 5,6,7->4; 1->8; 1->9; 6->10; 1->11; + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.vn desc range between 0 preceding and 3 following ); -- mvd 3,4,1,5,6->2; + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc order by ow_sale.vn desc range between 1 preceding and 3 following ), +win2 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc); -- mvd 4,1,5->3; 7,5,8->6; + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn-ow_sale.prc),floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc range between 4 preceding and unbounded following ); -- mvd 2,3,1,8->7; + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc+ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn-ow_sale.qty)) OVER(partition by ow_sale.qty,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.pn asc range between floor(ow_sale.prc) preceding and unbounded following ), +win2 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.pn asc); -- mvd 4,2->3; 6,7,8->5; 6,7,8->9; 2->10; 6,7,8->11; + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc),floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.pn desc range between current row and current row ); -- mvd 8,6,1,3->7; + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.qty,ow_sale.dt,ow_sale.qty,ow_sale.cn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn asc range between current row and current row ), +win2 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.qty,ow_sale.cn order by ow_sale.cn asc), +win3 as (order by ow_sale.pn asc), +win4 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.cn order by ow_sale.cn desc); -- mvd 5,6->4; 2,5,8->7; 1->9; 2,5,8->10; 2,6,1->11; 2,5,8->12; + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.pn desc range between current row and floor(ow_sale.prc) following ); -- mvd 4,5,6,7->3; + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.cn asc range between current row and floor(ow_sale.cn) following ), +win2 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc); -- mvd 4,5,2->3; 4,2,7->6; 4,5,2->8; + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn*ow_sale.prc),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.cn desc range between current row and unbounded following ); -- mvd 5,6,1->4; + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn),floor(ow_sale.qty*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.vn desc range between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.vn desc range between current row and unbounded following ); -- mvd 5,7,8->6; 5,7,8->9; + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc),floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn desc range between 0 following and floor(ow_sale.qty+ow_sale.cn) following ); -- mvd 1->2; + +-- REGR_AVGX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn+ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn asc range between floor(ow_sale.cn*ow_sale.qty) following and unbounded following ); -- mvd 1->4; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc*ow_sale.cn),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows unbounded preceding ); -- mvd 3,4,1,5,6->2; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc-ow_sale.prc),floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows unbounded preceding ), +win2 as (order by ow_sale.vn desc); -- mvd 3,4,1,5->2; 7->6; 7->8; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc),floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows 8 preceding ); -- mvd 5,1,2,6->4; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn/ow_sale.vn),floor(ow_sale.cn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.qty) as int),cast (floor(ow_sale.vn/ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.cn asc rows 4 preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc); -- mvd 6,3->5; 6,3->7; 3->8; 4,3->9; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty),floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc rows current row ); -- mvd 4,2,5,1->3; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn-ow_sale.prc),floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc,ow_sale.cn asc rows current row ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.pn desc), +win3 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 5,1,2,6,7->4; 1,2,7->8; 1,2,7->9; 1,2,7->10; 1,2,7->11; 1,13,6->12; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and 9 preceding ); -- mvd 5,6,2->4; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and current row ); -- mvd 1,6,7->5; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty-ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.prc order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc), +win4 as (order by ow_sale.ord, ow_sale.pn desc), +win5 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 5,3->4; 5,1,3,7,8,9->6; 3->10; 5,1,3,7,8,9->11; 9->12; 3,1,7->13; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc+ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.prc+ow_sale.prc) following ); -- mvd 1,3,4,5->2; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(partition by ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.cn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.cn) following ); -- mvd 2,8->7; 2,8->9; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc*ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.vn asc rows between unbounded preceding and unbounded following ); -- mvd 3,6->5; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc*ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc), +win3 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.prc order by ow_sale.cn desc), +win4 as (partition by ow_sale.cn order by ow_sale.vn asc); -- mvd 5,2,6,1->4; 5,2,6,1->7; 2,1->8; 5,2,10,1,11->9; 2,1->12; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.pn asc rows between floor(ow_sale.prc) preceding and floor(ow_sale.qty) preceding ); -- mvd 5,6,3,1,7->4; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn*ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between 6 preceding and current row ); -- mvd 5,6,7,2->4; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn-ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.cn asc rows between floor(ow_sale.qty+ow_sale.vn) preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 4,1->3; 1->5; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn/ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.cn desc rows between 4 preceding and floor(ow_sale.vn/ow_sale.pn) following ); -- mvd 2,6,1->5; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn*ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc,ow_sale.cn desc rows between 1 preceding and 3 following ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,4,1->2; 4->5; 7,3,1->6; 3,4,1->8; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn-ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows between 7 preceding and unbounded following ); -- mvd 6,7,1,2->5; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn-ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between floor(ow_sale.cn) preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between floor(ow_sale.cn) preceding and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc); -- mvd 5,3,1->4; 7,3,1->6; 5,3,1->8; 5,3,1->9; 5,3,1->10; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn),floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.vn desc rows between current row and current row ); -- mvd 1,5,2->4; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn+ow_sale.prc)) OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn asc rows between current row and current row ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.cn order by ow_sale.cn desc), +win4 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 2,4,1->3; 6->5; 6->7; 6->8; 2->9; 1->10; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows between current row and floor(ow_sale.vn) following ); -- mvd 2,6->5; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn+ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc rows between current row and floor(ow_sale.pn*ow_sale.prc) following ), +win2 as (order by ow_sale.cn asc); -- mvd 2,1,6->5; 2->7; 2->8; 2->9; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.vn*ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.vn desc rows between current row and unbounded following ); -- mvd 8,4,1,6,3->7; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.cn*ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn desc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn desc rows between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 5,6,3,1,2->4; 5,6,3,1,2->7; 5,6,3,1,2->8; 5,6,3,1,2->9; 5,6,3,1,2->10; 2->11; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.qty-ow_sale.cn),floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.vn asc rows between 0 following and floor(ow_sale.prc) following ); -- mvd 4,1,8,5->7; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(ow_sale.prc*ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc rows between 4 following and unbounded following ); -- mvd 3,4,5,1->2; + +-- REGR_AVGY() function with NULL OVER() clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (); -- mvd 4->4; + +-- REGR_AVGY() function with NULL OVER() clause in combination with other window functions -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn*ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.cn order by ow_sale.cn desc); -- mvd 6->6; 8,9,1->7; + +-- REGR_AVGY() function with OVER() clause having ONLY PARTITION BY -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn),floor(ow_sale.pn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.dt); -- mvd 3,1,8,4->7; + +-- REGR_AVGY() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn*ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.cn), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 3,4,5->2; 7,4,5,8,1->6; 7,4,5,8,1->9; 7,4,5,8,1->10; 5->11; 5->12; + +-- REGR_AVGY() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc,ow_sale.cn asc,ow_sale.vn desc); -- mvd 4,5,6->3; + +-- REGR_AVGY() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn/ow_sale.qty)) OVER(order by ow_sale.cn asc,ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc,ow_sale.pn asc); -- mvd 6,4->5; 6,4->7; + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.pn/ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range floor(ow_sale.vn+ow_sale.pn) preceding ); -- mvd 2->3; + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn/ow_sale.cn),floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range current row ); -- mvd 1->3; + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty/ow_sale.qty),floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn*ow_sale.prc)) OVER(order by ow_sale.vn desc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn*ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range current row ), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc), +win3 as (order by ow_sale.pn asc); -- mvd 2->7; 2->8; 10,11->9; 11->12; 11->13; 11->14; + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty+ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and 3 preceding ); -- mvd 1->6; + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and current row ); -- mvd 6->5; + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.pn) as int),cast (floor(ow_sale.pn/ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.cn)) OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (order by ow_sale.cn desc); -- mvd 5->4; 1->6; 5->7; 5->8; + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and unbounded following ); -- mvd 1->6; + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn+ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.prc order by ow_sale.vn asc); -- mvd 4->5; 7,4,8,1->6; + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn),floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 2 preceding and 1 preceding ); -- mvd 4->5; + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.qty)) OVER(order by ow_sale.pn desc range between floor(ow_sale.qty*ow_sale.vn) preceding and 0 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between floor(ow_sale.qty*ow_sale.vn) preceding and 0 preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.pn desc), +win4 as (order by ow_sale.vn desc); -- mvd 8->7; 3->9; 8->10; 3->11; 8->12; + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.pn/ow_sale.cn) preceding and current row ); -- mvd 2->4; + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn*ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.dt,ow_sale.cn order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.prc) preceding and current row ), +win2 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.cn asc); -- mvd 3->2; 5,6->4; 5,6->7; + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn+ow_sale.pn),floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 4 preceding and 2 following ); -- mvd 2->4; + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn/ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between floor(ow_sale.pn) preceding and floor(ow_sale.pn) following ), +win2 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.vn desc); -- mvd 3->2; 5,3->4; 5,3->6; 5,3->7; + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty/ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 0 preceding and unbounded following ); -- mvd 2->3; + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn/ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 4 preceding and unbounded following ); -- mvd 5->6; 5->7; + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and current row ); -- mvd 2->3; + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc-ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.pn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and current row ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.cn desc); -- mvd 5->4; 5->6; 5->7; + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn*ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and floor(ow_sale.prc/ow_sale.vn) following ); -- mvd 3->2; + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc-ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and floor(ow_sale.qty+ow_sale.pn) following ), +win2 as (order by ow_sale.vn desc); -- mvd 5->4; 5->6; 5->7; 5->8; 5->9; 5->10; + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc-ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and unbounded following ); -- mvd 3->2; + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.vn) as int),cast (floor(ow_sale.pn+ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 8->7; 1->9; 1->10; 1->11; + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 0 following and 1 following ); -- mvd 1->6; + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn-ow_sale.vn),floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.qty)) OVER(order by ow_sale.cn asc range between 4 following and 4 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 4 following and 4 following ); -- mvd 1->2; 1->3; 1->4; + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn*ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 2 following and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.prc,ow_sale.cn,ow_sale.cn order by ow_sale.pn desc), +win3 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.pn asc); -- mvd 1->2; 4,1,5->3; 7,5->6; 7,5->8; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.vn desc rows unbounded preceding ); -- mvd 4,5,1->3; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty-ow_sale.vn),floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc/ow_sale.qty) as int),cast (floor(ow_sale.cn/ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows unbounded preceding ), +win2 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 4,2->3; 2->5; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows floor(ow_sale.pn-ow_sale.vn) preceding ); -- mvd 6->5; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn*ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn*ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc rows floor(ow_sale.qty) preceding ), +win2 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 7->6; 9->8; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.cn asc rows current row ); -- mvd 6,1->5; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn+ow_sale.cn),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.dt order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows current row ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.dt order by ow_sale.pn desc), +win4 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.prc order by ow_sale.cn desc); -- mvd 3->5; 7->6; 3->8; 1,10,7,11->9; 1,10,7,11->12; 1,7,3->13; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.prc*ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.pn desc rows between unbounded preceding and floor(ow_sale.prc) preceding ); -- mvd 1->7; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn*ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.qty) preceding ), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.prc,ow_sale.dt,ow_sale.pn,ow_sale.vn order by ow_sale.cn asc), +win3 as (order by ow_sale.pn desc); -- mvd 4->3; 6,4,7,8,1->5; 1->9; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 1,2->3; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn),floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.dt order by ow_sale.cn asc), +win4 as (order by ow_sale.cn desc); -- mvd 3->2; 5->4; 7,5,8,3->6; 7,5,8,3->9; 5->10; 5->11; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and 1 following ); -- mvd 5->4; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn),floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 3->2; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty-ow_sale.cn),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.prc,ow_sale.dt,ow_sale.prc order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.pn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.prc order by ow_sale.vn desc); -- mvd 3,4->2; 3,4->5; 7,8,9->6; 7,8,9->10; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn-ow_sale.qty),floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between 7 preceding and 9 preceding ); -- mvd 6->7; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between 1 preceding and current row ); -- mvd 7,2->6; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn+ow_sale.qty),floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn*ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.pn/ow_sale.pn) preceding and 2 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc*ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.pn/ow_sale.pn) preceding and 2 following ), +win2 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.dt order by ow_sale.cn desc); -- mvd 1->2; 4,5,1->3; 1->6; 4,5,1->7; 4,5,1->8; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn-ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.qty) preceding and unbounded following ); -- mvd 1->6; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn/ow_sale.qty),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and current row ); -- mvd 1->4; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn),floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn-ow_sale.pn) as int),cast (floor(ow_sale.vn*ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc rows between current row and current row ), +win2 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 3,4->2; 6,7,4->5; 4->8; 4->9; 4->10; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn+ow_sale.pn),floor(ow_sale.prc*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between current row and floor(ow_sale.prc) following ); -- mvd 7,8->6; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and 3 following ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.dt order by ow_sale.pn asc); -- mvd 1->2; 4,1->3; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.prc*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc,ow_sale.vn asc rows between current row and unbounded following ); -- mvd 1,4->3; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn/ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc*ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between current row and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.prc order by ow_sale.cn desc); -- mvd 1->6; 1->7; 9,3,1->8; 9,3,1->10; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between floor(ow_sale.qty) following and floor(ow_sale.cn) following ); -- mvd 3,4->2; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.cn asc rows between 4 following and floor(ow_sale.cn) following ), +win2 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc); -- mvd 3,5->4; 1,7,8,5->6; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc*ow_sale.cn),floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.vn asc rows between floor(ow_sale.prc) following and unbounded following ); -- mvd 1,3->2; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc-ow_sale.prc),floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.pn asc rows between 2 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between 2 following and unbounded following ), +win2 as (order by ow_sale.pn desc); -- mvd 2->3; 2->4; 2->5; + +-- REGR_AVGY() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn*ow_sale.prc),floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.cn asc); -- mvd 3,4->2; + +-- REGR_AVGY() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty+ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.vn,ow_sale.dt order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.dt order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.dt order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.vn asc); -- mvd 2,1->3; 2,1->4; 2,1->5; 2,1->6; 2,1->7; 2,1->8; + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.dt order by ow_sale.pn desc range unbounded preceding ); -- mvd 3,4,5,6->2; + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc-ow_sale.qty),floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.vn asc range unbounded preceding ), +win2 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 5,6,1,7->4; 1->8; 1->9; + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.pn/ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn asc range floor(ow_sale.qty/ow_sale.cn) preceding ); -- mvd 2,1->5; + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.vn asc range 2 preceding ), +win2 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 5,1,3,6->4; 3->7; + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn*ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty order by ow_sale.pn asc range current row ); -- mvd 3,6,7->5; + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.cn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.vn asc range current row ), +win2 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.vn order by ow_sale.cn desc); -- mvd 3,4,5,6,7->2; 1,3,5->8; + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.prc order by ow_sale.pn desc range between unbounded preceding and 1 preceding ); -- mvd 5,6,2,1->4; + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn+ow_sale.pn),floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.prc order by ow_sale.cn desc range between unbounded preceding and 2 preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 4,2,1->3; 2->5; 2->6; 2->7; + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.vn desc range between unbounded preceding and current row ); -- mvd 1,4->5; + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn desc range between unbounded preceding and current row ), +win2 as (order by ow_sale.pn desc); -- mvd 1,6->5; 1,6->7; 2->8; 2->9; + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.vn order by ow_sale.cn desc range between unbounded preceding and 4 following ); -- mvd 6,7,4,3,1->5; + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.pn asc range between unbounded preceding and 1 following ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.vn asc); -- mvd 4,5,1,6->3; 6->7; 6->8; 10->9; + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn*ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.cn desc range between unbounded preceding and unbounded following ); -- mvd 4,6->5; + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc/ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.qty order by ow_sale.vn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.cn asc), +win3 as (order by ow_sale.vn desc); -- mvd 3,4,1,5->2; 7,3,4,5->6; 7,3,4,5->8; 4->9; + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc*ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc+ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.vn asc range between floor(ow_sale.qty/ow_sale.cn) preceding and floor(ow_sale.qty/ow_sale.cn) preceding ), +win2 as (partition by ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc), +win4 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc), +win5 as (order by ow_sale.cn asc); -- mvd 3,4->2; 6,7->5; 6,3,7->8; 6,3,10,4->9; 3->11; + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.prc order by ow_sale.cn desc range between floor(ow_sale.vn) preceding and current row ); -- mvd 2,4,5,6->3; + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.prc,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty-ow_sale.cn),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc+ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.vn desc range between floor(ow_sale.prc+ow_sale.prc) preceding and current row ), +win2 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.vn order by ow_sale.pn asc); -- mvd 1,7->6; 1,7->8; 2,10,1,4->9; 2,10,1,4->11; 1,4->12; + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.pn desc range between 2 preceding and 3 following ); -- mvd 3,4->2; + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn/ow_sale.qty)) OVER(partition by ow_sale.prc,ow_sale.vn,ow_sale.dt order by ow_sale.vn desc range between floor(ow_sale.vn/ow_sale.cn) preceding and floor(ow_sale.prc) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.dt order by ow_sale.vn desc range between floor(ow_sale.vn/ow_sale.cn) preceding and floor(ow_sale.prc) following ), +win2 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.pn desc), +win3 as (order by ow_sale.vn asc); -- mvd 5,3,6->4; 5,1,8->7; 6->9; 5,3,6->10; + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.cn desc range between 0 preceding and unbounded following ); -- mvd 4,2,5->3; + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.pn order by ow_sale.vn asc range between floor(ow_sale.pn+ow_sale.qty) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.vn asc range between floor(ow_sale.pn+ow_sale.qty) preceding and unbounded following ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.cn asc); -- mvd 1,2->6; 1,2->7; 1->8; 10->9; 1,2->11; 1,2->12; + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.pn desc range between current row and current row ); -- mvd 2,1->4; + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(partition by ow_sale.vn order by ow_sale.pn asc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.pn asc range between current row and current row ), +win2 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.cn order by ow_sale.pn asc); -- mvd 3,1->4; 3,1->5; 3,1->6; 8,9,2,1->7; + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.pn desc range between current row and floor(ow_sale.vn-ow_sale.vn) following ); -- mvd 4,1,5,6->3; + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.vn,ow_sale.dt,ow_sale.qty,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn+ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.pn asc range between current row and 2 following ), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.qty,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.pn asc), +win4 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 6,4,1->5; 6,3,8,1->7; 4,1->9; 6,3,8,1->10; 4->11; + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.pn asc range between current row and unbounded following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.qty order by ow_sale.cn asc), +win4 as (order by ow_sale.vn desc); -- mvd 2,1->4; 6->5; 8,6,3,2->7; 2->9; 2->10; + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.cn asc range between 4 following and floor(ow_sale.cn) following ), +win2 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.pn desc); -- mvd 7,8,1->6; 8,2,1->9; + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn+ow_sale.prc),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.vn desc range between 1 following and unbounded following ); -- mvd 1,4->3; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows unbounded preceding ); -- mvd 2,1->5; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.prc,ow_sale.qty,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn*ow_sale.pn) as int),cast (floor(ow_sale.cn/ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn*ow_sale.qty)) OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn desc rows unbounded preceding ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 5,7,8->6; 5,4,7,3->9; 7->10; 5,4,7,3->11; 5,4,7,3->12; 5,4,7,3->13; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows floor(ow_sale.pn+ow_sale.qty) preceding ); -- mvd 1,8->7; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows current row ); -- mvd 4,5,2->3; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows current row ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.cn asc), +win4 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.prc order by ow_sale.cn asc); -- mvd 5,6,7,1,2->4; 2->8; 6->9; 6->10; 5,6,7,12->11; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn+ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and floor(ow_sale.qty*ow_sale.cn) preceding ); -- mvd 5,6,7->4; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and current row ); -- mvd 2,6->5; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn*ow_sale.prc) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.vn desc); -- mvd 4,2,6->5; 8,9,1,6->7; 4,2,6->10; 2->11; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn asc rows between unbounded preceding and 2 following ); -- mvd 5,6,7,1->4; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn-ow_sale.vn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.pn asc rows between unbounded preceding and 0 following ), +win2 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,7,1->6; 7,9,10,1->8; 7,9,10,1->11; 7,3->12; 7,3->13; 7,3->14; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.cn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.qty order by ow_sale.cn asc); -- mvd 5,1,6,7->4; 1,6->8; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn*ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.cn asc rows between floor(ow_sale.prc*ow_sale.pn) preceding and 0 preceding ); -- mvd 6,2,1->5; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty),floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows between 4 preceding and floor(ow_sale.qty/ow_sale.qty) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows between 4 preceding and floor(ow_sale.qty/ow_sale.qty) preceding ), +win2 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc); -- mvd 3,4,1->2; 3,4,1->5; 3,4,1->6; 3,4,1->7; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc/ow_sale.pn),floor(ow_sale.prc/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.vn desc rows between 9 preceding and current row ); -- mvd 6,2,7,1->5; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn asc rows between 4 preceding and current row ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,6,1,3,2->5; 4,6,1,3,2->7; 6,1,3->8; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn+ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.cn desc rows between floor(ow_sale.vn+ow_sale.cn) preceding and floor(ow_sale.prc) following ); -- mvd 3,1,7->6; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc),floor(ow_sale.pn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc rows between 1 preceding and 4 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc rows between 1 preceding and 4 following ), +win2 as (partition by ow_sale.dt order by ow_sale.vn desc); -- mvd 3,4,1->2; 3,4,1->5; 7,1->6; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between floor(ow_sale.qty/ow_sale.qty) preceding and unbounded following ); -- mvd 7,2,3,5->6; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc,ow_sale.cn asc rows between current row and current row ); -- mvd 3,4,5,6->2; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty+ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn/ow_sale.pn) as int),cast (floor(ow_sale.prc/ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc rows between current row and current row ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc), +win3 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.pn asc), +win4 as (order by ow_sale.vn asc); -- mvd 5,6,3,7->4; 5,6,1->8; 5,1,7->9; 1->10; 5,6,1->11; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn+ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc,ow_sale.pn asc rows between current row and 4 following ), +win2 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.cn order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,1,4->2; 3,6,7,4->5; 4->8; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.prc/ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows between current row and unbounded following ); -- mvd 3,2,1->6; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn+ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win5),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win6),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.cn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.cn asc), +win4 as (order by ow_sale.cn asc), +win5 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.qty order by ow_sale.vn asc), +win6 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.vn asc); -- mvd 4,5,1,2->3; 1->6; 8,4,2->7; 4->9; 8,1,11,2->10; 8,5,4,1->12; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.cn desc rows between floor(ow_sale.qty) following and floor(ow_sale.cn+ow_sale.pn) following ); -- mvd 7,8,2->6; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.vn),floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows between 3 following and 3 following ), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 1,3,5->4; 5->6; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.qty*ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.vn) following and unbounded following ); -- mvd 1,8->7; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(ow_sale.cn*ow_sale.vn),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty-ow_sale.cn) as int),cast (floor(ow_sale.qty/ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc,ow_sale.cn desc rows between floor(ow_sale.vn) following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 3,5->4; 1->6; + +-- REGR_COUNT() function with NULL OVER() clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn-ow_sale.cn),floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (); -- mvd 2->2; + +-- REGR_COUNT() function with NULL OVER() clause in combination with other window functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn+ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (), +win2 as (order by ow_sale.cn desc); -- mvd 6->6; 2->7; + +-- REGR_COUNT() function with OVER() clause having ONLY PARTITION BY -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty),floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty); -- mvd 3->2; + +-- REGR_COUNT() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc,ow_sale.pn desc,ow_sale.vn desc); -- mvd 6,2,3->5; + +-- REGR_COUNT() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty+ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +, +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc); -- mvd 3->2; 3->4; 3->5; + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn+ow_sale.pn),floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ); -- mvd 6->5; + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ), +win2 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 4->3; 4->5; 4->6; 4,8->7; 4,8->9; 11->10; + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range 2 preceding ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.cn desc), +win3 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.cn asc), +win4 as (order by ow_sale.cn desc); -- mvd 5->4; 1,5,7->6; 1,7->8; 1->9; 1,7->10; + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty),floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range current row ); -- mvd 7->6; + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty),floor(ow_sale.vn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and floor(ow_sale.prc) preceding ); -- mvd 4->3; + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and 4 preceding ), +win2 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.pn desc); -- mvd 1->4; 6,7->5; 6,7->8; + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn/ow_sale.qty),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc+ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(order by ow_sale.cn desc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (order by ow_sale.vn asc); -- mvd 3->2; 5->4; 3->6; 8->7; + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn*ow_sale.pn)) OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.prc) following ), +win2 as (order by ow_sale.vn desc); -- mvd 6->5; 8->7; 8->9; 8->10; 8->11; 8->12; + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn-ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 1->4; + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.pn desc), +win4 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 4->3; 4->5; 4->6; 8->7; 1->9; + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 4 preceding and floor(ow_sale.vn) preceding ); -- mvd 2->3; + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn-ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 4 preceding and 2 preceding ), +win2 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.vn order by ow_sale.vn desc), +win3 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.vn asc); -- mvd 3->2; 5,3->4; 3->6; 5,3,8->7; + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty+ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 0 preceding and current row ); -- mvd 2->3; + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.dt,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty+ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn*ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.cn) preceding and current row ), +win2 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc); -- mvd 6->5; 6->7; + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn+ow_sale.cn),floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 1 preceding and floor(ow_sale.cn+ow_sale.qty) following ); -- mvd 1->2; + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between floor(ow_sale.cn) preceding and 1 following ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.pn order by ow_sale.vn desc), +win4 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.vn desc); -- mvd 2->3; 2->4; 6,2->5; 8,6->7; 2->9; + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty+ow_sale.qty),floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 4 preceding and unbounded following ); -- mvd 4->3; + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc-ow_sale.pn),floor(ow_sale.prc+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.qty)) OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 4 preceding and unbounded following ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.vn desc); -- mvd 3->4; 3->5; 2->6; 2->7; 2->8; 2->9; + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and current row ); -- mvd 2->3; + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn+ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and current row ), +win2 as (partition by ow_sale.dt order by ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc), +win4 as (partition by ow_sale.dt,ow_sale.qty order by ow_sale.vn desc); -- mvd 6->5; 8,9->7; 2,8,6,9->10; 8,6,1->11; + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn-ow_sale.cn),floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and 4 following ); -- mvd 1->4; + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn/ow_sale.pn)) OVER(order by ow_sale.cn desc range between current row and 4 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty/ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and 4 following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.prc order by ow_sale.vn desc), +win4 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc), +win5 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.vn asc); -- mvd 4->3; 4->5; 4->6; 8,1,9->7; 8,11,4,1,9->10; 4,1->12; + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and unbounded following ); -- mvd 4->3; + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and unbounded following ); -- mvd 3->2; 3->4; + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 1 following and 4 following ); -- mvd 4->7; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.pn asc rows unbounded preceding ); -- mvd 1,3->7; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.pn desc rows unbounded preceding ), +win2 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.qty order by ow_sale.cn asc), +win3 as (order by ow_sale.vn asc), +win4 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc), +win5 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.cn asc); -- mvd 3->2; 5,1,6,7,3->4; 5,1,6,7,3->8; 10->9; 1,10,3->11; 1,6->12; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn*ow_sale.cn),floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows 7 preceding ); -- mvd 3->2; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.pn)) OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows 0 preceding ), +win2 as (order by ow_sale.pn desc); -- mvd 1->7; 1->8; 1->9; 1->10; 1->11; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty+ow_sale.pn),floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows current row ); -- mvd 5,6->4; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.vn)) OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.cn desc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.cn desc rows current row ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 6,3->5; 6->7; 6->8; 6,3->9; 6->10; 6->11; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between unbounded preceding and 8 preceding ); -- mvd 5->4; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and 0 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and 0 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and 0 preceding ), +win2 as (order by ow_sale.vn asc), +win3 as (order by ow_sale.vn desc); -- mvd 4,5,6->3; 4,5,6->7; 5->8; 4,5,6->9; 5->10; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn+ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.vn asc rows between unbounded preceding and current row ); -- mvd 4,5->3; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty*ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc,ow_sale.vn asc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.vn desc); -- mvd 8,9->7; 8,9->10; 8,9->11; 9->12; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty*ow_sale.vn),floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and floor(ow_sale.qty/ow_sale.qty) following ); -- mvd 2->5; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty),floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.vn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc,ow_sale.cn asc rows between unbounded preceding and 1 following ), +win2 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.pn asc); -- mvd 3,4->2; 3,4->5; 3,4->6; 4,1->7; 3,4->8; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn*ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc,ow_sale.vn asc rows between unbounded preceding and unbounded following ); -- mvd 1->2; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.cn order by ow_sale.cn desc), +win4 as (order by ow_sale.cn asc); -- mvd 3->2; 5,1,6,7,3->4; 5,6,3->8; 6->9; 3->10; 5,1,6,7,3->11; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between 8 preceding and floor(ow_sale.prc/ow_sale.cn) preceding ); -- mvd 5->4; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty-ow_sale.qty),floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc/ow_sale.cn)) OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between 4 preceding and floor(ow_sale.vn) preceding ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.pn asc); -- mvd 1->7; 2->8; 2->9; 11->10; 2->12; 1->13; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows between floor(ow_sale.vn) preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 1,4->3; 1,4->5; 1->6; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn/ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between 7 preceding and floor(ow_sale.qty) following ); -- mvd 5->4; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty/ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between 3 preceding and floor(ow_sale.cn) following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.vn desc); -- mvd 1->2; 1->3; 1->4; 1->5; 1->6; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn+ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.vn asc rows between 1 preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.pn asc); -- mvd 7,1,8->6; 7,8->9; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between current row and current row ); -- mvd 8,2->7; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn+ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty*ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows between current row and current row ), +win2 as (order by ow_sale.pn desc); -- mvd 6,3->5; 6,3->7; 3->8; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.vn desc rows between current row and 1 following ), +win2 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.vn asc), +win3 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.pn desc); -- mvd 3,4,5->2; 7,4,5->6; 9,5->8; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc rows between current row and unbounded following ); -- mvd 3,1->5; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn-ow_sale.vn),floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between current row and unbounded following ); -- mvd 3->2; 3->4; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc,ow_sale.pn asc rows between floor(ow_sale.pn*ow_sale.qty) following and 8 following ); -- mvd 6,2->5; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty-ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.vn) as int),cast (floor(ow_sale.pn*ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.cn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.vn desc rows between floor(ow_sale.qty) following and 2 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.vn desc rows between floor(ow_sale.qty) following and 2 following ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.cn order by ow_sale.pn desc), +win3 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 4,5->3; 7,1,8,5->6; 7,2,1,4->9; 4->10; 7,1,8,5->11; 4,5->12; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc rows between floor(ow_sale.pn) following and unbounded following ); -- mvd 3,4->2; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.cn) following and unbounded following ), +win2 as (partition by ow_sale.vn order by ow_sale.pn desc); -- mvd 4->5; 4->6; 8,4->7; + +-- REGR_COUNT() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn*ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.vn desc); -- mvd 1,3,4,5->2; + +-- REGR_COUNT() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn+ow_sale.cn),floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc*ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.cn desc,ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.cn desc,ow_sale.cn asc); -- mvd 4,5,7,3->6; 4,5,7,3->8; + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.pn asc range unbounded preceding ); -- mvd 1,6,3->5; + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn+ow_sale.qty),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.vn desc range unbounded preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.cn order by ow_sale.vn asc); -- mvd 1,6,2->7; 6->8; 10,1,6,2->9; + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.cn order by ow_sale.cn desc range 4 preceding ); -- mvd 2,3->5; + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.vn order by ow_sale.pn desc range 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.pn desc range 1 preceding ); -- mvd 6,2->5; 6,2->7; 6,2->8; 6,2->9; 6,2->10; + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.pn desc range current row ); -- mvd 4,2,5->3; + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.dt order by ow_sale.cn desc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.dt order by ow_sale.cn desc range current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.dt order by ow_sale.cn desc range current row ); -- mvd 3,4,1,5->2; 3,4,1,5->6; 3,4,1,5->7; + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn+ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.cn order by ow_sale.pn asc range between unbounded preceding and 1 preceding ); -- mvd 1,6->7; + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn asc range between unbounded preceding and floor(ow_sale.prc) preceding ), +win2 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.pn asc); -- mvd 3,2->5; 3,2->6; 8,9->7; 8,2,9->10; + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.dt,ow_sale.prc order by ow_sale.vn asc range between unbounded preceding and current row ); -- mvd 1,4,2,5->3; + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.vn) as int),cast (floor(ow_sale.prc+ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.cn desc range between unbounded preceding and current row ), +win2 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,1->7; 3,9,2,5,1->8; 3,9,2,5,1->10; 3,9,2,5,1->11; 3,9,2,5,1->12; + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn/ow_sale.pn),floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.cn+ow_sale.cn) following ); -- mvd 1,2,4,5->3; + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.cn asc range between unbounded preceding and 1 following ), +win2 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.cn desc); -- mvd 2,8,9,10->7; 5,2,1,10->11; + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn/ow_sale.pn),floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn/ow_sale.qty)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.cn desc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.vn asc); -- mvd 1,5->4; 2->6; 2->7; + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc+ow_sale.vn),floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.vn desc range between floor(ow_sale.vn*ow_sale.cn) preceding and floor(ow_sale.prc) preceding ); -- mvd 6,8,3->7; + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn*ow_sale.pn),floor(ow_sale.pn/ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn/ow_sale.prc)) OVER(partition by ow_sale.vn order by ow_sale.pn desc range between 1 preceding and 3 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.pn desc range between 1 preceding and 3 preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 2,4->5; 2,4->6; 1->7; 1->8; 1->9; 2,4->10; + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty),floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.pn asc range between 2 preceding and current row ); -- mvd 3,4,1->2; + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty),floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc*ow_sale.prc) as int),cast (floor(ow_sale.cn*ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.prc,ow_sale.vn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.cn)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn desc range between 0 preceding and current row ), +win2 as (partition by ow_sale.prc,ow_sale.vn order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc), +win4 as (order by ow_sale.vn asc); -- mvd 1,6->5; 3,6,8->7; 6->9; 3,6,8->10; 6->11; 6->12; + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn/ow_sale.cn),floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc order by ow_sale.cn desc range between floor(ow_sale.pn) preceding and 0 following ); -- mvd 4,5,6->3; + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn-ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.pn desc range between floor(ow_sale.pn) preceding and floor(ow_sale.prc) following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn desc), +win4 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,5,6,1,7->4; 5->8; 5->9; 5->10; 3,6,5,1,2,7->11; 5->12; + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty*ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.cn asc range between floor(ow_sale.pn/ow_sale.vn) preceding and unbounded following ); -- mvd 2,7,1,8->6; + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn desc range between 1 preceding and unbounded following ); -- mvd 2,4->3; 2,4->5; + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty-ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.qty order by ow_sale.pn desc range between current row and current row ); -- mvd 8,9,3,1,4,10->7; + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.vn asc range between current row and 3 following ); -- mvd 1,5->4; + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.cn asc range between current row and 4 following ), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.vn desc); -- mvd 3,1,4,5->2; 7,1,5,8->6; + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.prc,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.pn desc range between current row and unbounded following ); -- mvd 8->7; + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn/ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.prc order by ow_sale.cn asc range between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 5,6,7,2->4; 7->8; 7->9; + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty),floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc order by ow_sale.cn desc range between floor(ow_sale.pn-ow_sale.vn) following and 1 following ); -- mvd 5,1->4; + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.prc)) OVER(partition by ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.qty order by ow_sale.cn desc range between 0 following and floor(ow_sale.cn+ow_sale.prc) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.qty order by ow_sale.cn desc range between 0 following and floor(ow_sale.cn+ow_sale.prc) following ), +win2 as (order by ow_sale.vn desc); -- mvd 4,5,1,6,2->3; 4,5,1,6,2->7; 6->8; 6->9; + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.vn desc range between floor(ow_sale.pn) following and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.qty order by ow_sale.cn asc), +win3 as (order by ow_sale.pn asc); -- mvd 4,5,1->3; 4,7->6; 1->8; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows unbounded preceding ); -- mvd 6,7,8->5; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.qty),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc rows 9 preceding ); -- mvd 4,2,5->3; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn*ow_sale.cn),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.cn) as int),cast (floor(ow_sale.cn*ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc rows floor(ow_sale.pn/ow_sale.cn) preceding ), +win2 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.vn order by ow_sale.cn desc), +win3 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 8,1,3,6->7; 2,1,4,6->9; 2,1,4,6->10; 2,1,4,6->11; 2,1,4,6->12; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.prc,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc rows current row ); -- mvd 1,6,7->5; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.pn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn+ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc,ow_sale.pn asc rows current row ), +win2 as (partition by ow_sale.vn order by ow_sale.pn desc), +win3 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 1,8,4,9->7; 4,9->10; 1,8,2->11; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.pn-ow_sale.pn) preceding ); -- mvd 2,6,7,8->5; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn*ow_sale.qty),floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows between unbounded preceding and floor(ow_sale.pn+ow_sale.prc) preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.cn asc); -- mvd 3,1->2; 3->4; 6->5; 3->7; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn*ow_sale.prc),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and current row ); -- mvd 1,2->5; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.cn order by ow_sale.cn asc); -- mvd 2,6,4,3->7; 2->8; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and unbounded following ); -- mvd 5,6,1,3->4; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn),floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between unbounded preceding and unbounded following ); -- mvd 1,4,2->5; 1,4,2->6; 1,4,2->7; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn-ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.dt,ow_sale.prc,ow_sale.dt order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between 4 preceding and floor(ow_sale.vn) preceding ), +win2 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.dt order by ow_sale.vn asc); -- mvd 1,3,2->5; 7,8,3->6; 7,8,3->9; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.prc/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows between 1 preceding and current row ); -- mvd 5,6,7,1,8->4; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc rows between floor(ow_sale.vn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.pn/ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc rows between floor(ow_sale.vn) preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 6,1,7->5; 6,1,7->8; 6,1,7->9; 7->10; 7->11; 7->12; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn asc rows between 7 preceding and floor(ow_sale.prc*ow_sale.cn) following ); -- mvd 5,3,6,7->4; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc*ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.cn asc rows between floor(ow_sale.pn-ow_sale.pn) preceding and unbounded following ); -- mvd 5,1,3,6->4; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc,ow_sale.cn asc rows between 1 preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 5,1,6,3->4; 3->7; 3->8; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between current row and current row ); -- mvd 2,4->3; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn+ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn+ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn/ow_sale.cn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc rows between current row and current row ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.dt order by ow_sale.cn asc), +win4 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc), +win5 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.vn desc); -- mvd 7,4->6; 4->8; 10,7,1,4->9; 4->11; 13,10,1,4->12; 10,2->14; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows between current row and floor(ow_sale.prc) following ); -- mvd 3,6,7,2->5; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.pn asc rows between current row and floor(ow_sale.qty) following ), +win2 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.pn asc); -- mvd 5,2,3,1->4; 7,3,1->6; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.cn+ow_sale.qty),floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between current row and unbounded following ); -- mvd 1,5,3->4; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc*ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn*ow_sale.qty) as int),cast (floor(ow_sale.cn+ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows between current row and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc); -- mvd 1,6,7->5; 1,6,7->8; 6,1,7->9; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.cn*ow_sale.pn) following and 6 following ); -- mvd 4,5,2->3; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn*ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.cn) following and floor(ow_sale.vn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.cn) following and floor(ow_sale.vn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.cn) following and floor(ow_sale.vn) following ), +win2 as (order by ow_sale.cn asc); -- mvd 3,4,1,5->2; 3,4,1,5->6; 3,4,1,5->7; 3->8; 3,4,1,5->9; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.vn),floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows between 8 following and unbounded following ); -- mvd 4,2,5->3; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(ow_sale.pn+ow_sale.cn),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty/ow_sale.cn) as int),cast (floor(ow_sale.pn-ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.prc) following and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.prc) following and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc); -- mvd 4,5,2->3; 7,4,5,2->6; 4,5,2->8; + +-- REGR_INTERCEPT() function with NULL OVER() clause in combination with other window functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn+ow_sale.cn),floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (), +win2 as (order by ow_sale.cn asc); -- mvd 7->7; 2->8; 2->9; + +-- REGR_INTERCEPT() function with OVER() clause having ONLY PARTITION BY -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn-ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.cn); -- mvd 5,1,8->7; + +-- REGR_INTERCEPT() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn+ow_sale.vn),floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.qty order by ow_sale.pn desc); -- mvd 3->4; 6->5; 1,6->7; + +-- REGR_INTERCEPT() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty-ow_sale.qty),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc); -- mvd 4->3; + +-- REGR_INTERCEPT() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc/ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc/ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc), +win2 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 7->6; 7->8; 7->9; 7->10; 7->11; 7->12; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ); -- mvd 2->3; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc+ow_sale.prc),floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range floor(ow_sale.vn+ow_sale.vn) preceding ); -- mvd 6->5; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn+ow_sale.qty),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range floor(ow_sale.pn-ow_sale.cn) preceding ); -- mvd 5->7; 5->8; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn-ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range current row ); -- mvd 6->5; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc),floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(order by ow_sale.pn desc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.vn) as int),cast (floor(ow_sale.prc*ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.vn) as int),cast (floor(ow_sale.pn+ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range current row ), +win2 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.cn order by ow_sale.pn desc), +win4 as (order by ow_sale.ord, ow_sale.pn asc), +win5 as (order by ow_sale.cn desc); -- mvd 5->4; 5->6; 1,8->7; 10,1,2,5->9; 5->11; 1->12; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn-ow_sale.vn),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and floor(ow_sale.prc) preceding ); -- mvd 1->6; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty*ow_sale.pn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and 1 preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 4->3; 6->5; 4->7; 6->8; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.pn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 3->2; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.pn)) OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.vn asc); -- mvd 3->2; 3->4; 3->5; 3->6; 3->7; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.qty/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and 1 following ); -- mvd 1->5; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn+ow_sale.pn),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn+ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and 4 following ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.vn desc); -- mvd 3->4; 3->5; 7,8,1,2->6; 7,8,1,2->9; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and unbounded following ); -- mvd 5->4; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn-ow_sale.qty),floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.prc)) OVER(order by ow_sale.cn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.cn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.vn asc); -- mvd 1->6; 1->7; 1->8; 2->9; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc*ow_sale.cn),floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.cn) preceding and 3 preceding ); -- mvd 5->4; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn-ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn+ow_sale.pn)) OVER(order by ow_sale.cn asc range between floor(ow_sale.cn+ow_sale.pn) preceding and floor(ow_sale.cn+ow_sale.prc) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty-ow_sale.cn) as int),cast (floor(ow_sale.qty+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.cn+ow_sale.pn) preceding and floor(ow_sale.cn+ow_sale.prc) preceding ), +win2 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.vn desc); -- mvd 4->3; 4->5; 4->6; 8,9->7; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 2 preceding and current row ); -- mvd 4->3; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty*ow_sale.pn)) OVER(order by ow_sale.pn asc range between floor(ow_sale.cn) preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.cn) preceding and current row ); -- mvd 4->7; 4->8; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc),floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 2 preceding and floor(ow_sale.vn) following ); -- mvd 3->7; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn*ow_sale.prc)) OVER(order by ow_sale.vn asc range between floor(ow_sale.prc) preceding and floor(ow_sale.cn+ow_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.vn) as int),cast (floor(ow_sale.vn*ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.qty)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.prc) preceding and floor(ow_sale.cn+ow_sale.cn) following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 2->7; 2->8; 2->9; 2->10; 2->11; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 4 preceding and unbounded following ); -- mvd 4->3; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(order by ow_sale.cn desc range between floor(ow_sale.prc+ow_sale.vn) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.prc+ow_sale.vn) preceding and unbounded following ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.cn desc); -- mvd 7->6; 7->8; 1->9; 7,11,12,3,1->10; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn*ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and current row ); -- mvd 5->4; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty-ow_sale.qty),floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(partition by ow_sale.vn order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and current row ), +win2 as (partition by ow_sale.vn order by ow_sale.cn asc); -- mvd 3->5; 2,4->6; 2,4->7; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and floor(ow_sale.cn+ow_sale.prc) following ); -- mvd 2->3; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(order by ow_sale.cn desc range between current row and floor(ow_sale.qty*ow_sale.pn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and floor(ow_sale.qty*ow_sale.pn) following ), +win2 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.vn desc), +win3 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.pn desc); -- mvd 3->2; 3->4; 3->5; 3->6; 8,3,9,1->7; 11,9,1->10; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn/ow_sale.qty),floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(order by ow_sale.vn desc range between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and unbounded following ), +win2 as (order by ow_sale.pn desc); -- mvd 2->7; 9->8; 9->10; 9->11; 2->12; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.pn+ow_sale.pn) following and floor(ow_sale.pn/ow_sale.vn) following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc), +win3 as (order by ow_sale.pn desc); -- mvd 3->2; 5,3,6,1->4; 5,3,6,1->7; 1->8; 1->9; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between floor(ow_sale.pn) following and unbounded following ); -- mvd 1->3; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn*ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn+ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn*ow_sale.prc) as int),cast (floor(ow_sale.vn/ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between floor(ow_sale.pn*ow_sale.qty) following and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.pn asc), +win4 as (partition by ow_sale.pn order by ow_sale.pn desc); -- mvd 1->5; 7,8,4,1->6; 1->9; 1->10; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn+ow_sale.prc),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn*ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.cn asc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty/ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.cn asc rows unbounded preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.cn asc rows unbounded preceding ); -- mvd 1,3->5; 1,3->6; 1,3->7; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn-ow_sale.prc),floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc,ow_sale.vn asc rows floor(ow_sale.cn*ow_sale.vn) preceding ); -- mvd 3->2; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn*ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn desc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows current row ); -- mvd 5->4; 5->6; 5->7; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn),floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between unbounded preceding and 4 preceding ); -- mvd 1,4->7; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and 2 preceding ), +win2 as (partition by ow_sale.cn order by ow_sale.cn asc), +win3 as (order by ow_sale.pn asc); -- mvd 4->3; 4->5; 2->6; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and current row ); -- mvd 6->5; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.qty/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.vn) following ); -- mvd 4,5->3; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn+ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between unbounded preceding and unbounded following ); -- mvd 6,4->5; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.vn asc); -- mvd 2->6; 3->7; 5->8; 3->9; 2->10; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between floor(ow_sale.cn*ow_sale.pn) preceding and floor(ow_sale.qty+ow_sale.pn) preceding ); -- mvd 3,4->2; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn/ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc rows between floor(ow_sale.pn/ow_sale.pn) preceding and current row ); -- mvd 1->7; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty-ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between 8 preceding and 0 following ); -- mvd 3,4->2; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc rows between 2 preceding and floor(ow_sale.vn) following ); -- mvd 1,6->7; 1,6->8; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn+ow_sale.cn),floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.vn-ow_sale.vn) preceding and unbounded following ); -- mvd 3->2; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between current row and current row ); -- mvd 1->3; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc/ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.cn asc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.pn,ow_sale.qty order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.cn asc rows between current row and current row ), +win2 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.vn desc), +win4 as (order by ow_sale.vn desc); -- mvd 4,6->7; 4,3,1->8; 6->9; 4,6->10; 4,3,1->11; 6->12; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between current row and 1 following ); -- mvd 1->2; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn),floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.vn desc rows between current row and 3 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between current row and 3 following ), +win2 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 3->6; 3->7; 3->8; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn/ow_sale.vn),floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between current row and unbounded following ); -- mvd 3->2; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn),floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty-ow_sale.cn) as int),cast (floor(ow_sale.qty/ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between current row and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,4->2; 3,6,4->5; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc+ow_sale.vn),floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.cn) following and floor(ow_sale.pn) following ); -- mvd 1->6; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.vn desc rows between floor(ow_sale.pn+ow_sale.qty) following and unbounded following ); -- mvd 3,4->2; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc-ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between floor(ow_sale.vn) following and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.cn asc); -- mvd 4,2->6; 4,2->7; 4,1->8; 4,1->9; 4,2->10; + +-- REGR_INTERCEPT() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty-ow_sale.pn),floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.vn desc,ow_sale.pn asc); -- mvd 1,6,7->5; + +-- REGR_INTERCEPT() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty +, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.dt order by ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.dt order by ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.dt order by ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn+ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.dt order by ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.dt order by ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn desc); -- mvd 6,3,7,8,2->5; 6,3,7,8,2->9; 6,3,7,8,2->10; 6,3,7,8,2->11; 6,3,7,8,2->12; 6,3,7,8,2->13; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn desc range unbounded preceding ); -- mvd 3,4->2; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.pn asc range floor(ow_sale.vn) preceding ); -- mvd 3,4->2; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn),floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.pn desc range floor(ow_sale.qty) preceding ), +win2 as (partition by ow_sale.vn order by ow_sale.cn desc); -- mvd 4,1->3; 6,2->5; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn-ow_sale.qty),floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.vn order by ow_sale.vn desc range current row ); -- mvd 6,7->5; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty*ow_sale.qty),floor(ow_sale.cn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.vn) as int),cast (floor(ow_sale.prc+ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.vn desc range current row ), +win2 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc), +win3 as (order by ow_sale.pn asc); -- mvd 1,2->4; 6,7,1,3,2->5; 2->8; 2->9; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.pn desc range between unbounded preceding and floor(ow_sale.cn+ow_sale.pn) preceding ); -- mvd 7,5,1->6; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn*ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.cn asc range between unbounded preceding and current row ); -- mvd 2,3,1->5; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn),floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn*ow_sale.pn)) OVER(partition by ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc*ow_sale.prc)) OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and current row ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.vn desc); -- mvd 5->4; 5,1,7,8->6; 5->9; 5,1,7,8->10; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn),floor(ow_sale.cn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.pn desc range between unbounded preceding and floor(ow_sale.vn) following ); -- mvd 5,2->4; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn/ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.vn/ow_sale.cn) following ), +win2 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.cn desc); -- mvd 4,1,2,5->3; 1,7,2->6; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn-ow_sale.qty),floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.pn asc range between unbounded preceding and unbounded following ); -- mvd 6,1->5; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.prc order by ow_sale.cn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.pn asc); -- mvd 6,3,7,1->5; 3,4->8; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.cn desc range between floor(ow_sale.pn/ow_sale.pn) preceding and floor(ow_sale.cn) preceding ); -- mvd 2,4,5->3; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn order by ow_sale.pn desc range between 2 preceding and 3 preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 5,6,7->4; 7->8; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn*ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.cn desc range between 1 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.cn desc range between 1 preceding and current row ), +win2 as (order by ow_sale.cn asc); -- mvd 1,4,5->3; 1,4,5->6; 1->7; 1->8; 1->9; 1->10; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn desc range between 0 preceding and 4 following ); -- mvd 2,5->4; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn-ow_sale.vn),floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc range between 4 preceding and 1 following ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.prc,ow_sale.dt,ow_sale.pn,ow_sale.dt order by ow_sale.cn desc); -- mvd 4,5,6->3; 4->7; 9,4,10,6->8; 4->11; 4->12; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.vn order by ow_sale.vn asc range between floor(ow_sale.prc*ow_sale.pn) preceding and unbounded following ); -- mvd 8,4->7; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(partition by ow_sale.dt order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn asc range between 0 preceding and unbounded following ), +win2 as (partition by ow_sale.dt order by ow_sale.cn asc); -- mvd 1->6; 3,8->7; 3,8->9; 1->10; 3,8->11; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn+ow_sale.cn),floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.dt order by ow_sale.pn asc range between current row and current row ), +win2 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.qty order by ow_sale.cn desc); -- mvd 4,5,2,6->3; 2,5,1,8->7; 4,5,2,6->9; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.cn asc range between current row and 0 following ); -- mvd 3,1->2; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc-ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.pn asc range between current row and floor(ow_sale.vn) following ), +win2 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc); -- mvd 2,5,6,1,3->4; 5,6,8,3->7; 5,6,8,3->9; 5,6,8,3->10; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.cn desc range between current row and unbounded following ); -- mvd 2,1->4; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn/ow_sale.vn),floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc order by ow_sale.vn asc range between 1 following and 2 following ); -- mvd 5,2,6->4; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.qty order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.pn asc range between floor(ow_sale.prc+ow_sale.cn) following and 0 following ), +win2 as (partition by ow_sale.qty order by ow_sale.vn asc); -- mvd 3,4->2; 1,6->5; 1,6->7; 1,6->8; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty/ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.cn asc range between 4 following and unbounded following ); -- mvd 3,1->2; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn+ow_sale.vn),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn*ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn desc range between 1 following and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc); -- mvd 5,6->4; 5->7; 5->8; 3,5,1,10->9; 5->11; 5->12; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc rows unbounded preceding ); -- mvd 5,1->4; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc/ow_sale.qty)) OVER(partition by ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn+ow_sale.qty) as int),NULL) OVER(win5),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc rows unbounded preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.pn asc), +win4 as (order by ow_sale.cn asc), +win5 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc); -- mvd 8,1->7; 1->9; 8,1->10; 1->11; 2->12; 14,5,2,1->13; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows 5 preceding ); -- mvd 3,4,5,1,6->2; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn*ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty+ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc rows floor(ow_sale.pn*ow_sale.vn) preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 5,2,6->4; 6->7; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc rows current row ); -- mvd 3,5,6->4; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc/ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 2 preceding ); -- mvd 3,4,5->2; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn-ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and current row ); -- mvd 2,4,5->3; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn*ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc,ow_sale.vn asc rows between unbounded preceding and 5 following ); -- mvd 6,1,2->5; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn),floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn-ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and floor(ow_sale.vn) following ), +win2 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 1,8,9,3->7; 4->10; 4->11; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc,ow_sale.vn asc rows between unbounded preceding and unbounded following ); -- mvd 3,4,5,1->2; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.pn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.pn order by ow_sale.vn desc); -- mvd 5,6,7->4; 3,5,9,1,7->8; 3,5,9,1,7->10; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.cn desc rows between floor(ow_sale.qty/ow_sale.pn) preceding and floor(ow_sale.prc) preceding ); -- mvd 1,6,3->5; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty-ow_sale.cn),floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.vn order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.vn desc rows between 0 preceding and floor(ow_sale.vn) preceding ), +win2 as (partition by ow_sale.vn order by ow_sale.vn asc); -- mvd 2,6,3,1->5; 3->7; 3->8; 2,6,3,1->9; 3->10; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc),floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc,ow_sale.pn desc rows between floor(ow_sale.prc) preceding and current row ); -- mvd 6,7,2,1->5; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc/ow_sale.vn),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.vn asc rows between floor(ow_sale.vn) preceding and floor(ow_sale.cn) following ); -- mvd 5,6,7,2->4; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.prc,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn-ow_sale.vn) as int),cast (floor(ow_sale.qty+ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc,ow_sale.cn desc rows between 1 preceding and floor(ow_sale.prc) following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.vn desc); -- mvd 4,6,7->5; 4->8; 4->9; 4,6,7->10; 4->11; 4,6,7->12; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn),floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.vn asc rows between 0 preceding and unbounded following ); -- mvd 3,6,1->5; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between floor(ow_sale.vn) preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.cn asc); -- mvd 3,4,1,5->2; 4,3,1,7,5->6; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between current row and current row ); -- mvd 8,9->7; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc rows between current row and current row ), +win2 as (order by ow_sale.cn asc); -- mvd 1,4,3->6; 1->7; 1,4,3->8; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn-ow_sale.pn),floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.vn asc rows between current row and floor(ow_sale.prc/ow_sale.qty) following ); -- mvd 3,4,5->2; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.pn desc rows between current row and floor(ow_sale.qty) following ); -- mvd 3,4,2,1->7; 3,4,2,1->8; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn+ow_sale.qty),floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.pn asc rows between current row and unbounded following ); -- mvd 5,2,1,6->4; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.pn),floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows between current row and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.dt order by ow_sale.vn desc); -- mvd 3,4,1->2; 3,4,6,1->5; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn+ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn-ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.cn desc rows between 0 following and floor(ow_sale.prc) following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc); -- mvd 5,1,6,3->4; 1->7; 1->8; 1->9; 5,1,6,3->10; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn-ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between 0 following and unbounded following ); -- mvd 5,1,7,8->6; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(ow_sale.cn*ow_sale.qty),floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(partition by ow_sale.prc,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows between floor(ow_sale.vn) following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.prc,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows between floor(ow_sale.vn) following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows between floor(ow_sale.vn) following and unbounded following ); -- mvd 6,4,7,1->5; 6,4,7,1->8; 6,4,7,1->9; 6,4,7,1->10; + +-- REGR_R2() function with NULL OVER() clause -- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (); -- mvd 3->3; + +-- REGR_R2() function with NULL OVER() clause in combination with other window functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (), +win2 as (order by ow_sale.cn asc); -- mvd 2->2; 2->3; 5->4; + +-- REGR_R2() function with OVER() clause having ONLY PARTITION BY -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty+ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.cn); -- mvd 3,4,1,5->2; + +-- REGR_R2() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn+ow_sale.pn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.vn), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,2,1->3; 4,2,1->5; 1->6; 2,8->7; + +-- REGR_R2() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn*ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc); -- mvd 1->2; + +-- REGR_R2() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.cn desc,ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc,ow_sale.cn asc); -- mvd 4->3; 4->5; 4->6; + +-- REGR_R2() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range unbounded preceding ); -- mvd 3->5; + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.vn) as int),cast (floor(ow_sale.vn-ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn+ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc), +win4 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc); -- mvd 6->5; 2->7; 6->8; 2->9; 6->10; 6,12,2->11; + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc+ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range 3 preceding ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.cn asc); -- mvd 4->3; 2->5; 1->6; + +-- REGR_R2() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range current row ); -- mvd 5->4; + +-- REGR_R2() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty),floor(ow_sale.prc/ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and 3 preceding ); -- mvd 1->3; + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and floor(ow_sale.prc) preceding ), +win2 as (order by ow_sale.vn desc); -- mvd 4->3; 1->5; + +-- REGR_R2() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and current row ); -- mvd 3->2; + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn*ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc-ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.pn asc), +win3 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->6; 8->7; 10,1,3,8->9; 8->11; 8->12; 1->13; + +-- REGR_R2() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.vn/ow_sale.cn) following ); -- mvd 1->4; + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn+ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.cn order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and 1 following ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.qty order by ow_sale.pn desc), +win4 as (partition by ow_sale.cn order by ow_sale.pn asc); -- mvd 5->4; 1->6; 5->7; 9,10,1->8; 5,1->11; 5,1->12; + +-- REGR_R2() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc),floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and unbounded following ); -- mvd 3->2; + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty+ow_sale.prc) as int),cast (floor(ow_sale.qty/ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.prc) as int),cast (floor(ow_sale.prc+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(order by ow_sale.pn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 5->6; 5->7; 5->8; 10,11->9; 5->12; + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty+ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 2 preceding and floor(ow_sale.prc) preceding ), +win2 as (order by ow_sale.cn asc); -- mvd 1->5; 7->6; + +-- REGR_R2() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty),floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.cn) preceding and current row ); -- mvd 1->3; + +-- REGR_R2() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 0 preceding and floor(ow_sale.pn) following ); -- mvd 3->2; + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 3 preceding and 1 following ), +win2 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.vn order by ow_sale.pn asc); -- mvd 4->6; 5,2,1->7; + +-- REGR_R2() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 4 preceding and unbounded following ); -- mvd 4->3; + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(order by ow_sale.cn asc range between 0 preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn-ow_sale.pn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 0 preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.pn asc), +win3 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.vn desc); -- mvd 7->6; 3,7,2,1->8; 7->9; 2,1->10; 3,7,2,1->11; 2,1->12; + +-- REGR_R2() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and current row ); -- mvd 4->3; + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.qty)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc+ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.pn order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and current row ), +win2 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.pn order by ow_sale.pn desc), +win3 as (order by ow_sale.cn desc), +win4 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.vn desc); -- mvd 2->3; 5,2,6,1->4; 8->7; 10,2,1->9; 8->11; 5,2,6,1->12; + +-- REGR_R2() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and floor(ow_sale.prc*ow_sale.cn) following ); -- mvd 4->3; + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty+ow_sale.vn),floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.pn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and 3 following ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc); -- mvd 5->4; 5,7,2,1->6; + +-- REGR_R2() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn+ow_sale.qty),floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and unbounded following ); -- mvd 1->5; + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn*ow_sale.qty),floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.cn) as int),cast (floor(ow_sale.qty*ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and unbounded following ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 1->3; 2->4; 2->5; 7->6; + +-- REGR_R2() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.pn) following and 2 following ); -- mvd 3->4; + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 3 following and floor(ow_sale.vn) following ), +win2 as (order by ow_sale.vn asc); -- mvd 3->4; 3->5; 3->6; 3->7; + +-- REGR_R2() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.cn/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 2 following and unbounded following ); -- mvd 1->5; + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn+ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 0 following and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.prc order by ow_sale.cn desc); -- mvd 8->7; 10,8,1->9; + +-- REGR_R2() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows unbounded preceding ); -- mvd 3->5; + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn/ow_sale.cn),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc+ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows unbounded preceding ), +win2 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.qty,ow_sale.pn order by ow_sale.vn asc), +win3 as (order by ow_sale.ord, ow_sale.pn desc), +win4 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc); -- mvd 5,2->4; 5,2->6; 8,3,5,1,2->7; 2->9; 5,2->10; 12,5,1,2->11; + +-- REGR_R2() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn*ow_sale.qty),floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows floor(ow_sale.prc) preceding ); -- mvd 2->5; + +-- REGR_R2() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn*ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows current row ); -- mvd 3->5; + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows current row ); -- mvd 8->7; 8->9; + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.pn+ow_sale.qty) preceding ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.cn desc); -- mvd 1->7; 1,4,2->8; + +-- REGR_R2() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and current row ); -- mvd 6->5; + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn*ow_sale.pn),floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn-ow_sale.prc) as int),cast (floor(ow_sale.qty+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between unbounded preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 1->5; 7->6; + +-- REGR_R2() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty+ow_sale.pn),floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.prc) following ); -- mvd 1,3->2; + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.cn order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(partition by ow_sale.cn order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 2 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 2 following ), +win2 as (partition by ow_sale.cn order by ow_sale.vn asc), +win3 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.vn asc); -- mvd 6->7; 9,6->8; 9,6->10; 9,6->11; 6->12; 14,6->13; + +-- REGR_R2() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty*ow_sale.vn),floor(ow_sale.cn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.vn desc rows between unbounded preceding and unbounded following ); -- mvd 1,3->2; + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc,ow_sale.pn desc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.pn desc), +win3 as (order by ow_sale.cn desc); -- mvd 4,1->3; 1->5; 7->6; + +-- REGR_R2() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between 7 preceding and floor(ow_sale.prc) preceding ); -- mvd 2->5; + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between 4 preceding and 0 preceding ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.cn asc); -- mvd 4->3; 6->5; 6->7; 6->8; 6->9; + +-- REGR_R2() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc*ow_sale.cn),floor(ow_sale.qty*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.qty+ow_sale.qty) preceding and current row ); -- mvd 7->6; + +-- REGR_R2() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 1 preceding and 1 following ); -- mvd 3->2; + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn-ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win5),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between 3 preceding and floor(ow_sale.vn) following ), +win2 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.pn desc), +win3 as (order by ow_sale.pn desc), +win4 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.prc order by ow_sale.pn desc), +win5 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 1,6->5; 3,4->7; 4->8; 10,1,3,4->9; 4->11; 1,3,6,13,4->12; + +-- REGR_R2() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows between current row and current row ); -- mvd 4,2->3; + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn/ow_sale.vn),floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows between current row and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows between current row and current row ); -- mvd 6,4->5; 6,4->7; + +-- REGR_R2() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc rows between current row and floor(ow_sale.cn) following ); -- mvd 6->5; + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn-ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.pn)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.prc,ow_sale.dt order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between current row and floor(ow_sale.cn*ow_sale.pn) following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc), +win4 as (partition by ow_sale.prc,ow_sale.dt order by ow_sale.pn asc); -- mvd 1->6; 3->7; 9,1,10->8; 9,1,10->11; 9,2,10->12; 9,2,10->13; + +-- REGR_R2() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty+ow_sale.qty),floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between current row and unbounded following ); -- mvd 1->5; + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn-ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between current row and unbounded following ); -- mvd 5,8->7; 5,8->9; + +-- REGR_R2() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn+ow_sale.qty),floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 3 following and floor(ow_sale.cn) following ); -- mvd 1->2; + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn+ow_sale.prc),floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows between floor(ow_sale.vn) following and floor(ow_sale.qty/ow_sale.qty) following ), +win2 as (order by ow_sale.pn desc); -- mvd 6,7->5; 7->8; + +-- REGR_R2() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn desc rows between 9 following and unbounded following ); -- mvd 5,6->4; + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty-ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc,ow_sale.vn asc rows between floor(ow_sale.prc) following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc,ow_sale.vn asc rows between floor(ow_sale.prc) following and unbounded following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc); -- mvd 8,1->7; 8->9; 8,1->10; 12,8,3,1->11; 12,8,3,1->13; + +-- REGR_R2() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn-ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc,ow_sale.cn desc,ow_sale.cn asc); -- mvd 3,4,5->2; + +-- REGR_R2() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty*ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(partition by ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc); -- mvd 4,5,6,2->3; 4,5,6,2->7; 4,5,6,2->8; + +-- REGR_R2() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn*ow_sale.pn),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn asc range unbounded preceding ); -- mvd 1,5->4; + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(partition by ow_sale.qty order by ow_sale.pn asc range unbounded preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.pn asc range unbounded preceding ); -- mvd 7,5->6; 7,5->8; + +-- REGR_R2() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.pn asc range 0 preceding ); -- mvd 6,1->5; + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc),floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc range 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty/ow_sale.qty)) OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc range 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc range 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc range 2 preceding ); -- mvd 7,8,3->6; 7,8,3->9; 7,8,3->10; 7,8,3->11; 7,8,3->12; + +-- REGR_R2() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.cn desc range current row ); -- mvd 4->3; + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.cn desc range current row ), +win2 as (order by ow_sale.pn asc); -- mvd 5,3,2,6->4; 6->7; 5,3,2,6->8; + +-- REGR_R2() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn+ow_sale.qty),floor(ow_sale.prc/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn) preceding ); -- mvd 1,5->4; + +-- REGR_R2() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 1,7,5,4->6; + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn-ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.qty,ow_sale.prc,ow_sale.prc order by ow_sale.vn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn/ow_sale.qty)) OVER(partition by ow_sale.qty,ow_sale.prc,ow_sale.prc order by ow_sale.vn asc range between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.prc order by ow_sale.vn asc range between unbounded preceding and current row ); -- mvd 7,8,4->6; 7,8,4->9; 7,8,4->10; + +-- REGR_R2() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty/ow_sale.pn),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.pn asc range between unbounded preceding and floor(ow_sale.pn-ow_sale.vn) following ); -- mvd 1,6->5; + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc+ow_sale.qty),floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.cn*ow_sale.cn) following ), +win2 as (order by ow_sale.vn asc), +win3 as (order by ow_sale.vn asc); -- mvd 6,2,7,3->5; 7->8; 7->9; 7->10; + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc/ow_sale.vn),floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn*ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn/ow_sale.qty)) OVER(partition by ow_sale.dt order by ow_sale.vn desc range between unbounded preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.dt order by ow_sale.pn asc), +win3 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 4,5->3; 4,7,5,2->6; 4,7,5,2->8; 1,7,4->9; 4,5->10; + +-- REGR_R2() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn*ow_sale.qty),floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.vn desc range between floor(ow_sale.qty-ow_sale.qty) preceding and floor(ow_sale.vn+ow_sale.pn) preceding ); -- mvd 5,6->4; + +-- REGR_R2() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn*ow_sale.prc),floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc range between floor(ow_sale.pn-ow_sale.vn) preceding and current row ); -- mvd 4,5->7; + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.qty) as int),cast (floor(ow_sale.vn*ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn order by ow_sale.cn desc range between floor(ow_sale.pn) preceding and current row ), +win2 as (partition by ow_sale.prc,ow_sale.dt order by ow_sale.vn desc), +win3 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.prc order by ow_sale.pn desc), +win4 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,4,5->2; 7,4,5->6; 7,4,9,1->8; 7,4,9,1->10; 3,9,5,1->11; + +-- REGR_R2() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn+ow_sale.cn),floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.qty,ow_sale.dt order by ow_sale.cn asc range between 1 preceding and floor(ow_sale.prc) following ); -- mvd 5,1,6,7,8->4; + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc-ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.dt order by ow_sale.cn desc range between floor(ow_sale.pn-ow_sale.pn) preceding and 2 following ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.cn order by ow_sale.cn asc); -- mvd 3,1,4->2; 6,1,7->5; + +-- REGR_R2() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty),floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.vn asc range between 1 preceding and unbounded following ); -- mvd 2,1->4; + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty*ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.vn desc range between floor(ow_sale.qty) preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.prc,ow_sale.prc,ow_sale.dt order by ow_sale.pn asc); -- mvd 5,1->4; 7,2,8,9->6; 5,1->10; + +-- REGR_R2() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn-ow_sale.vn),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.prc order by ow_sale.cn desc range between current row and current row ); -- mvd 4,5,6,1,7->3; + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.cn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.vn asc range between current row and current row ), +win2 as (order by ow_sale.cn asc); -- mvd 6,2,4,7->5; 2->8; + +-- REGR_R2() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.dt order by ow_sale.cn desc range between current row and floor(ow_sale.prc) following ); -- mvd 3,4,5,6->2; + +-- REGR_R2() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.vn asc range between current row and unbounded following ); -- mvd 1,8,2->7; + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.pn)) OVER(partition by ow_sale.vn order by ow_sale.cn asc range between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.cn asc range between current row and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.vn desc); -- mvd 4,5->3; 2,7,5,8->6; 4,5->9; 4,5->10; + +-- REGR_R2() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.pn asc range between floor(ow_sale.qty) following and floor(ow_sale.prc*ow_sale.vn) following ); -- mvd 4,2->3; + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty-ow_sale.vn),floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn/ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.pn order by ow_sale.cn desc range between 1 following and floor(ow_sale.vn/ow_sale.vn) following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,5,1->3; 5->6; 5->7; 5->8; 5->9; 5->10; + +-- REGR_R2() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty order by ow_sale.pn desc range between 4 following and unbounded following ); -- mvd 5,6,2->4; + +-- REGR_R2() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc,ow_sale.cn desc rows unbounded preceding ); -- mvd 2,4,5,6->3; + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.pn)) OVER(partition by ow_sale.prc,ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.cn desc rows unbounded preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.cn desc rows unbounded preceding ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.cn asc); -- mvd 7,5,3,8->6; 5,3->9; 7,5,3,8->10; 5,3->11; 7,5,3,8->12; + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows floor(ow_sale.qty) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.pn-ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows floor(ow_sale.qty) preceding ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 1,2,4,5->3; 1,2,4,5->6; 1->7; 1,2,4,5->8; 1,2->9; + +-- REGR_R2() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn*ow_sale.pn),floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc rows current row ); -- mvd 3,2,5->7; + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc),floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.qty) preceding ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.dt order by ow_sale.vn asc), +win3 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.pn order by ow_sale.vn desc); -- mvd 1,4->3; 6,1,7->5; 1,7,9,4->8; + +-- REGR_R2() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn-ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 3,2,5,1,6->4; + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn-ow_sale.pn),floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and current row ); -- mvd 1,3,4->2; 1,3,4->5; + +-- REGR_R2() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and 8 following ); -- mvd 3,1,6->7; + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc/ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn*ow_sale.qty) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc rows between unbounded preceding and floor(ow_sale.pn+ow_sale.pn) following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 4,2,1->3; 6->5; + +-- REGR_R2() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.vn desc rows between unbounded preceding and unbounded following ); -- mvd 4,1,5,6->3; + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn-ow_sale.prc),floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.prc)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 5,6,1->4; 5,6,1->7; 9->8; 9->10; 9->11; 9->12; + +-- REGR_R2() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between floor(ow_sale.prc*ow_sale.pn) preceding and floor(ow_sale.prc*ow_sale.pn) preceding ); -- mvd 2,4,5,1->3; + +-- REGR_R2() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.vn desc rows between floor(ow_sale.pn+ow_sale.pn) preceding and current row ); -- mvd 3,4,5,6->2; + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.vn) preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.vn asc); -- mvd 3,4,1,7->6; 2,4,7->8; + +-- REGR_R2() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.vn) preceding and floor(ow_sale.vn) following ); -- mvd 5,3->4; + +-- REGR_R2() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc+ow_sale.qty),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc rows between 6 preceding and unbounded following ); -- mvd 1->4; + +-- REGR_R2() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn),floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between current row and current row ); -- mvd 8,1,9->7; + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between current row and current row ), +win2 as (partition by ow_sale.pn order by ow_sale.cn asc), +win3 as (order by ow_sale.cn asc), +win4 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc); -- mvd 1,4,2->3; 4,6->5; 4->7; 4,6->8; 4->9; + +-- REGR_R2() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.qty),floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc rows between current row and 1 following ); -- mvd 3->7; + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn+ow_sale.pn),floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty*ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows between current row and 2 following ), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty order by ow_sale.pn desc), +win4 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.vn desc); -- mvd 3,4,5->2; 1,3,4->6; 1,3,4->7; 1,9,4,5->8; 1,3,4->10; 1,3,4->11; + +-- REGR_R2() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn asc rows between current row and unbounded following ); -- mvd 3->2; + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn-ow_sale.prc),floor(ow_sale.qty/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn/ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn-ow_sale.qty)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.vn desc rows between current row and unbounded following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc); -- mvd 4,2->3; 1->5; 1,2,7->6; 4,2->8; 1->9; 1->10; + +-- REGR_R2() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows between 9 following and floor(ow_sale.prc) following ); -- mvd 2,7,8,3,1->6; + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.prc+ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.vn) following and floor(ow_sale.qty*ow_sale.pn) following ), +win2 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc); -- mvd 5,6,2,7->4; 1,2->8; + +-- REGR_R2() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn-ow_sale.qty),floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.pn desc rows between floor(ow_sale.cn) following and unbounded following ); -- mvd 3,4,5,6,7,1->2; + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_R2(floor(ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.vn) following and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.vn) following and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.qty order by ow_sale.cn desc), +win3 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc), +win4 as (order by ow_sale.cn asc); -- mvd 2,6,3,8->7; 2,6,1,8->9; 2,3,8->10; 2->11; 2,6,3,8->12; + +-- REGR_SLOPE() function with NULL OVER() clause -- + +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (); -- mvd 3->3; + +-- REGR_SLOPE() function with NULL OVER() clause in combination with other window functions -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn/ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.qty,ow_sale.vn order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (), +win2 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.vn desc); -- mvd 2->2; 4,5->3; 2->6; 4,5->7; + +-- REGR_SLOPE() function with OVER() clause having ONLY PARTITION BY -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn-ow_sale.qty),floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.prc); -- mvd 3,1,5,6->4; + +-- REGR_SLOPE() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty+ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.vn), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.pn order by ow_sale.cn asc); -- mvd 6,7->5; 2->8; 2->9; 11,2->10; + +-- REGR_SLOPE() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc,ow_sale.pn desc); -- mvd 1,3->5; + +-- REGR_SLOPE() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(order by ow_sale.pn asc,ow_sale.cn asc,ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.pn asc,ow_sale.cn asc,ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc,ow_sale.cn asc,ow_sale.pn desc), +win2 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc); -- mvd 4,2->7; 4,2->8; 4,2->9; 5->10; 5->11; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn/ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range unbounded preceding ); -- mvd 3->2; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range floor(ow_sale.vn) preceding ); -- mvd 3->2; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn*ow_sale.vn),floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.prc)) OVER(order by ow_sale.cn desc range 0 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range 0 preceding ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.prc order by ow_sale.vn asc), +win3 as (order by ow_sale.pn asc); -- mvd 5->4; 1,7,3->6; 5->8; 3->9; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range current row ); -- mvd 1->3; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.prc order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.pn)) OVER(partition by ow_sale.vn order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range current row ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.prc order by ow_sale.cn desc), +win3 as (partition by ow_sale.vn order by ow_sale.cn desc); -- mvd 5->4; 7,3,8,5->6; 7,3,8,5->9; 3,1->10; 3,1->11; 3,1->12; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.prc) preceding ); -- mvd 3->6; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc),floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and current row ); -- mvd 5->4; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty/ow_sale.vn)) OVER(order by ow_sale.pn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.vn order by ow_sale.cn desc); -- mvd 3->4; 3->5; 3->6; 8,2->7; 3->9; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and floor(ow_sale.prc) following ); -- mvd 5->4; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and unbounded following ); -- mvd 1->4; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.cn asc); -- mvd 3->2; 3->4; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn*ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.qty) preceding and floor(ow_sale.prc) preceding ); -- mvd 4->3; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn+ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.pn+ow_sale.pn) preceding and floor(ow_sale.qty+ow_sale.pn) preceding ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.vn order by ow_sale.vn desc); -- mvd 7->6; 1->8; 1->9; 5,7->10; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 3 preceding and current row ); -- mvd 1->5; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 4 preceding and current row ), +win2 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.cn order by ow_sale.pn desc); -- mvd 1->4; 3,6,7,1->5; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc+ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 3 preceding and 0 following ); -- mvd 3->2; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc-ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn+ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn/ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.qty*ow_sale.cn) preceding and floor(ow_sale.cn/ow_sale.qty) following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 5->4; 5->6; 8->7; 8->9; 8->10; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn/ow_sale.cn),floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 1 preceding and unbounded following ); -- mvd 1->5; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(order by ow_sale.vn asc range between 0 preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 0 preceding and unbounded following ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.vn desc), +win4 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.vn desc); -- mvd 4->3; 4->5; 7->6; 4->8; 7->9; 4,11->10; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and current row ); -- mvd 4->3; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and current row ), +win2 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.cn order by ow_sale.pn asc); -- mvd 1->3; 1->4; 6,7,1->5; 6,7,1->8; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn*ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and floor(ow_sale.prc-ow_sale.prc) following ); -- mvd 3->2; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty+ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and floor(ow_sale.cn+ow_sale.prc) following ), +win2 as (order by ow_sale.cn desc); -- mvd 5->4; 5->6; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc),floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and unbounded following ); -- mvd 1->4; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn-ow_sale.prc),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn/ow_sale.pn) as int),cast (floor(ow_sale.qty/ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty+ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and unbounded following ), +win2 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc), +win4 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 3->2; 5,3->4; 5,3->6; 8->7; 8->9; 8->10; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn-ow_sale.qty),floor(ow_sale.prc*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 2 following and floor(ow_sale.prc) following ); -- mvd 4->3; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc*ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.vn+ow_sale.prc) following and unbounded following ); -- mvd 5->4; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn*ow_sale.cn),floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.cn/ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn/ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 4 following and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 3->5; 3,2,7->6; 7->8; 7->9; 3,2,7->10; 3,2,7->11; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc+ow_sale.qty),floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows unbounded preceding ); -- mvd 6,7->5; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc/ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.pn asc rows unbounded preceding ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn order by ow_sale.pn asc), +win4 as (order by ow_sale.cn desc); -- mvd 1->2; 4->3; 4->5; 7,8,1->6; 4->9; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows 0 preceding ), +win2 as (order by ow_sale.pn asc); -- mvd 3->5; 3->6; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows current row ), +win2 as (order by ow_sale.cn desc); -- mvd 2->7; 2->8; 2->9; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and 6 preceding ); -- mvd 1->2; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn*ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn-ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and 4 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and 4 preceding ); -- mvd 4->5; 4->6; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc/ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 5->4; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn),floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc rows between unbounded preceding and 4 following ); -- mvd 2->4; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.prc*ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.cn desc rows between unbounded preceding and 2 following ), +win2 as (order by ow_sale.ord, ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,4->2; 6->5; 6->7; 3->8; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc),floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 4,1->5; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn/ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.cn) as int),cast (floor(ow_sale.prc/ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.vn asc), +win3 as (partition by ow_sale.qty,ow_sale.pn order by ow_sale.cn asc), +win4 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 1->2; 4->3; 1,6,7->5; 9,1,7->8; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between floor(ow_sale.prc) preceding and 3 preceding ); -- mvd 3,4->2; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn-ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 8 preceding and current row ); -- mvd 1->2; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn/ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.prc) as int),cast (floor(ow_sale.pn+ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.prc) preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.vn asc), +win3 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc); -- mvd 1->2; 4->3; 6,7,4->5; 4->8; 4->9; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc*ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.vn asc rows between 0 preceding and floor(ow_sale.qty*ow_sale.cn) following ); -- mvd 3,4->2; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn*ow_sale.pn),floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc rows between 1 preceding and floor(ow_sale.cn+ow_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc rows between 1 preceding and floor(ow_sale.cn+ow_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc rows between 1 preceding and floor(ow_sale.cn+ow_sale.cn) following ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.cn asc); -- mvd 6,1->5; 6,1->7; 6,1->8; 10->9; 10->11; 10,1->12; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn+ow_sale.pn),floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between 6 preceding and unbounded following ); -- mvd 3->2; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between 4 preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,4->2; 3,4->5; 7,3,1,4->6; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn-ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc rows between current row and current row ); -- mvd 6->5; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn+ow_sale.vn),floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between current row and current row ); -- mvd 8->7; 8->9; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc rows between current row and 3 following ); -- mvd 1->2; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty/ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn-ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn*ow_sale.vn) as int),cast (floor(ow_sale.prc+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between current row and 1 following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc), +win4 as (partition by ow_sale.cn order by ow_sale.vn desc); -- mvd 1->2; 4->3; 4->5; 4->6; 8,4,9->7; 4,11->10; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty*ow_sale.cn),floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.vn asc rows between current row and unbounded following ); -- mvd 4,5->3; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty+ow_sale.cn) as int),cast (floor(ow_sale.cn*ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.pn asc); -- mvd 4->3; 4->5; 7,1,4,2,8->6; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc+ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.pn asc rows between 4 following and 6 following ); -- mvd 3,4->2; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn-ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.prc+ow_sale.pn) following and floor(ow_sale.pn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.prc+ow_sale.pn) following and floor(ow_sale.pn) following ), +win2 as (order by ow_sale.pn desc); -- mvd 2->5; 7->6; 2->8; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn-ow_sale.prc),floor(ow_sale.cn*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between floor(ow_sale.pn-ow_sale.pn) following and unbounded following ); -- mvd 3,2->5; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc/ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 2 following and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.cn desc); -- mvd 4->3; 4,6,7,2->5; 4,6,7,2->8; 4,6,7,2->9; + +-- REGR_SLOPE() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty*ow_sale.vn),floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.pn asc); -- mvd 1,2->5; + +-- REGR_SLOPE() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc-ow_sale.prc),floor(ow_sale.cn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.qty order by ow_sale.cn desc,ow_sale.pn desc,ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.cn desc,ow_sale.pn desc,ow_sale.vn asc); -- mvd 3,4,5,1->2; 3,4,5,1->6; 3,4,5,1->7; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.prc/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.vn asc range unbounded preceding ); -- mvd 3,5->4; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc+ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.qty/ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.cn asc range unbounded preceding ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc); -- mvd 6,3,1->5; 2,3,1->7; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn/ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.vn asc range floor(ow_sale.pn) preceding ); -- mvd 4,5,6->3; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc),floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc+ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.pn desc range 1 preceding ), +win2 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.vn desc), +win4 as (order by ow_sale.cn asc); -- mvd 3,4,5->2; 3,4,5->6; 3,8->7; 4->9; 3->10; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn+ow_sale.pn),floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.dt order by ow_sale.vn desc range current row ); -- mvd 5,6,1->4; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.pn asc range between unbounded preceding and 1 preceding ); -- mvd 2,6,7->5; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn/ow_sale.qty),floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(partition by ow_sale.dt order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty*ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc range between unbounded preceding and 4 preceding ), +win2 as (partition by ow_sale.dt order by ow_sale.pn asc), +win3 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc), +win4 as (partition by ow_sale.dt order by ow_sale.vn desc); -- mvd 3,4,1,5->2; 7,5->6; 7,5->8; 10,3,7,1,5->9; 7,4->11; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc*ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.qty order by ow_sale.cn asc range between unbounded preceding and current row ); -- mvd 1,3,4->2; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.qty order by ow_sale.pn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty+ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.qty order by ow_sale.pn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.qty order by ow_sale.pn asc range between unbounded preceding and current row ), +win2 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.vn asc), +win3 as (order by ow_sale.cn asc); -- mvd 2,5,6->4; 2,5,6->7; 2,5,6->8; 2,5,6->9; 1,5->10; 2->11; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.vn order by ow_sale.cn asc range between unbounded preceding and 4 following ); -- mvd 1,6,2,7,3->5; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.vn desc range between unbounded preceding and floor(ow_sale.prc+ow_sale.prc) following ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.dt order by ow_sale.cn desc); -- mvd 4,1->3; 6,7,4,1->5; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn),floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.vn order by ow_sale.cn asc range between unbounded preceding and unbounded following ); -- mvd 4,5,6,2->3; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.dt order by ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 7,3,8,9->6; 7,3,8,9->10; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn-ow_sale.pn),floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.pn asc range between floor(ow_sale.qty) preceding and floor(ow_sale.prc-ow_sale.prc) preceding ); -- mvd 2,5,3->4; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn*ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.cn order by ow_sale.pn desc range between floor(ow_sale.qty) preceding and current row ); -- mvd 7,2,1,8,3->6; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc+ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.qty order by ow_sale.cn asc range between floor(ow_sale.cn-ow_sale.cn) preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.vn order by ow_sale.cn desc), +win3 as (order by ow_sale.vn desc); -- mvd 4,1,5,6->3; 4,1,5,6->7; 4,1,5->8; 5->9; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.vn order by ow_sale.vn desc range between 3 preceding and floor(ow_sale.prc) following ); -- mvd 6,2,3,1,7->5; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn*ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn-ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.qty,ow_sale.qty order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.pn desc range between 2 preceding and 0 following ), +win2 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.qty order by ow_sale.pn desc), +win3 as (order by ow_sale.cn desc); -- mvd 2,5,4,3->7; 4,3->8; 4,3->9; 5->10; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn desc range between floor(ow_sale.cn) preceding and unbounded following ); -- mvd 6->5; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn),floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc*ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.vn order by ow_sale.vn desc range between floor(ow_sale.qty) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.qty*ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.vn desc range between floor(ow_sale.qty) preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 1,3->2; 1,3->4; 1,3->5; 1->6; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.pn desc range between current row and current row ); -- mvd 4,8->7; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc+ow_sale.prc),floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.qty,ow_sale.prc,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.vn asc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.qty,ow_sale.prc,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.vn asc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.prc,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.vn asc range between current row and current row ), +win2 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.qty order by ow_sale.cn asc), +win3 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.cn asc); -- mvd 4,1,5,2,6,7->3; 4,1,5,2,6,7->8; 4,1,5,2,6,7->9; 4,1,5,2,6,7->10; 4,5,6,7->11; 5,1,2->12; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn),floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.pn asc range between current row and unbounded following ); -- mvd 4,1,3->7; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn*ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.vn desc range between floor(ow_sale.vn+ow_sale.pn) following and floor(ow_sale.vn) following ); -- mvd 4,1->5; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn*ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn*ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc order by ow_sale.cn desc range between 4 following and 1 following ), +win2 as (partition by ow_sale.vn order by ow_sale.vn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,2,8->7; 5->9; 11->10; 3,2,8->12; 5->13; 11->14; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.cn asc range between 3 following and unbounded following ); -- mvd 5,1->4; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows unbounded preceding ); -- mvd 7->6; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc rows 9 preceding ); -- mvd 5->4; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn+ow_sale.pn),floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc,ow_sale.cn desc rows 0 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc,ow_sale.cn desc rows 0 preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.pn asc); -- mvd 6,7,4,3,2->5; 3->8; 2->9; 6,7,4,3,2->10; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows current row ); -- mvd 7,4,3->6; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows current row ); -- mvd 1,4->3; 1,4->5; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.qty) preceding ); -- mvd 1,3,4,5->2; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn/ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and 4 preceding ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.qty order by ow_sale.cn desc); -- mvd 3,6,1->5; 3,8,2,6,1->7; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty-ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows between unbounded preceding and current row ); -- mvd 3,4,5,6->2; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn/ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.vn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.qty order by ow_sale.vn desc); -- mvd 5,6->4; 2,8,1,5->7; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc,ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.vn) following ); -- mvd 7,8,2,1,9->6; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.vn asc rows between unbounded preceding and 1 following ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.cn desc); -- mvd 1,7,5,4->6; 2,3->8; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn*ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and unbounded following ); -- mvd 1,3,4->2; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.qty)) OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.vn asc rows between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn/ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.vn asc rows between unbounded preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.vn asc rows between unbounded preceding and unbounded following ); -- mvd 1,3,4,5,6->2; 1,3,4,5,6->7; 1,3,4,5,6->8; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc rows between 0 preceding and 8 preceding ); -- mvd 2,3->7; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc rows between floor(ow_sale.qty) preceding and current row ); -- mvd 4,1->3; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(partition by ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between 0 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc/ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between 0 preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 3,7,8,9,2->6; 3,7,8,9,2->10; 1->11; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn+ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between 5 preceding and floor(ow_sale.pn-ow_sale.cn) following ); -- mvd 2,7,1->6; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.qty),floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn*ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between 4 preceding and 0 following ), +win2 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 1,4->3; 4->5; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows between 2 preceding and unbounded following ); -- mvd 3,1,5->4; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn+ow_sale.qty),floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between floor(ow_sale.qty) preceding and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.cn asc); -- mvd 1,5,6->4; 1,8->7; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn*ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between current row and current row ); -- mvd 1,7,5,8->6; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn+ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc rows between current row and current row ), +win2 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.vn order by ow_sale.vn asc); -- mvd 8,1,3->7; 1,2,10,3->9; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.cn+ow_sale.cn),floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.cn asc rows between current row and floor(ow_sale.cn+ow_sale.qty) following ); -- mvd 5,3,1->4; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.cn desc rows between current row and unbounded following ); -- mvd 2,5,6,7->4; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc*ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between current row and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.pn asc); -- mvd 3,4,5->2; 3,4,5->6; 4,3,1->7; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn asc rows between 3 following and 1 following ); -- mvd 3,7,4->6; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.vn asc rows between floor(ow_sale.cn) following and unbounded following ); -- mvd 6,1,3,7->5; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn asc rows between floor(ow_sale.vn+ow_sale.vn) following and unbounded following ), +win2 as (order by ow_sale.vn desc); -- mvd 1->7; 1->8; + +-- REGR_SXX() function with NULL OVER() clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (); -- mvd 2->2; + +-- REGR_SXX() function with NULL OVER() clause in combination with other window functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn/ow_sale.qty) as int),cast (floor(ow_sale.cn/ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc*ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (), +win2 as (order by ow_sale.ord, ow_sale.vn asc), +win3 as (partition by ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc); -- mvd 5->5; 2->6; 2->7; 9,1->8; + +-- REGR_SXX() function with OVER() clause having ONLY PARTITION BY -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.pn); -- mvd 6,2,3->5; + +-- REGR_SXX() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.vn)) OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.pn), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.cn asc); -- mvd 8,2,3->7; 8->9; 8->10; 8->11; 8->12; 8->13; + +-- REGR_SXX() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc,ow_sale.vn asc); -- mvd 1,6->5; + +-- REGR_SXX() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.prc)) OVER(partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc), +win2 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 4->3; 6,4->5; 6,4->7; 4->8; 4->9; + +-- REGR_SXX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.vn*ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range unbounded preceding ); -- mvd 1->7; + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.qty order by ow_sale.vn desc), +win4 as (partition by ow_sale.prc order by ow_sale.vn desc); -- mvd 4->3; 6->5; 6->7; 6->8; 10,1,6->9; 12,1->11; + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn+ow_sale.cn),floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty*ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range floor(ow_sale.pn*ow_sale.pn) preceding ), +win2 as (partition by ow_sale.qty order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc), +win4 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc); -- mvd 3->2; 5,1->4; 3->6; 8,9,3->7; + +-- REGR_SXX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range current row ); -- mvd 3->2; + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ), +win2 as (partition by ow_sale.qty order by ow_sale.cn desc); -- mvd 2->4; 2->5; 2,1->6; + +-- REGR_SXX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn-ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and floor(ow_sale.prc/ow_sale.pn) preceding ); -- mvd 3->2; + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn-ow_sale.qty),floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty*ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and 4 preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 3->2; 5->4; + +-- REGR_SXX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc-ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and current row ); -- mvd 7->6; + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.vn asc); -- mvd 1->4; 2->5; + +-- REGR_SXX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn*ow_sale.cn) following ); -- mvd 4->3; + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.vn desc range between unbounded preceding and 1 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and 1 following ), +win2 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.pn desc), +win3 as (order by ow_sale.vn desc); -- mvd 4->6; 4->7; 4->8; 1,4,10->9; 4->11; + +-- REGR_SXX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between unbounded preceding and unbounded following ); -- mvd 1->3; + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(order by ow_sale.vn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn-ow_sale.vn) as int),cast (floor(ow_sale.qty+ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.vn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.qty) as int),cast (floor(ow_sale.prc*ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn asc), +win3 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 3->6; 3->7; 3->8; 3->9; 3->10; 1->11; + +-- REGR_SXX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 2 preceding and 0 preceding ); -- mvd 3->7; + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between floor(ow_sale.pn-ow_sale.cn) preceding and 0 preceding ), +win2 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.prc order by ow_sale.cn desc), +win3 as (order by ow_sale.pn desc); -- mvd 5->4; 2,5,1->6; 8->7; + +-- REGR_SXX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.pn-ow_sale.cn) preceding and current row ); -- mvd 1->5; + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc*ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 1 preceding and current row ); -- mvd 6->5; 6->7; + +-- REGR_SXX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty-ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 2 preceding and floor(ow_sale.pn) following ); -- mvd 4->3; + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn-ow_sale.prc),floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(order by ow_sale.cn asc range between 2 preceding and 4 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 2 preceding and 4 following ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.vn asc), +win4 as (order by ow_sale.vn desc), +win5 as (order by ow_sale.cn desc); -- mvd 3->2; 1->4; 1->5; 1->6; 3->7; 3->8; + +-- REGR_SXX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between floor(ow_sale.pn-ow_sale.cn) preceding and unbounded following ); -- mvd 3->2; + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn/ow_sale.cn),floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn-ow_sale.pn) as int),cast (floor(ow_sale.cn*ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 2 preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 3->2; 5->4; + +-- REGR_SXX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and current row ); -- mvd 3->5; + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty+ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.vn asc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.qty)) OVER(order by ow_sale.vn asc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between current row and current row ), +win2 as (order by ow_sale.cn asc); -- mvd 5->4; 5->6; 5->7; 1->8; + +-- REGR_SXX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn+ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and 3 following ); -- mvd 1->5; + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and floor(ow_sale.cn) following ), +win2 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc), +win3 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc); -- mvd 7->6; 3,2,7,1->8; 10,3,1->9; 10,3,1->11; + +-- REGR_SXX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between current row and unbounded following ); -- mvd 2->7; + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn+ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and unbounded following ), +win2 as (order by ow_sale.pn desc); -- mvd 2->4; 6->5; 6->7; + +-- REGR_SXX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between floor(ow_sale.vn+ow_sale.cn) following and floor(ow_sale.pn+ow_sale.cn) following ); -- mvd 4->3; + +-- REGR_SXX() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 4 following and unbounded following ); -- mvd 3->2; + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.vn)) OVER(order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.prc) following and unbounded following ), +win2 as (order by ow_sale.pn asc); -- mvd 1->5; 1->6; 1->7; + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc-ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows unbounded preceding ); -- mvd 4->3; + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows unbounded preceding ), +win2 as (partition by ow_sale.dt order by ow_sale.vn asc), +win3 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.vn order by ow_sale.cn desc); -- mvd 2,4->3; 6,4->5; 6,2,4->7; + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty+ow_sale.vn),floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.vn asc rows 4 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.vn asc rows 4 preceding ); -- mvd 1,3,4->2; 1,3,4->5; + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn+ow_sale.qty),floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows current row ); -- mvd 3->2; + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.prc+ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.pn desc rows current row ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,4->2; 1->5; 1->6; 1->7; + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn+ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc,ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.cn+ow_sale.vn) preceding ); -- mvd 2->4; + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc-ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and floor(ow_sale.cn/ow_sale.pn) preceding ), +win2 as (partition by ow_sale.vn order by ow_sale.pn asc); -- mvd 5,6->4; 2,6->7; + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn-ow_sale.cn),floor(ow_sale.pn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.vn asc rows between unbounded preceding and current row ); -- mvd 3,4,5->2; + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(partition by ow_sale.vn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.cn asc), +win3 as (partition by ow_sale.vn order by ow_sale.pn desc), +win4 as (partition by ow_sale.qty order by ow_sale.cn desc); -- mvd 4,7->6; 4,7->8; 2,4,1->9; 7,1->10; 7,1->11; 4,13->12; + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.vn) following ); -- mvd 2,1,7->6; + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn*ow_sale.pn),floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and 2 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and 2 following ), +win2 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->2; 3->4; 6,1,7->5; + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc,ow_sale.pn asc rows between unbounded preceding and unbounded following ); -- mvd 8,2,6->7; + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.cn order by ow_sale.cn asc); -- mvd 8->7; 8->9; 4->10; + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn+ow_sale.cn),floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between 9 preceding and 8 preceding ); -- mvd 2->5; + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn*ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn asc rows between 0 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.vn asc rows between 0 preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between 0 preceding and current row ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.qty order by ow_sale.cn asc); -- mvd 1->6; 1->7; 1->8; 10,11,3->9; 1->12; + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn*ow_sale.prc),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.cn asc rows between 8 preceding and 7 following ); -- mvd 2,6->5; + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn+ow_sale.cn),floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between current row and current row ); -- mvd 2->4; + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty*ow_sale.prc),floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.cn asc rows between current row and 8 following ); -- mvd 4->5; + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.cn desc rows between current row and unbounded following ); -- mvd 3,4->2; + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty),floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn+ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc rows between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 1,2->7; 9->8; + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn+ow_sale.qty),floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.pn desc rows between floor(ow_sale.prc*ow_sale.pn) following and 1 following ); -- mvd 3,8->7; + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.pn,ow_sale.prc,ow_sale.cn order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.prc,ow_sale.cn order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between floor(ow_sale.qty-ow_sale.qty) following and floor(ow_sale.vn/ow_sale.cn) following ), +win2 as (partition by ow_sale.pn,ow_sale.qty order by ow_sale.vn desc), +win3 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.cn order by ow_sale.pn asc), +win4 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->6; 8,5,3->7; 2,4,3->9; 2,4,3->10; 2,4,3->11; 2,1,4->12; + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty-ow_sale.cn),floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc,ow_sale.vn asc rows between 3 following and unbounded following ); -- mvd 3,4->2; + +-- REGR_SXX() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.pn +, +TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.prc) as int),cast (floor(ow_sale.pn+ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.pn,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.pn,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc,ow_sale.cn desc,ow_sale.pn asc), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc); -- mvd 4,5,1,6,2,7->3; 4,5,1,6,2,7->8; 7->9; 4,2,7->10; 4,2,7->11; 4,2,7->12; + +-- REGR_SXX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn/ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.qty order by ow_sale.pn asc range unbounded preceding ); -- mvd 6,7,2,1->5; + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.qty)) OVER(partition by ow_sale.vn,ow_sale.cn order by ow_sale.pn asc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.pn asc range unbounded preceding ), +win2 as (order by ow_sale.vn desc); -- mvd 4,5,2->3; 4,5,2->6; 5->7; 4,5,2->8; 5->9; + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn/ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.qty)) OVER(partition by ow_sale.cn order by ow_sale.cn desc range floor(ow_sale.prc) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.cn desc range floor(ow_sale.prc) preceding ), +win2 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.pn order by ow_sale.cn asc), +win3 as (partition by ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc); -- mvd 7->6; 7->8; 7,1,3->9; 11,4,3->10; + +-- REGR_SXX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.prc order by ow_sale.cn asc range current row ); -- mvd 5,3,6->4; + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.cn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.qty order by ow_sale.cn desc range current row ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc); -- mvd 5,1,2,6->4; 1,2->7; + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc+ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.prc order by ow_sale.cn asc range between unbounded preceding and 2 preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 3,1,4,5->2; 1->6; + +-- REGR_SXX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.pn asc range between unbounded preceding and current row ); -- mvd 3,4->2; + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty+ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc-ow_sale.vn)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn-ow_sale.vn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.pn order by ow_sale.cn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.vn desc); -- mvd 3,4,5->2; 3->6; 4->7; 4->8; 3->9; 4->10; + +-- REGR_SXX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.cn desc range between unbounded preceding and 1 following ); -- mvd 4,5,6->3; + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty),floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(partition by ow_sale.prc,ow_sale.vn order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.vn/ow_sale.vn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.vn/ow_sale.vn) following ); -- mvd 6,1,7->5; 6,1,7->8; 6,1,7->9; + +-- REGR_SXX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty),floor(ow_sale.vn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 4,5->3; + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(partition by ow_sale.dt order by ow_sale.cn desc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn desc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.dt order by ow_sale.cn desc); -- mvd 3,4->2; 3,4->5; 7->6; 7->8; 4,3,1,7->9; 4,3,1,7->10; + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty+ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.prc order by ow_sale.vn asc range between 0 preceding and 3 preceding ), +win2 as (order by ow_sale.pn desc), +win3 as (partition by ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc); -- mvd 6,7,8,1,9->5; 9->10; 9->11; 6,1->12; + +-- REGR_SXX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn/ow_sale.vn),floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.vn asc range between floor(ow_sale.pn) preceding and current row ); -- mvd 7,1->6; + +-- REGR_SXX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn-ow_sale.prc),floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.dt order by ow_sale.pn asc range between floor(ow_sale.vn+ow_sale.cn) preceding and 0 following ); -- mvd 6,8,9,10,3->7; + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn*ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.cn desc range between floor(ow_sale.prc) preceding and 2 following ), +win2 as (order by ow_sale.pn desc); -- mvd 2,1->4; 3->5; + +-- REGR_SXX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.cn desc range between 1 preceding and unbounded following ); -- mvd 2,3->5; + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc/ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn*ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.vn desc range between floor(ow_sale.cn) preceding and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.cn desc), +win3 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc); -- mvd 3,4->2; 1,6,4->5; 8,1,3,4->7; 8,1,3,4->9; 3,4->10; + +-- REGR_SXX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn+ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.pn asc range between current row and current row ); -- mvd 5,1->4; + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.vn order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.cn desc range between current row and current row ), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.cn order by ow_sale.pn desc), +win3 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.vn order by ow_sale.pn desc); -- mvd 5,2->4; 5,2,1,7->6; 2,1,9,7->8; 2,1,9,7->10; 5,2->11; + +-- REGR_SXX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc*ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn desc range between current row and 4 following ); -- mvd 1->4; + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty),floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.vn asc range between current row and 2 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty-ow_sale.pn) as int),cast (floor(ow_sale.qty*ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn-ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.cn)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.vn asc range between current row and 2 following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc); -- mvd 2,3,1,6->5; 2,3,1,6->7; 2->8; 2,3,6->9; 2,3,6->10; 2->11; + +-- REGR_SXX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn),floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.pn desc range between current row and unbounded following ); -- mvd 4,1->3; + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.pn order by ow_sale.vn asc range between current row and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn order by ow_sale.vn desc); -- mvd 5,2,3,6,1->4; 5,2,3,6,1->7; 3,1->8; + +-- REGR_SXX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty+ow_sale.pn),floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.cn desc range between floor(ow_sale.prc-ow_sale.prc) following and floor(ow_sale.pn) following ); -- mvd 8,9,1->7; + +-- REGR_SXX() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.qty order by ow_sale.cn asc range between floor(ow_sale.qty) following and unbounded following ); -- mvd 2,6,1,4->5; + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc/ow_sale.qty),floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc-ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt order by ow_sale.vn desc range between 1 following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.cn asc), +win4 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.vn desc); -- mvd 4,5,6->3; 1->7; 1->8; 10,1,5,2->9; 1->11; + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn*ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows unbounded preceding ); -- mvd 3,6,4,1->5; + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc rows unbounded preceding ), +win2 as (partition by ow_sale.qty,ow_sale.dt order by ow_sale.cn desc); -- mvd 1,6->5; 8,2,9->7; 8,2,9->10; + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn/ow_sale.pn),floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc*ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc rows 3 preceding ), +win2 as (order by ow_sale.ord, ow_sale.vn asc), +win3 as (order by ow_sale.pn desc); -- mvd 6,1,3->5; 1->7; 3->8; + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc rows current row ); -- mvd 4->3; + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty),floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.prc) preceding ); -- mvd 4,5->3; + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc/ow_sale.pn),floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc,ow_sale.pn asc rows between unbounded preceding and 4 preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.vn order by ow_sale.cn asc); -- mvd 1,6,2,7,8->5; 6->9; 6,2->10; + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between unbounded preceding and current row ); -- mvd 5,3,2,6->4; + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn/ow_sale.cn)) OVER(partition by ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.prc order by ow_sale.vn desc); -- mvd 4,5,1,6,7->3; 4,5,1,6,7->8; 2,1,7->9; + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty*ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.vn desc rows between unbounded preceding and 3 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.vn desc rows between unbounded preceding and 3 following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.cn asc); -- mvd 8,9,2,3->7; 8,2,3->10; 8,2,3->11; 8,9,2,3->12; + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn+ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between unbounded preceding and unbounded following ); -- mvd 4,2,1,5,6->3; + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.vn asc); -- mvd 5,2,6,3->4; 6->7; 6->8; 5,2,6,3->9; + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn),floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc rows between 8 preceding and floor(ow_sale.qty+ow_sale.vn) preceding ); -- mvd 3,4,5,6->2; + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.qty) preceding and 3 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.prc) as int),cast (floor(ow_sale.qty+ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.qty) preceding and 3 preceding ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.cn order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc), +win4 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc), +win5 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.cn asc); -- mvd 1,3,4->2; 1,3,4->5; 3,4->6; 8->7; 8,10->9; 4,3,10->11; + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between 0 preceding and current row ); -- mvd 6,7,4,1,8->5; + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn/ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc,ow_sale.vn asc rows between 5 preceding and 4 following ); -- mvd 5,6,7->4; + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc+ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.cn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc/ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows between floor(ow_sale.vn) preceding and floor(ow_sale.prc*ow_sale.qty) following ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.prc,ow_sale.vn order by ow_sale.vn desc), +win4 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,4,1,5->2; 3,4,1,5->6; 5->7; 5->8; 10,1->9; 4,3->11; + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.qty) preceding and unbounded following ); -- mvd 3,5,6,7,8->4; + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn-ow_sale.prc),floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.qty)) OVER(partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.pn) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.pn) preceding and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.vn asc), +win3 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc), +win4 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.cn asc); -- mvd 1,3->2; 1,3->4; 1,3,6->5; 8,3,6->7; 1,3->9; 8,1,11,3,6->10; + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn+ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.cn asc rows between current row and current row ); -- mvd 1,6->5; + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.qty)) OVER(partition by ow_sale.prc,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc rows between current row and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc rows between current row and current row ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.dt order by ow_sale.cn desc); -- mvd 6,7,8->5; 7,10,1,8->9; 7,10,1,8->11; 6,7,8->12; 6,7,8->13; + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.pn/ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty-ow_sale.vn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.cn asc rows between current row and 1 following ), +win2 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.pn desc), +win4 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.pn asc), +win5 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn desc); -- mvd 5,6,7,1->4; 9,5,6,7,3,1->8; 1->10; 6,5,1->11; 6,3->12; + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between current row and unbounded following ); -- mvd 5,2,1->4; + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn*ow_sale.cn)) OVER(partition by ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.pn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.pn asc rows between current row and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.cn desc); -- mvd 1,3->5; 1,3->6; 8,2,9->7; + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn*ow_sale.cn)) OVER(partition by ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows between 0 following and 0 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows between 0 following and 0 following ); -- mvd 3,1->6; 3,1->7; + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty+ow_sale.vn),floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.vn-ow_sale.vn) following and unbounded following ); -- mvd 1,7,8->6; + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc rows between floor(ow_sale.cn) following and unbounded following ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,4->2; 1->5; 4->6; + +-- REGR_SXY() function with NULL OVER() clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn/ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (); -- mvd 2->2; + +-- REGR_SXY() function with NULL OVER() clause in combination with other window functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (), +win2 as (partition by ow_sale.dt,ow_sale.qty order by ow_sale.pn asc), +win3 as (partition by ow_sale.pn order by ow_sale.vn asc); -- mvd 4->4; 6,7,2->5; 9,2->8; + +-- REGR_SXY() function with OVER() clause having ONLY PARTITION BY -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn); -- mvd 1->4; + +-- REGR_SXY() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.qty/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc); -- mvd 2->4; + +-- REGR_SXY() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn*ow_sale.qty),floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn*ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn/ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc); -- mvd 1->5; 1->6; 1->7; 2,3,1,4,9->8; 2,3,1,4,9->10; 2,3,1,4,9->11; + +-- REGR_SXY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty+ow_sale.qty),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range unbounded preceding ); -- mvd 4->3; + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn+ow_sale.pn) as int),cast (floor(ow_sale.pn+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range unbounded preceding ), +win2 as (partition by ow_sale.prc,ow_sale.cn order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 1->2; 4,5,1->3; 5->6; 4,5,1->7; 5->8; + +-- REGR_SXY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc),floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range floor(ow_sale.pn+ow_sale.qty) preceding ); -- mvd 5->4; + +-- REGR_SXY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range current row ); -- mvd 3->2; + +-- REGR_SXY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and floor(ow_sale.cn+ow_sale.qty) preceding ); -- mvd 3->2; + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn*ow_sale.qty)) OVER(order by ow_sale.vn asc range between unbounded preceding and floor(ow_sale.cn*ow_sale.vn) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and floor(ow_sale.cn*ow_sale.vn) preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 1->6; 4->7; 1->8; + +-- REGR_SXY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and current row ); -- mvd 6->5; + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn*ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.prc-ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty+ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and current row ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc), +win3 as (order by ow_sale.vn asc), +win4 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn desc); -- mvd 4->6; 1,3->7; 3->8; 3,4->9; 3->10; + +-- REGR_SXY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and 3 following ); -- mvd 3->4; + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.qty,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and 1 following ), +win2 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.prc,ow_sale.prc,ow_sale.qty order by ow_sale.cn desc); -- mvd 5->4; 2,5,3,7,8->6; + +-- REGR_SXY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn+ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 3->2; + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.vn desc); -- mvd 5->4; 5->6; 5,2->7; 5->8; 5->9; 5,2->10; + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between 0 preceding and floor(ow_sale.vn+ow_sale.prc) preceding ), +win2 as (order by ow_sale.pn desc); -- mvd 4->3; 6->5; + +-- REGR_SXY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 4 preceding and current row ); -- mvd 5->4; + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc*ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 1 preceding and current row ), +win2 as (partition by ow_sale.pn order by ow_sale.vn desc); -- mvd 2->7; 1,3->8; 1,3->9; + +-- REGR_SXY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 3 preceding and 0 following ); -- mvd 3->2; + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc/ow_sale.qty)) OVER(order by ow_sale.vn desc range between floor(ow_sale.pn/ow_sale.vn) preceding and 2 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn+ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.pn/ow_sale.vn) preceding and 2 following ), +win2 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.cn desc); -- mvd 3->2; 3->4; 6,7,1,3->5; 6,7,1,3->8; + +-- REGR_SXY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.qty-ow_sale.qty) preceding and unbounded following ); -- mvd 6->5; + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn+ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.cn+ow_sale.prc)) OVER(partition by ow_sale.vn order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.vn order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn-ow_sale.vn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 0 preceding and unbounded following ), +win2 as (partition by ow_sale.vn order by ow_sale.vn desc), +win3 as (partition by ow_sale.vn order by ow_sale.cn asc); -- mvd 2->5; 7->6; 7->8; 7->9; 2,7->10; 2,7->11; + +-- REGR_SXY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn-ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and current row ); -- mvd 1->5; + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn-ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc-ow_sale.prc)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.qty order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn/ow_sale.qty)) OVER(order by ow_sale.pn desc range between current row and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and current row ), +win2 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.qty order by ow_sale.cn desc), +win3 as (order by ow_sale.cn asc); -- mvd 5->4; 7,8,1,5->6; 7->9; 7->10; 7,8,1,5->11; 5->12; + +-- REGR_SXY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.qty*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and floor(ow_sale.vn+ow_sale.cn) following ); -- mvd 3->2; + +-- REGR_SXY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn+ow_sale.vn),floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between current row and unbounded following ); -- mvd 5->4; + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn+ow_sale.qty),floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.pn-ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(order by ow_sale.cn asc range between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 1->5; 7->6; 7->8; 7->9; 7->10; 1->11; + +-- REGR_SXY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 1 following and 3 following ); -- mvd 1->5; + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn+ow_sale.cn),floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn/ow_sale.pn)) OVER(order by ow_sale.pn asc range between 4 following and 2 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 4 following and 2 following ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.pn asc), +win4 as (partition by ow_sale.pn order by ow_sale.cn asc); -- mvd 1->5; 7->6; 1->8; 1->9; 11,1->10; 1->12; + +-- REGR_SXY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between 0 following and unbounded following ); -- mvd 3->4; + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn-ow_sale.qty),floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.prc/ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.pn) following and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.dt order by ow_sale.cn asc); -- mvd 1->4; 6->5; 6->7; 2,9,6->8; 6->10; + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty),floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.pn desc rows 9 preceding ); -- mvd 5,1,6->4; + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn/ow_sale.cn),floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows current row ); -- mvd 1->6; + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn-ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.prc) as int),cast (floor(ow_sale.prc+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.vn desc rows current row ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.cn asc), +win3 as (partition by ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc); -- mvd 3,4->2; 3,4,6->5; 3,4,6->7; 3,4,6->8; 3,4->9; 3,4->10; + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn-ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 6 preceding ); -- mvd 3->7; + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty*ow_sale.vn),floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn-ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc,ow_sale.pn desc rows between unbounded preceding and 4 preceding ), +win2 as (order by ow_sale.ord, ow_sale.vn desc), +win3 as (partition by ow_sale.dt order by ow_sale.cn desc); -- mvd 6,1->5; 3->7; 6,4->8; + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.vn order by ow_sale.pn desc), +win3 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.cn asc); -- mvd 3->5; 3,1->6; 8,3,1->7; 3,1->9; 8,3,1->10; 8,3,1->11; + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn+ow_sale.vn),floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between unbounded preceding and 9 following ); -- mvd 6->5; + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty+ow_sale.prc),floor(ow_sale.pn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn asc rows between unbounded preceding and 0 following ), +win2 as (partition by ow_sale.pn order by ow_sale.vn asc); -- mvd 1,2,4->3; 2,4->5; + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 4->7; + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty-ow_sale.pn),floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.pn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.cn asc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.cn,ow_sale.cn order by ow_sale.cn desc), +win3 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 3,4,1->2; 6,3,1->5; 8,3->7; + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.qty) preceding and floor(ow_sale.pn*ow_sale.cn) preceding ); -- mvd 1->2; + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn+ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 1 preceding and floor(ow_sale.vn) preceding ), +win2 as (order by ow_sale.pn asc); -- mvd 3->2; 5->4; + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.pn+ow_sale.prc) preceding and current row ); -- mvd 5->4; + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty-ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.cn*ow_sale.cn) preceding and current row ), +win2 as (partition by ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc); -- mvd 2->7; 9,5->8; 2->10; 9,5->11; 9,5->12; + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty-ow_sale.cn),floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.cn asc rows between floor(ow_sale.prc*ow_sale.pn) preceding and floor(ow_sale.cn+ow_sale.pn) following ); -- mvd 4->3; + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc+ow_sale.qty),floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc rows between floor(ow_sale.qty/ow_sale.pn) preceding and floor(ow_sale.pn) following ), +win2 as (order by ow_sale.vn desc); -- mvd 3,1->2; 5->4; + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between floor(ow_sale.cn) preceding and unbounded following ); -- mvd 2->5; + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn asc rows between floor(ow_sale.pn+ow_sale.vn) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.cn,ow_sale.prc order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn asc rows between floor(ow_sale.pn+ow_sale.vn) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn asc rows between floor(ow_sale.pn+ow_sale.vn) preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.prc order by ow_sale.vn desc), +win3 as (partition by ow_sale.prc,ow_sale.dt order by ow_sale.pn asc); -- mvd 2,5,6->4; 2,5,6->7; 9,2,5->8; 9,2,5->10; 2,5,6->11; 9,1,6->12; + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc rows between current row and current row ); -- mvd 1->6; + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows between current row and current row ), +win2 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.cn asc), +win3 as (order by ow_sale.pn desc); -- mvd 6,8->7; 10,11,8->9; 10,11,8->12; 10,11,8->13; 8->14; + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn+ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.prc order by ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty+ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between current row and 1 following ), +win2 as (partition by ow_sale.prc order by ow_sale.pn desc), +win3 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn asc); -- mvd 4->5; 7,8->6; 4->9; 7,8->10; 7,8->11; 4,2->12; + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty*ow_sale.vn),floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.vn desc rows between current row and unbounded following ); -- mvd 3,1->2; + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn+ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ), +win2 as (order by ow_sale.pn desc); -- mvd 1->2; 1->3; 1->4; + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc+ow_sale.prc),floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 3 following and floor(ow_sale.prc) following ); -- mvd 2->3; + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc/ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty-ow_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc*ow_sale.vn) as int),cast (floor(ow_sale.vn+ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between 4 following and 3 following ), +win2 as (partition by ow_sale.prc,ow_sale.prc order by ow_sale.vn desc), +win3 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 3->2; 5,1->4; 5,1->6; 8,9,1,10->7; + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty+ow_sale.prc),floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between 6 following and unbounded following ); -- mvd 3->2; + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc+ow_sale.pn),floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc rows between 3 following and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc), +win3 as (order by ow_sale.cn asc); -- mvd 4,5->3; 7,4,5->6; 7->8; + +-- REGR_SXY() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.pn order by ow_sale.cn asc,ow_sale.cn desc,ow_sale.cn asc); -- mvd 6,7,2,3,1->5; + +-- REGR_SXY() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn-ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn/ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.cn-ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.prc order by ow_sale.vn asc,ow_sale.cn desc), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,2,1,5->3; 2->6; 2,1->7; + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc+ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.pn asc range unbounded preceding ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.cn asc); -- mvd 4,2->3; 6,1,4->5; 4,2->7; 6,1,4->8; 6,1,4->9; 6,1,4->10; + +-- REGR_SXY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.qty order by ow_sale.cn desc range floor(ow_sale.cn) preceding ); -- mvd 2,4,5->3; + +-- REGR_SXY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.cn order by ow_sale.pn desc range current row ); -- mvd 1,3,4->2; + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.vn asc range current row ), +win2 as (order by ow_sale.cn asc), +win3 as (order by ow_sale.pn desc); -- mvd 6,4,2,1->5; 6->7; 1->8; 6->9; + +-- REGR_SXY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.prc order by ow_sale.pn asc range between unbounded preceding and floor(ow_sale.qty) preceding ); -- mvd 5,1,6,7->4; + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn*ow_sale.pn),floor(ow_sale.qty*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.vn*ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.vn order by ow_sale.cn desc range between unbounded preceding and 4 preceding ), +win2 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.prc order by ow_sale.pn desc), +win3 as (order by ow_sale.ord, ow_sale.vn desc), +win4 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 2,5,1,6->4; 8,2,9,6->7; 1->10; 2,5,1,6->11; 1->12; + +-- REGR_SXY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty-ow_sale.qty),floor(ow_sale.prc*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.qty order by ow_sale.pn desc range between unbounded preceding and current row ); -- mvd 6,7,1,3->5; + +-- REGR_SXY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty),floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.prc order by ow_sale.vn asc range between unbounded preceding and 2 following ); -- mvd 2,5,6,3->4; + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn+ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by ow_sale.ord, ow_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc-ow_sale.prc) as int),cast (floor(ow_sale.qty/ow_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.prc order by ow_sale.cn desc range between unbounded preceding and 2 following ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 6,3,2,1->5; 1->7; 1->8; 1->9; 6,3,2,4,1->10; 2->11; + +-- REGR_SXY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.vn order by ow_sale.cn desc range between unbounded preceding and unbounded following ); -- mvd 3,1,4,5,6->2; + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt order by ow_sale.vn desc range between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.dt order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,4->2; 6,3,4->5; 8->7; + +-- REGR_SXY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.pn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.vn order by ow_sale.pn asc range between floor(ow_sale.pn/ow_sale.vn) preceding and floor(ow_sale.pn) preceding ); -- mvd 5,3,6,7,1->4; + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.prc order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn+ow_sale.qty) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.dt order by ow_sale.cn asc range between floor(ow_sale.vn-ow_sale.vn) preceding and floor(ow_sale.vn) preceding ), +win2 as (partition by ow_sale.vn,ow_sale.prc order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 8,2,9,4,1->7; 8,2,9,4,1->10; 8,2,4->11; 8,2,4->12; 1->13; + +-- REGR_SXY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.pn asc range between 2 preceding and current row ); -- mvd 1,7->6; + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn+ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc+ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.vn desc range between 4 preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.qty order by ow_sale.pn desc), +win4 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc); -- mvd 1,5->4; 7->6; 9,10,7->8; 12,1,5,7->11; + +-- REGR_SXY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.prc order by ow_sale.vn asc range between 3 preceding and floor(ow_sale.vn) following ); -- mvd 5,1,6,2->4; + +-- REGR_SXY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc*ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.pn order by ow_sale.pn asc range between 0 preceding and unbounded following ); -- mvd 3,4->2; + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn+ow_sale.prc),floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.vn order by ow_sale.cn asc range between floor(ow_sale.prc+ow_sale.pn) preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.vn order by ow_sale.vn desc); -- mvd 1,4,2,5->3; 4,1,2,5->6; + +-- REGR_SXY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc*ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.vn asc range between current row and current row ); -- mvd 5,6,2->4; + +-- REGR_SXY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn-ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.vn desc range between current row and floor(ow_sale.qty) following ); -- mvd 1,8->7; + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc),floor(ow_sale.prc*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt order by ow_sale.pn asc range between current row and 3 following ), +win2 as (order by ow_sale.cn asc); -- mvd 3,4,5->2; 4->6; 4->7; + +-- REGR_SXY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.vn desc range between current row and unbounded following ); -- mvd 6,1,2,4->5; + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn*ow_sale.pn),floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn desc range between current row and unbounded following ); -- mvd 1->5; 1->6; + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn*ow_sale.cn),floor(ow_sale.pn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.pn asc range between floor(ow_sale.prc) following and floor(ow_sale.vn-ow_sale.cn) following ), +win2 as (order by ow_sale.cn desc), +win3 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.pn order by ow_sale.vn asc), +win4 as (order by ow_sale.pn desc); -- mvd 3,1->2; 5->4; 5,7,1->6; 1->8; 1->9; 5,7,1->10; + +-- REGR_SXY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.cn,ow_sale.dt order by ow_sale.cn asc range between 0 following and unbounded following ); -- mvd 3,4->2; + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty+ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty/ow_sale.cn) as int),cast (floor(ow_sale.vn*ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn desc range between floor(ow_sale.vn*ow_sale.cn) following and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 4->7; 4,5->8; 4->9; 4->10; + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn+ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc rows unbounded preceding ); -- mvd 4,5,6,1->3; + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty),floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn/ow_sale.cn) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn asc rows unbounded preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 5,6,7,3->4; 6->8; + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc rows 6 preceding ); -- mvd 3,4,5,6->2; + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc rows floor(ow_sale.qty) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc rows floor(ow_sale.qty) preceding ), +win2 as (order by ow_sale.cn desc); -- mvd 1,4->3; 1,4->5; 2->6; + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty+ow_sale.vn),floor(ow_sale.cn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.pn asc rows current row ); -- mvd 1,6->5; + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn-ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows between unbounded preceding and 7 preceding ); -- mvd 3,4,1->2; + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.prc,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows between unbounded preceding and current row ); -- mvd 4,1,3,6,7->5; + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.pn asc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.dt order by ow_sale.cn asc), +win3 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.vn order by ow_sale.vn desc); -- mvd 5,2,1,6->4; 5,2,1,6->7; 5,9,6->8; 5,9,6->10; 12,5,1->11; + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.cn) following ); -- mvd 2,3,4,1->5; + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn/ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between unbounded preceding and floor(ow_sale.vn) following ), +win2 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.pn order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3,4,5,1->2; 3,4,7->6; 3,4,7->8; 4->9; + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn+ow_sale.cn),floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between unbounded preceding and unbounded following ); -- mvd 3,1,6,7->5; + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn+ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc+ow_sale.cn) as int),cast (floor(ow_sale.vn/ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc,ow_sale.pn asc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.ord, ow_sale.pn desc), +win4 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 4,5,2,6->3; 2->7; 6->8; 2->9; + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn*ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc,ow_sale.cn asc rows between floor(ow_sale.pn) preceding and 9 preceding ); -- mvd 1,8,5->7; + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn-ow_sale.pn),floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.pn desc rows between 0 preceding and floor(ow_sale.prc) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn*ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.pn desc rows between 0 preceding and floor(ow_sale.prc) preceding ), +win2 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.qty,ow_sale.pn order by ow_sale.vn asc), +win3 as (partition by ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc); -- mvd 1,3,4->6; 1,3,4->7; 1,3,4->8; 2,1,3,10,4->9; 1,10,4->11; + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn+ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc rows between 1 preceding and current row ); -- mvd 5,4,1->7; + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn/ow_sale.qty),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(partition by ow_sale.prc,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.cn desc rows between floor(ow_sale.vn/ow_sale.cn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.prc+ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.cn desc rows between floor(ow_sale.vn/ow_sale.cn) preceding and current row ), +win2 as (order by ow_sale.vn asc), +win3 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 6,7,8,4->5; 6,7,8,4->9; 8->10; 4->11; + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn/ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.vn asc rows between 8 preceding and floor(ow_sale.cn) following ); -- mvd 6,7->5; + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows between 0 preceding and 2 following ), +win2 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.cn desc); -- mvd 1,3->7; 9,1,2,5,4,3->8; 9,1,2,5,4,3->10; 9,1,2,5,4,3->11; + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.pn desc rows between 0 preceding and unbounded following ); -- mvd 4,1,2->3; + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.qty+ow_sale.pn),floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn*ow_sale.vn) as int),cast (floor(ow_sale.qty*ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn/ow_sale.pn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.prc,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between floor(ow_sale.prc*ow_sale.pn) preceding and unbounded following ), +win2 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.qty order by ow_sale.cn desc), +win3 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc), +win4 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 6,7,8,1->5; 6,7,8,1->9; 7,4->10; 6,8,1->11; 7->12; + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc rows between current row and current row ); -- mvd 2,6,7,1->5; + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.dt,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc rows between current row and 1 following ); -- mvd 4,6,7,1->5; + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc+ow_sale.vn) as int),cast (floor(ow_sale.qty+ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn asc rows between current row and 3 following ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc); -- mvd 5,3->4; 5,3->6; + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.pn),floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn asc rows between current row and unbounded following ); -- mvd 2,3,1->4; + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.prc/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn/ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.pn asc); -- mvd 2,7,3->6; 2,7,3->8; 7,10,11,3->9; 7,10,11,3->12; 7,10,11,3->13; 7,10,11,3->14; + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.dt,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.cn asc rows between floor(ow_sale.qty) following and 9 following ); -- mvd 1,6,7->5; + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by ow_sale.cn,ow_sale.pn order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.cn,ow_sale.pn order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc rows between floor(ow_sale.vn+ow_sale.vn) following and floor(ow_sale.vn+ow_sale.vn) following ), +win2 as (partition by ow_sale.cn,ow_sale.pn order by ow_sale.vn desc); -- mvd 6,7,8->5; 3,7,8->9; 3,7,8->10; 3,7,8->11; + +-- REGR_SXY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc-ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc,ow_sale.cn desc rows between 0 following and unbounded following ); -- mvd 4,2,1->5; + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(ow_sale.prc-ow_sale.cn),floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn desc rows between floor(ow_sale.qty) following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.cn desc rows between floor(ow_sale.qty) following and unbounded following ), +win2 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.vn asc), +win3 as (partition by ow_sale.vn order by ow_sale.pn desc); -- mvd 2,7,5,1->6; 7,5->8; 2,7,5,1->9; 2,7,5,1->10; 5,1->11; + +-- REGR_SYY() function with NULL OVER() clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (); -- mvd 4->4; + +-- REGR_SYY() function with NULL OVER() clause in combination with other window functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc*ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.pn order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn-ow_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (), +win2 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.cn desc); -- mvd 4->4; 6,3,2->5; 6,3,2->7; 6,3,2->8; 6,3,2->9; + +-- REGR_SYY() function with OVER() clause having ONLY PARTITION BY -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt); -- mvd 1,6->7; + +-- REGR_SYY() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty+ow_sale.pn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn-ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.cn), +win2 as (partition by ow_sale.vn order by ow_sale.cn asc), +win3 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn asc); -- mvd 3,4->2; 3,1->5; 7,1->6; + +-- REGR_SYY() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty*ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc); -- mvd 1->5; + +-- REGR_SYY() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +, +TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.pn desc,ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc,ow_sale.vn asc); -- mvd 3,4->2; 3,4->5; 3,4->6; 3,4->7; 3,4->8; 3,4->9; + +-- REGR_SYY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ); -- mvd 4->3; + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range unbounded preceding ), +win2 as (order by ow_sale.pn desc); -- mvd 1->7; 4->8; + +-- REGR_SYY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn-ow_sale.cn),floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range floor(ow_sale.cn/ow_sale.qty) preceding ); -- mvd 2->5; + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range 1 preceding ), +win2 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.cn asc), +win3 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc), +win4 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->2; 5,1,6->4; 5,1,6->7; 5,1,6,3->8; 5,1,6->9; 5->10; + +-- REGR_SYY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range current row ); -- mvd 3->2; + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty-ow_sale.vn),floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range current row ), +win2 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc); -- mvd 3->2; 3,5,1->4; + +-- REGR_SYY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between unbounded preceding and 2 preceding ); -- mvd 5->4; + +-- REGR_SYY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and current row ); -- mvd 3->5; + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn-ow_sale.qty),floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty-ow_sale.cn) as int),cast (floor(ow_sale.pn+ow_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.ord, ow_sale.vn asc), +win3 as (order by ow_sale.pn asc); -- mvd 2->4; 2->5; 7->6; + +-- REGR_SYY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.prc*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between unbounded preceding and floor(ow_sale.qty) following ); -- mvd 4->3; + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn/ow_sale.vn),floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between unbounded preceding and floor(ow_sale.pn) following ), +win2 as (order by ow_sale.cn desc); -- mvd 4->3; 6->5; + +-- REGR_SYY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn+ow_sale.qty),floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between unbounded preceding and unbounded following ); -- mvd 3->2; + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty+ow_sale.prc) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.vn asc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.ord, ow_sale.vn asc), +win3 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.vn desc), +win4 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.cn desc), +win5 as (order by ow_sale.vn desc); -- mvd 2->4; 2->5; 2->6; 8,1,2->7; 10,11,2,1,3->9; 2->12; + +-- REGR_SYY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn/ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between 0 preceding and floor(ow_sale.cn) preceding ); -- mvd 1->2; + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn-ow_sale.pn),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.prc/ow_sale.cn) preceding and floor(ow_sale.pn*ow_sale.prc) preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (order by ow_sale.cn asc), +win4 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.dt order by ow_sale.cn asc); -- mvd 8->7; 8->9; 2->10; 1,2,8->11; + +-- REGR_SYY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between floor(ow_sale.pn-ow_sale.vn) preceding and current row ); -- mvd 1->4; + +-- REGR_SYY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn*ow_sale.pn),floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 0 preceding and floor(ow_sale.cn) following ); -- mvd 1->7; + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn*ow_sale.prc),floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between floor(ow_sale.cn/ow_sale.vn) preceding and 0 following ), +win2 as (order by ow_sale.vn asc); -- mvd 1->4; 1->5; 1->6; 1->7; + +-- REGR_SYY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between floor(ow_sale.qty+ow_sale.qty) preceding and unbounded following ); -- mvd 1->3; + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc),floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc+ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.qty order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between 3 preceding and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt,ow_sale.qty order by ow_sale.vn asc), +win3 as (order by ow_sale.cn desc); -- mvd 4->3; 2,4,6,7->5; 2,4,6,7->8; 2,4,6,7->9; 4->10; + +-- REGR_SYY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and current row ); -- mvd 5->4; + +-- REGR_SYY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.cn desc range between current row and floor(ow_sale.vn) following ); -- mvd 2->3; + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn*ow_sale.qty) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.ord, ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.cn asc range between current row and floor(ow_sale.prc) following ), +win2 as (order by ow_sale.ord, ow_sale.cn desc), +win3 as (order by ow_sale.vn desc); -- mvd 3->4; 3->5; 3->6; 1->7; 1->8; 3->9; + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn+ow_sale.prc) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(order by ow_sale.pn asc range between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.pn asc range between current row and unbounded following ), +win2 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc); -- mvd 3->2; 5,6,3->4; 3->7; + +-- REGR_SYY() function with ONLY order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn*ow_sale.prc),floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.vn desc range between 3 following and unbounded following ); -- mvd 1->4; + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc/ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(order by ow_sale.pn desc range between 3 following and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.pn desc range between 3 following and unbounded following ); -- mvd 3->2; 3->4; 3->5; + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc rows unbounded preceding ); -- mvd 3->2; + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.dt,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc*ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.pn asc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc*ow_sale.pn) as int),cast (floor(ow_sale.prc+ow_sale.prc) as int),NULL) OVER(win5),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows unbounded preceding ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.prc order by ow_sale.pn desc), +win4 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.pn,ow_sale.dt order by ow_sale.pn asc), +win5 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 6->5; 3->7; 6->8; 10,6->9; 1,12,6->11; 14->13; + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn+ow_sale.vn),floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.vn asc rows floor(ow_sale.prc+ow_sale.vn) preceding ); -- mvd 7,8->6; + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.pn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn) as int),cast (floor(ow_sale.vn+ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn/ow_sale.qty) as int),cast (floor(ow_sale.pn*ow_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty-ow_sale.cn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows floor(ow_sale.vn) preceding ), +win2 as (order by ow_sale.ord, ow_sale.cn asc), +win3 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc), +win4 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 3->6; 5->7; 3,4,2->8; 5->9; + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.cn asc rows current row ); -- mvd 3,1->5; + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty-ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows current row ), +win2 as (order by ow_sale.cn desc); -- mvd 3,1->2; 3,1->4; 3,1->5; 3,1->6; 8->7; + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn/ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and 1 preceding ); -- mvd 1->4; + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and current row ); -- mvd 2->5; + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn-ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc,ow_sale.pn asc rows between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc,ow_sale.pn asc rows between unbounded preceding and current row ); -- mvd 7,8->6; 7,8->9; 7,8->10; + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and floor(ow_sale.qty) following ); -- mvd 5->4; + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.cn order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and floor(ow_sale.vn+ow_sale.cn) following ), +win2 as (partition by ow_sale.cn order by ow_sale.vn desc), +win3 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc); -- mvd 1->2; 1,4->3; 1,4->5; 7,4,8->6; 1,4->9; + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc+ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between unbounded preceding and unbounded following ); -- mvd 7->6; + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn+ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.cn asc rows between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.cn desc), +win3 as (order by ow_sale.pn desc); -- mvd 4,1->3; 4->5; 7->6; + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.pn asc rows between 0 preceding and 7 preceding ); -- mvd 3,4->2; + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn*ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between 1 preceding and floor(ow_sale.prc) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between 1 preceding and floor(ow_sale.prc) preceding ); -- mvd 6->5; 6->7; + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between floor(ow_sale.pn-ow_sale.vn) preceding and current row ); -- mvd 4->3; + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between 4 preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between 4 preceding and current row ), +win2 as (order by ow_sale.vn desc); -- mvd 3,4->2; 3,4->5; 4->6; 3,4->7; + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc),floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc-ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows between floor(ow_sale.cn/ow_sale.vn) preceding and floor(ow_sale.prc) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows between floor(ow_sale.cn/ow_sale.vn) preceding and floor(ow_sale.prc) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.qty*ow_sale.qty) as int),cast (floor(ow_sale.vn+ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc rows between floor(ow_sale.cn/ow_sale.vn) preceding and floor(ow_sale.prc) following ), +win2 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc); -- mvd 2,4->3; 2,4->5; 2,4->6; 8,2,9,4->7; + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn-ow_sale.pn),floor(ow_sale.pn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc) as int),cast (floor(ow_sale.prc+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc+ow_sale.cn)) OVER(partition by ow_sale.dt order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc,ow_sale.cn desc rows between 1 preceding and unbounded following ), +win2 as (partition by ow_sale.dt order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.vn asc); -- mvd 3->2; 3,5->4; 1->6; 3,5->7; 3,5->8; + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn*ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc rows between current row and current row ); -- mvd 4->6; + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc rows between current row and current row ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.vn asc), +win4 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,4->2; 3->5; 7,8,1,3->6; 8,3,4->9; 7,8,1,3->10; + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc rows between current row and 9 following ); -- mvd 4->5; + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc),floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between current row and unbounded following ); -- mvd 2->3; + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.cn)) OVER(partition by ow_sale.prc,ow_sale.prc,ow_sale.pn order by ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.prc,ow_sale.prc,ow_sale.pn order by ow_sale.vn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.pn desc rows between current row and unbounded following ), +win2 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.pn order by ow_sale.vn asc); -- mvd 2,3->5; 4,7,3->6; 4,7,3->8; 4,7,3->9; + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn+ow_sale.prc),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc rows between 7 following and 5 following ); -- mvd 5->4; + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn+ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc rows between 4 following and floor(ow_sale.cn) following ), +win2 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 3,4->2; 4->5; + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn*ow_sale.vn),floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between 4 following and unbounded following ); -- mvd 1->4; + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn+ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty) as int),cast (floor(ow_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.qty+ow_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between floor(ow_sale.pn) following and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.vn asc), +win3 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc), +win4 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 8,4->7; 8,4->9; 8,11,4,1->10; 1->12; 8,11,4,1->13; 8,4->14; + +-- REGR_SYY() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.pn asc,ow_sale.cn desc,ow_sale.vn desc); -- mvd 5,6,7->4; + +-- REGR_SYY() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc,ow_sale.pn desc,ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc,ow_sale.pn desc,ow_sale.cn asc); -- mvd 4,1,5->3; 4,1,5->6; 4,1,5->7; 4,1,5->8; + +-- REGR_SYY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.qty,ow_sale.dt order by ow_sale.pn asc range unbounded preceding ); -- mvd 3,4,5,1,6->2; + +-- REGR_SYY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.prc order by ow_sale.pn desc range 3 preceding ); -- mvd 3,4,5,6->2; + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn)) OVER(partition by ow_sale.qty order by ow_sale.pn asc range 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc*ow_sale.vn)) OVER(partition by ow_sale.qty order by ow_sale.pn asc range 1 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.pn asc range 1 preceding ); -- mvd 2,3->7; 2,3->8; 2,3->9; + +-- REGR_SYY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.vn desc range current row ); -- mvd 3,5->4; + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn-ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.vn order by ow_sale.pn asc range current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.vn order by ow_sale.pn asc range current row ), +win2 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.dt order by ow_sale.cn desc); -- mvd 7,8,1,4->6; 7,8,1,4->9; 8,7,2,4->10; 7,8,1,4->11; + +-- REGR_SYY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.cn asc range between unbounded preceding and 4 preceding ); -- mvd 3,4->2; + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.vn desc range between unbounded preceding and 2 preceding ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.vn order by ow_sale.cn desc); -- mvd 4,1,5->3; 7,4,1,5->6; + +-- REGR_SYY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 2,3,1,5->4; + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc-ow_sale.vn),floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and current row ), +win2 as (order by ow_sale.cn asc); -- mvd 5->4; 5->6; + +-- REGR_SYY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.vn desc range between unbounded preceding and 1 following ); -- mvd 1,2->5; + +-- REGR_SYY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc+ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.prc order by ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 1,8->7; + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty/ow_sale.cn),floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc)) OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.prc/ow_sale.vn)) OVER(order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.cn asc range between unbounded preceding and unbounded following ), +win2 as (order by ow_sale.cn desc); -- mvd 2,5,6->4; 2->7; 2->8; 2->9; 2,5,6->10; + +-- REGR_SYY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.vn asc range between floor(ow_sale.vn) preceding and 0 preceding ); -- mvd 4,5,2->3; + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn*ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc-ow_sale.vn) as int),cast (floor(ow_sale.prc+ow_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.dt order by ow_sale.cn desc range between floor(ow_sale.vn) preceding and 2 preceding ), +win2 as (partition by ow_sale.pn order by ow_sale.pn desc), +win3 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc), +win4 as (order by ow_sale.cn desc); -- mvd 6,7,4,2,1->5; 1->8; 4,10,1->9; 4->11; 4->12; 4->13; + +-- REGR_SYY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.pn desc range between 2 preceding and current row ); -- mvd 4->3; + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty*ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn+ow_sale.qty) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.cn asc range between floor(ow_sale.pn+ow_sale.prc) preceding and current row ), +win2 as (order by ow_sale.cn asc), +win3 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc), +win4 as (order by ow_sale.pn desc); -- mvd 1->4; 1->5; 7,1,8->6; 1->9; 8->10; + +-- REGR_SYY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.cn asc range between 4 preceding and floor(ow_sale.qty) following ); -- mvd 4,2,1,5->3; + +-- REGR_SYY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.cn asc range between 1 preceding and unbounded following ); -- mvd 3,4,5->2; + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty-ow_sale.cn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.pn desc range between floor(ow_sale.pn) preceding and unbounded following ), +win2 as (order by ow_sale.cn asc); -- mvd 4,5->3; 4->6; 4->7; 4->8; 4->9; + +-- REGR_SYY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn-ow_sale.vn),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.dt order by ow_sale.vn asc range between current row and current row ); -- mvd 1,6,7->5; + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc),floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn*ow_sale.cn) as int),cast (floor(ow_sale.qty/ow_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.pn asc range between current row and current row ), +win2 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc); -- mvd 6,4->5; 8,1->7; + +-- REGR_SYY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn*ow_sale.pn),floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.pn asc range between current row and 4 following ); -- mvd 5,6,1->4; + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.qty*ow_sale.pn) as int),cast (floor(ow_sale.pn/ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.pn desc range between current row and floor(ow_sale.pn+ow_sale.qty) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.vn order by ow_sale.pn desc range between current row and floor(ow_sale.pn+ow_sale.qty) following ), +win2 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc); -- mvd 1,3,4,5->2; 1,3->6; 1,3,4,5->7; 1,3->8; 1,3,4,5->9; 1,3,4,5->10; + +-- REGR_SYY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc+ow_sale.vn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.vn asc range between current row and unbounded following ); -- mvd 4->3; + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn/ow_sale.qty),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.vn order by ow_sale.pn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.pn asc range between current row and unbounded following ), +win2 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.vn order by ow_sale.pn desc), +win3 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.pn order by ow_sale.pn desc); -- mvd 4,1->3; 6,7,8,9,1->5; 8,1->10; 6,7,8,9,1->11; + +-- REGR_SYY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc-ow_sale.qty),floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.pn desc range between 3 following and 2 following ); -- mvd 2,4->7; + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty+ow_sale.pn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.pn order by ow_sale.cn desc range between 0 following and floor(ow_sale.vn-ow_sale.cn) following ), +win2 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.cn desc), +win3 as (order by ow_sale.pn desc); -- mvd 4,1,2->3; 1,6,2->5; 1,6,2->7; 2->8; 4,1,2->9; + +-- REGR_SYY() function with partition by and order by having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc),floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.pn order by ow_sale.pn desc range between floor(ow_sale.pn) following and unbounded following ); -- mvd 3,2,7->6; + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn),floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.vn order by ow_sale.vn desc range between floor(ow_sale.prc) following and unbounded following ), +win2 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.pn asc); -- mvd 4,8,1,2->7; 10,8,4,3,2->9; 10,8,4,3,2->11; + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn+ow_sale.vn),floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows unbounded preceding ); -- mvd 1,8,3->7; + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.vn) as int),cast (floor(ow_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.pn*ow_sale.pn) as int),cast (floor(ow_sale.cn-ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty*ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows unbounded preceding ), +win2 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.vn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 5,3,1->4; 7,3->6; 5->8; 5->9; 7,3->10; 5->11; + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn asc rows 2 preceding ); -- mvd 3,1->2; + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn+ow_sale.cn),floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows floor(ow_sale.vn) preceding ), +win2 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.pn asc), +win3 as (order by ow_sale.cn desc); -- mvd 5,6,2,1->4; 8,6,1->7; 6->9; + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc,ow_sale.pn desc rows current row ); -- mvd 1,6,5->7; + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.prc+ow_sale.vn) as int),cast (floor(ow_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by ow_sale.prc,ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.vn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.vn asc rows current row ), +win2 as (partition by ow_sale.prc,ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.vn desc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 2,7,8->6; 10,2,7,8,1->9; 2,7,8->11; 2,7,8->12; 2->13; 10,2,7,8,1->14; + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty-ow_sale.cn),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.pn desc rows between unbounded preceding and floor(ow_sale.qty) preceding ); -- mvd 1,2,8,4,6->7; + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.prc-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.prc+ow_sale.prc) as int),cast (floor(ow_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and 2 preceding ), +win2 as (order by ow_sale.ord, ow_sale.pn desc); -- mvd 6,3,7->5; 7->8; + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn+ow_sale.qty),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc rows between unbounded preceding and current row ); -- mvd 4,5,2,1->3; + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty),floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(MAX(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(ow_sale.cn/ow_sale.qty) as int),cast (floor(ow_sale.cn*ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc rows between unbounded preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.qty order by ow_sale.cn asc), +win3 as (order by ow_sale.ord, ow_sale.cn desc); -- mvd 6,1,3->5; 6,1,3->7; 1,9,4->8; 1->10; + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.vn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn/ow_sale.vn),floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc rows between unbounded preceding and 8 following ); -- mvd 7,1,3,8->6; + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn),floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(ow_sale.cn/ow_sale.cn) as int),cast (floor(ow_sale.pn+ow_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.vn)) OVER(order by ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.cn desc rows between unbounded preceding and 4 following ), +win2 as (order by ow_sale.pn asc), +win3 as (order by ow_sale.ord, ow_sale.cn asc); -- mvd 5,6,7,2,8->4; 8->9; 6->10; 8->11; + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.pn,ow_sale.prc,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn-ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(MAX(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by ow_sale.qty order by ow_sale.pn desc); -- mvd 2,8,1->7; 2,8,1->9; 2,8,1->10; 12,1->11; 2,8,1->13; + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty-ow_sale.qty),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.cn*ow_sale.qty) preceding and 0 preceding ); -- mvd 5,6,3,7->4; + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.prc),floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc,ow_sale.vn desc rows between 0 preceding and floor(ow_sale.vn) preceding ), +win2 as (partition by ow_sale.vn,ow_sale.dt order by ow_sale.vn desc); -- mvd 2,4,1->3; 2,4->5; + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.dt,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn-ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between 3 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc rows between 3 preceding and current row ), +win2 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.vn asc); -- mvd 2,1,6->5; 8->7; 2,1,6->9; 2,1,6->10; + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.qty-ow_sale.prc),floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc rows between floor(ow_sale.qty) preceding and 8 following ); -- mvd 1,6,4->5; + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn-ow_sale.pn),floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(order by ow_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win5),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc,ow_sale.cn asc,ow_sale.cn asc rows between 1 preceding and 0 following ), +win2 as (order by ow_sale.vn desc), +win3 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.cn desc), +win4 as (partition by ow_sale.cn,ow_sale.qty order by ow_sale.cn desc), +win5 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.vn desc); -- mvd 2,6,7,4->5; 9->8; 7,6,4->10; 6,1->11; 9->12; 6,9,4->13; + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn),floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn/ow_sale.vn)) OVER(partition by ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows between 0 preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by ow_sale.vn order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.cn asc rows between 0 preceding and unbounded following ), +win2 as (partition by ow_sale.vn order by ow_sale.cn desc), +win3 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.dt order by ow_sale.cn asc); -- mvd 3,4->2; 4,1->5; 3,4,7,1,8->6; 3,4->9; 4,1->10; 4,1->11; + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn-ow_sale.vn),floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc rows between current row and current row ); -- mvd 4,5,6->3; + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.vn desc rows between current row and current row ), +win2 as (order by ow_sale.cn asc); -- mvd 1,5,2,3,6->4; 1->7; 1->8; + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn/ow_sale.cn),floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows between current row and floor(ow_sale.cn-ow_sale.cn) following ); -- mvd 5,2,6->4; + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn-ow_sale.vn),floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc rows between current row and floor(ow_sale.qty-ow_sale.qty) following ), +win2 as (order by ow_sale.cn asc); -- mvd 8,9,1->7; 9->10; + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc,ow_sale.cn desc rows between current row and unbounded following ); -- mvd 1,8,2,9,5->7; + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.vn),floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.prc)) OVER(partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(ow_sale.qty)) OVER(partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ); -- mvd 5->4; 5->6; 5->7; + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn+ow_sale.cn),floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.vn desc rows between floor(ow_sale.pn) following and floor(ow_sale.prc*ow_sale.vn) following ); -- mvd 4,5->3; + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn/ow_sale.vn),floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.pn+ow_sale.pn)) OVER(partition by ow_sale.dt order by ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.cn) following and 3 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(ow_sale.qty*ow_sale.qty)) OVER(partition by ow_sale.dt order by ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.cn) following and 3 following ), +win2 as (partition by ow_sale.dt order by ow_sale.cn desc); -- mvd 4,1->3; 4,1->5; 4,2->6; 4,2->7; 4,1->8; 4,2->9; + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.cn+ow_sale.prc),floor(ow_sale.pn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between 8 following and unbounded following ); -- mvd 1,3,4->2; + +-- REGR_SYY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(ow_sale.pn*ow_sale.prc),floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.pn) following and unbounded following ), +win2 as (order by ow_sale.vn asc); -- mvd 3,4->2; 4->5; + +-- FIRST_VALUE() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc); -- mvd 3->7; + +-- FIRST_VALUE() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc); -- mvd 2,5->4; 2,5->6; 2,5->7; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc range unbounded preceding ); -- mvd 6->5; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn asc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn/ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.vn asc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn asc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.vn asc range unbounded preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc range unbounded preceding ); -- mvd 6->5; 6->7; 6->8; 6->9; 6->10; +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc range 2 preceding ); -- mvd 4->3; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc range 3 preceding ); -- mvd 7->6; 7->8; 7->9; 7->10; 7->11; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range current row ); -- mvd 4->5; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.cn asc range current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range current row ); -- mvd 3->2; 3->4; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range between unbounded preceding and floor(ow_sale.qty) preceding ); -- mvd 4->5; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and floor(ow_sale.vn) preceding ); -- mvd 3->2; 3->4; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and current row ); -- mvd 5->4; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.vn desc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn/ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc range between unbounded preceding and current row ); -- mvd 1->5; 1->6; 1->7; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.dt,ow_sale.dt,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between unbounded preceding and 0 following ); -- mvd 8->7; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn desc range between unbounded preceding and floor(ow_sale.prc) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between unbounded preceding and floor(ow_sale.prc) following ); -- mvd 1->4; 1->5; 1->6; 1->7; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and unbounded following ); -- mvd 3->2; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.cn desc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.cn desc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn desc range between unbounded preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between unbounded preceding and unbounded following ); -- mvd 6->5; 6->7; 6->8; 6->9; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range between floor(ow_sale.prc) preceding and 1 preceding ); -- mvd 5->4; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between floor(ow_sale.qty*ow_sale.prc) preceding and floor(ow_sale.pn-ow_sale.cn) preceding ); -- mvd 6->5; 6->7; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range between 4 preceding and current row ); -- mvd 4->6; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.cn asc range between floor(ow_sale.pn) preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range between floor(ow_sale.pn) preceding and current row ); -- mvd 4->3; 4->5; 4->6; 4->7; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between floor(ow_sale.vn) preceding and 0 following ); -- mvd 4->3; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.cn desc range between 3 preceding and floor(ow_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.cn desc range between 3 preceding and floor(ow_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn/ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.cn desc range between 3 preceding and floor(ow_sale.cn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between 3 preceding and floor(ow_sale.cn) following ); -- mvd 3->2; 3->4; 3->5; 3->6; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc range between 1 preceding and unbounded following ); -- mvd 3->2; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range between floor(ow_sale.qty) preceding and unbounded following ); -- mvd 2->7; 2->8; 2->9; 2->10; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc range between current row and current row ); -- mvd 6->5; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn desc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between current row and current row ); -- mvd 5->4; 5->6; 5->7; 5->8; 5->9; 5->10; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range between current row and 2 following ); -- mvd 6->5; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.cn desc range between current row and 0 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between current row and 0 following ); -- mvd 5->6; 5->7; 5->8; 5->9; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc range between current row and unbounded following ); -- mvd 5->4; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.cn desc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn desc range between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between current row and unbounded following ); -- mvd 6->5; 6->7; 6->8; 6->9; 6->10; 6->11; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between floor(ow_sale.cn*ow_sale.qty) following and 0 following ); -- mvd 7->6; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range between 1 following and floor(ow_sale.pn/ow_sale.cn) following ); -- mvd 3->2; 3->4; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range between 0 following and unbounded following ); -- mvd 3->2; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.prc,ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.vn desc range between 3 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.vn desc range between 3 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.vn desc range between 3 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc range between 3 following and unbounded following ); -- mvd 5->7; 5->8; 5->9; 5->10; 5->11; 5->12; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc rows unbounded preceding ); -- mvd 6->5; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty/ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc/ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows unbounded preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows unbounded preceding ); -- mvd 3->2; 3->4; 3->5; 3->6; 3->7; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc rows 1 preceding ); -- mvd 3->6; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn asc rows floor(ow_sale.prc/ow_sale.pn) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.cn desc,ow_sale.cn asc rows floor(ow_sale.prc/ow_sale.pn) preceding ); -- mvd 1,2->6; 1,2->7; 1,2->8; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc rows current row ); -- mvd 5->4; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn/ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows current row ); -- mvd 1->3; 1->4; 1->5; 1->6; 1->7; 1->8; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.pn desc rows between unbounded preceding and floor(ow_sale.prc-ow_sale.prc) preceding ); -- mvd 1,4->3; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and 1 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and 1 preceding ); -- mvd 3->5; 3->6; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 1->2; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and current row ); -- mvd 1,4->3; 1,4->5; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.pn asc rows between unbounded preceding and floor(ow_sale.qty) following ); -- mvd 1,2->4; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 1 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 1 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 1 following ); -- mvd 3->2; 3->4; 3->5; 3->6; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 4,5->3; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn*ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 3->4; 3->5; 3->6; 3->7; 3->8; 3->9; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.prc) preceding and floor(ow_sale.qty) preceding ); -- mvd 3->2; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.cn desc rows between 3 preceding and floor(ow_sale.prc+ow_sale.pn) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.cn desc rows between 3 preceding and floor(ow_sale.prc+ow_sale.pn) preceding ); -- mvd 3,1->4; 3,1->5; 3,1->6; 3,1->7; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between 3 preceding and current row ); -- mvd 4->7; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.qty,ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.pn+ow_sale.vn) preceding and current row ); -- mvd 4->7; 4->8; 4->9; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.qty+ow_sale.vn) preceding and floor(ow_sale.prc) following ); -- mvd 1->4; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn*ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.cn desc rows between 0 preceding and 4 following ); -- mvd 1,5->4; 1,5->6; 1,5->7; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.vn asc rows between 0 preceding and unbounded following ); -- mvd 2,7->6; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn/ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc,ow_sale.pn asc rows between 1 preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn/ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc,ow_sale.pn asc rows between 1 preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc,ow_sale.pn asc rows between 1 preceding and unbounded following ); -- mvd 6,7->5; 6,7->8; 6,7->9; 6,7->10; 6,7->11; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.vn asc,ow_sale.pn desc rows between current row and current row ); -- mvd 1,4,5->3; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.pn asc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.pn asc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn/ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.pn asc rows between current row and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.pn asc rows between current row and current row ); -- mvd 4,2->3; 4,2->5; 4,2->6; 4,2->7; 4,2->8; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between current row and floor(ow_sale.cn/ow_sale.qty) following ); -- mvd 4->5; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn*ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between current row and 0 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between current row and 0 following ); -- mvd 2->5; 2->6; 2->7; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.pn desc rows between current row and unbounded following ); -- mvd 3->2; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty/ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between current row and unbounded following ); -- mvd 1->7; 1->8; 1->9; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.pn asc rows between 1 following and 0 following ); -- mvd 3->2; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc,ow_sale.pn asc rows between 1 following and 2 following ); -- mvd 1,5,2->4; 1,5,2->6; 1,5,2->7; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.vn) following and unbounded following ); -- mvd 3->2; + +-- FIRST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between 1 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between 1 following and unbounded following ); -- mvd 1->2; 1->3; 1->4; 1->5; 1->6; 1->7; + +-- FIRST_VALUE() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc,ow_sale.pn asc); -- mvd 5,2,8->7; + +-- FIRST_VALUE() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.cn)) OVER(partition by ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc); -- mvd 3,4,1,5->2; 3,4,1,5->6; 3,4,1,5->7; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.cn desc range unbounded preceding ); -- mvd 1,3,4->2; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.qty)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc range unbounded preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.pn desc range unbounded preceding ); -- mvd 6,2,4->5; 6,2,4->7; 6,2,4->8; 6,2,4->9; 6,2,4->10; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc range floor(ow_sale.prc) preceding ); -- mvd 5,2,6->4; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn desc range 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn desc range 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn-ow_sale.prc)) OVER(partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn desc range 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.cn desc range 1 preceding ); -- mvd 5,2->4; 5,2->6; 5,2->7; 5,2->8; 5,2->9; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc range current row ); -- mvd 2,4,5->7; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(partition by ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.pn desc range current row ); -- mvd 5,6,2,1->4; 5,6,2,1->7; 5,6,2,1->8; 5,6,2,1->9; 5,6,2,1->10; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.vn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn/ow_sale.prc) preceding ); -- mvd 4,6->5; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc range between unbounded preceding and floor(ow_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc range between unbounded preceding and floor(ow_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc/ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc range between unbounded preceding and floor(ow_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc range between unbounded preceding and floor(ow_sale.pn) preceding ); -- mvd 1,5->4; 1,5->6; 1,5->7; 1,5->8; 1,5->9; 1,5->10; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.vn desc range between unbounded preceding and current row ); -- mvd 5,6,2,3->4; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc range between unbounded preceding and current row ); -- mvd 5,6,2->4; 5,6,2->7; 5,6,2->8; 5,6,2->9; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and 2 following ); -- mvd 1,4->7; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc*ow_sale.prc)) OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn/ow_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn/ow_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.prc)) OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn/ow_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and floor(ow_sale.pn/ow_sale.cn) following ); -- mvd 3,4,5,6,7->2; 3,4,5,6,7->8; 3,4,5,6,7->9; 3,4,5,6,7->10; 3,4,5,6,7->11; 3,4,5,6,7->12; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.vn desc range between unbounded preceding and unbounded following ); -- mvd 6,4,1,3->5; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.qty)) OVER(partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc range between unbounded preceding and unbounded following ); -- mvd 1,4->5; 1,4->6; 1,4->7; 1,4->8; 1,4->9; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc range between 4 preceding and floor(ow_sale.qty*ow_sale.pn) preceding ); -- mvd 8,2->7; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc range between 3 preceding and 3 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc range between 3 preceding and 3 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.prc,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.pn desc range between 3 preceding and 3 preceding ); -- mvd 4,5,6,7,2->3; 4,5,6,7,2->8; 4,5,6,7,2->9; 4,5,6,7,2->10; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc range between floor(ow_sale.qty+ow_sale.vn) preceding and current row ); -- mvd 5,6,1,7->4; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn/ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc range between floor(ow_sale.cn*ow_sale.cn) preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc range between floor(ow_sale.cn*ow_sale.cn) preceding and current row ); -- mvd 3,4->5; 3,4->6; 3,4->7; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc range between 4 preceding and 4 following ); -- mvd 3,4->2; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty*ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc range between 4 preceding and floor(ow_sale.vn) following ); -- mvd 4,5->3; 4,5->6; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc range between 1 preceding and unbounded following ); -- mvd 2,3,6->5; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.prc)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc range between floor(ow_sale.prc) preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc range between floor(ow_sale.prc) preceding and unbounded following ); -- mvd 4,5,1,6->3; 4,5,1,6->7; 4,5,1,6->8; 4,5,1,6->9; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc range between current row and current row ); -- mvd 2,7,4->6; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc/ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc range between current row and current row ); -- mvd 1,3,4,5->2; 1,3,4,5->6; 1,3,4,5->7; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.vn desc range between current row and floor(ow_sale.qty) following ); -- mvd 5,8->7; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc range between current row and floor(ow_sale.pn+ow_sale.vn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc range between current row and floor(ow_sale.pn+ow_sale.vn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.pn asc range between current row and floor(ow_sale.pn+ow_sale.vn) following ); -- mvd 3,4->2; 3,4->5; 3,4->6; 3,4->7; 3,4->8; 3,4->9; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc range between current row and unbounded following ); -- mvd 3,4,1->2; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.prc)) OVER(partition by ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(partition by ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc range between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.dt,ow_sale.qty,ow_sale.prc,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc range between current row and unbounded following ); -- mvd 3,4,5,1,6,7->2; 3,4,5,1,6,7->8; 3,4,5,1,6,7->9; 3,4,5,1,6,7->10; 3,4,5,1,6,7->11; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc range between 0 following and floor(ow_sale.prc/ow_sale.prc) following ); -- mvd 3,1,4,5->2; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.cn desc range between 1 following and 3 following ); -- mvd 1,3,4->2; 1,3,4->5; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.vn asc range between floor(ow_sale.pn) following and unbounded following ); -- mvd 3,5->4; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn-ow_sale.vn)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc range between 2 following and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc range between 2 following and unbounded following ); -- mvd 1,5,3->4; 1,5,3->6; 1,5,3->7; 1,5,3->8; 1,5,3->9; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc rows unbounded preceding ); -- mvd 3,1->2; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.vn)) OVER(partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.vn desc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.vn desc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn*ow_sale.pn)) OVER(partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.vn desc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.vn desc rows unbounded preceding ); -- mvd 3,4,1->2; 3,4,1->5; 3,4,1->6; 3,4,1->7; 3,4,1->8; 3,4,1->9; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows 6 preceding ); -- mvd 3,4,5->2; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn/ow_sale.cn)) OVER(partition by ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows floor(ow_sale.cn+ow_sale.cn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows floor(ow_sale.cn+ow_sale.cn) preceding ); -- mvd 1->7; 1->8; 1->9; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows current row ); -- mvd 4,5->3; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.vn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.pn)) OVER(partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.cn)) OVER(partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc rows current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc rows current row ); -- mvd 1,4,6->7; 1,4,6->8; 1,4,6->9; 1,4,6->10; 1,4,6->11; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and 5 preceding ); -- mvd 6,1,7->5; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn/ow_sale.pn)) OVER(partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between unbounded preceding and 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between unbounded preceding and 1 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between unbounded preceding and 1 preceding ); -- mvd 8,1,2->7; 8,1,2->9; 8,1,2->10; 8,1,2->11; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn/ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and current row ); -- mvd 4,5->3; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc rows between unbounded preceding and current row ); -- mvd 4,5,2,6->3; 4,5,2,6->7; 4,5,2,6->8; 4,5,2,6->9; 4,5,2,6->10; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.cn,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.vn asc rows between unbounded preceding and floor(ow_sale.cn-ow_sale.vn) following ); -- mvd 6,7,1,2->5; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(partition by ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.pn-ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.pn-ow_sale.qty) following ); -- mvd 6,1,4->5; 6,1,4->7; 6,1,4->8; 6,1,4->9; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.cn asc,ow_sale.vn asc rows between unbounded preceding and unbounded following ); -- mvd 4,5,6,7->3; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(partition by ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(partition by ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and unbounded following ); -- mvd 4,5,6->3; 4,5,6->7; 4,5,6->8; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.vn-ow_sale.cn) preceding and 0 preceding ); -- mvd 5,6->4; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(partition by ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.cn-ow_sale.qty) preceding and 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(partition by ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.cn-ow_sale.qty) preceding and 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between floor(ow_sale.cn-ow_sale.qty) preceding and 2 preceding ); -- mvd 3,5,6,7,2->4; 3,5,6,7,2->8; 3,5,6,7,2->9; 3,5,6,7,2->10; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between 9 preceding and current row ); -- mvd 2,1,4->3; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.pn)) OVER(partition by ow_sale.qty,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.cn desc rows between 0 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.vn)) OVER(partition by ow_sale.qty,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.cn desc rows between 0 preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.qty,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc,ow_sale.cn desc rows between 0 preceding and current row ); -- mvd 3,5,1->4; 3,5,1->6; 3,5,1->7; 3,5,1->8; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.qty/ow_sale.pn) preceding and floor(ow_sale.pn) following ); -- mvd 3->2; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.prc)) OVER(partition by ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.vn asc rows between floor(ow_sale.qty) preceding and 2 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc,ow_sale.vn asc rows between floor(ow_sale.qty) preceding and 2 following ); -- mvd 1,6,2->5; 1,6,2->7; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.qty +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows between floor(ow_sale.qty+ow_sale.vn) preceding and unbounded following ); -- mvd 2,1,7,8->6; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.dt,ow_sale.qty,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.qty)) OVER(partition by ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc rows between 0 preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc rows between 0 preceding and unbounded following ); -- mvd 4,5,6,7->3; 4,5,6,7->8; 4,5,6,7->9; 4,5,6,7->10; 4,5,6,7->11; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.cn desc rows between current row and current row ); -- mvd 5,6,1,3,2->4; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.qty, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.cn)) OVER(partition by ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn/ow_sale.qty)) OVER(partition by ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between current row and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.cn desc rows between current row and current row ); -- mvd 2,5,6,7->4; 2,5,6,7->8; 2,5,6,7->9; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.pn,ow_sale.qty,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between current row and 8 following ); -- mvd 5,3,6,7->4; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.qty)) OVER(partition by ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn asc rows between current row and floor(ow_sale.qty-ow_sale.vn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc-ow_sale.pn)) OVER(partition by ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn asc rows between current row and floor(ow_sale.qty-ow_sale.vn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn asc rows between current row and floor(ow_sale.qty-ow_sale.vn) following ); -- mvd 3,4,5->2; 3,4,5->6; 3,4,5->7; 3,4,5->8; 3,4,5->9; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.prc,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc,ow_sale.cn asc rows between current row and unbounded following ); -- mvd 4,5,6,1->3; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.cn)) OVER(partition by ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.pn)) OVER(partition by ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc rows between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.vn asc rows between current row and unbounded following ); -- mvd 7->6; 7->8; 7->9; 7->10; 7->11; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.qty,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn desc,ow_sale.pn asc rows between floor(ow_sale.cn) following and 4 following ); -- mvd 6,7,1,8->5; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.pn desc rows between 2 following and floor(ow_sale.pn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc/ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.pn desc rows between 2 following and floor(ow_sale.pn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.pn desc rows between 2 following and floor(ow_sale.pn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc,ow_sale.pn desc rows between 2 following and floor(ow_sale.pn) following ); -- mvd 3,6,2->5; 3,6,2->7; 3,6,2->8; 3,6,2->9; 3,6,2->10; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc rows between 0 following and unbounded following ); -- mvd 3,2,5->4; + +-- FIRST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(partition by ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between 1 following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.vn,ow_sale.prc,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between 1 following and unbounded following ); -- mvd 4,5,6,1,7->3; 4,5,6,1,7->8; 4,5,6,1,7->9; 4,5,6,1,7->10; + +-- LAST_VALUE() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc); -- mvd 6,7->5; + +-- LAST_VALUE() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) in combination with other window functions -- + +SELECT ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn-ow_sale.pn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn/ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.pn asc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc); -- mvd 1->3; 1->4; 1->5; 1->6; 1->7; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range unbounded preceding ); -- mvd 4->3; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn asc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range unbounded preceding ); -- mvd 4->3; 4->5; 4->6; 4->7; 4->8; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc range 4 preceding ); -- mvd 1->5; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn*ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.pn desc range 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn+ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.pn desc range 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc-ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn desc range 1 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc range 1 preceding ); -- mvd 7->6; 7->8; 7->9; 7->10; 7->11; 7->12; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc/ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc range current row ); -- mvd 3->2; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn asc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn asc range current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range current row ); -- mvd 4->3; 4->5; 4->6; 4->7; 4->8; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc-ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and floor(ow_sale.qty/ow_sale.pn) preceding ); -- mvd 2->5; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and 3 preceding ); -- mvd 4->5; 4->6; 4->7; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between unbounded preceding and current row ); -- mvd 3->2; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and current row ); -- mvd 3->6; 3->7; 3->8; 3->9; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range between unbounded preceding and floor(ow_sale.cn) following ); -- mvd 2->6; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc range between unbounded preceding and 0 following ); -- mvd 4->3; 4->5; 4->6; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc range between unbounded preceding and unbounded following ); -- mvd 2->4; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc-ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 5->6; 5->7; 5->8; 5->9; 5->10; 5->11; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range between 4 preceding and floor(ow_sale.prc) preceding ); -- mvd 2->4; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn desc range between floor(ow_sale.qty/ow_sale.pn) preceding and 1 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between floor(ow_sale.qty/ow_sale.pn) preceding and 1 preceding ); -- mvd 5->4; 5->6; 5->7; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc range between 0 preceding and current row ); -- mvd 2->7; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn desc range between 2 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn-ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.pn desc range between 2 preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc range between 2 preceding and current row ); -- mvd 3->2; 3->4; 3->5; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range between floor(ow_sale.vn-ow_sale.qty) preceding and floor(ow_sale.cn) following ); -- mvd 4->3; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc*ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.cn asc range between 0 preceding and floor(ow_sale.qty-ow_sale.prc) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range between 0 preceding and floor(ow_sale.qty-ow_sale.prc) following ); -- mvd 3->5; 3->6; 3->7; 3->8; 3->9; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between 3 preceding and unbounded following ); -- mvd 4->3; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc/ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn asc range between 2 preceding and unbounded following ); -- mvd 5->4; 5->6; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.qty,ow_sale.prc,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range between current row and current row ); -- mvd 6->7; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.cn desc range between current row and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between current row and current row ); -- mvd 2->4; 2->5; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.prc,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn asc range between current row and floor(ow_sale.qty) following ); -- mvd 3->4; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn desc range between current row and 1 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.pn desc range between current row and 1 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc range between current row and 1 following ); -- mvd 1->6; 1->7; 1->8; 1->9; 1->10; 1->11; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.vn desc range between current row and unbounded following ); -- mvd 6->5; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn/ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn desc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn/ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.pn desc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc/ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc range between current row and unbounded following ); -- mvd 3->4; 3->5; 3->6; 3->7; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.prc,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn asc range between floor(ow_sale.pn+ow_sale.prc) following and 1 following ); -- mvd 4->5; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.pn desc range between floor(ow_sale.prc+ow_sale.cn) following and floor(ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn/ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.pn desc range between floor(ow_sale.prc+ow_sale.cn) following and floor(ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.pn desc range between floor(ow_sale.prc+ow_sale.cn) following and floor(ow_sale.qty) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.pn desc range between floor(ow_sale.prc+ow_sale.cn) following and floor(ow_sale.qty) following ); -- mvd 2->4; 2->5; 2->6; 2->7; 2->8; 2->9; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.vn,ow_sale.prc,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between 4 following and unbounded following ); -- mvd 5->7; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having range based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.cn desc range between floor(ow_sale.pn) following and unbounded following ); -- mvd 3->2; 3->4; 3->5; 3->6; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.pn desc,ow_sale.vn asc rows unbounded preceding ); -- mvd 3,1->5; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows unbounded preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows unbounded preceding ); -- mvd 4->3; 4->5; 4->6; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.pn desc,ow_sale.vn desc rows 8 preceding ); -- mvd 4,5->3; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows 3 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows 3 preceding ); -- mvd 6->5; 6->7; 6->8; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.vn asc,ow_sale.pn asc rows current row ); -- mvd 5,3->4; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.vn desc rows current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.vn desc rows current row ); -- mvd 5,2->4; 5,2->6; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.vn desc rows between unbounded preceding and floor(ow_sale.qty/ow_sale.cn) preceding ); -- mvd 1,4,5->3; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and 4 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn/ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and 4 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and 4 preceding ); -- mvd 5,1->4; 5,1->6; 5,1->7; 5,1->8; 5,1->9; 5,1->10; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn asc rows between unbounded preceding and current row ); -- mvd 3,1->2; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.cn desc rows between unbounded preceding and current row ); -- mvd 3->2; 3->4; 3->5; 3->6; 3->7; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.pn desc rows between unbounded preceding and 9 following ); -- mvd 3,1->2; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty/ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn-ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.pn asc rows between unbounded preceding and floor(ow_sale.qty*ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc*ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.pn asc,ow_sale.pn asc rows between unbounded preceding and floor(ow_sale.qty*ow_sale.qty) following ); -- mvd 3->6; 3->7; 3->8; 3->9; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc rows between unbounded preceding and unbounded following ); -- mvd 2->3; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn/ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between unbounded preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 2,3->4; 2,3->5; 2,3->6; 2,3->7; 2,3->8; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn asc rows between floor(ow_sale.cn+ow_sale.cn) preceding and 9 preceding ); -- mvd 1,3->2; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between 0 preceding and 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between 0 preceding and 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between 0 preceding and 1 preceding ); -- mvd 3->4; 3->5; 3->6; 3->7; 3->8; 3->9; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between 8 preceding and current row ); -- mvd 2->5; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.cn,ow_sale.dt,ow_sale.dt, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn/ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc rows between floor(ow_sale.qty) preceding and current row ); -- mvd 2,1->5; 2,1->6; 2,1->7; 2,1->8; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc rows between floor(ow_sale.qty-ow_sale.pn) preceding and 8 following ); -- mvd 5,6->4; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn*ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn-ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between 2 preceding and floor(ow_sale.prc/ow_sale.cn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc rows between 2 preceding and floor(ow_sale.prc/ow_sale.cn) following ); -- mvd 4->3; 4->5; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc,ow_sale.vn desc rows between 9 preceding and unbounded following ); -- mvd 6,7,1->5; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn-ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.cn desc rows between floor(ow_sale.prc) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.cn desc rows between floor(ow_sale.prc) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.vn asc,ow_sale.cn desc rows between floor(ow_sale.prc) preceding and unbounded following ); -- mvd 3,5->4; 3,5->6; 3,5->7; 3,5->8; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between current row and current row ); -- mvd 3->2; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn asc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc/ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn asc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn asc rows between current row and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.cn desc,ow_sale.pn asc rows between current row and current row ); -- mvd 1,5->4; 1,5->6; 1,5->7; 1,5->8; 1,5->9; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.vn desc rows between current row and floor(ow_sale.pn) following ); -- mvd 6->5; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows between current row and 3 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.vn desc rows between current row and 3 following ); -- mvd 2,5->4; 2,5->6; 2,5->7; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.pn asc rows between current row and unbounded following ); -- mvd 4->5; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn-ow_sale.vn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty+ow_sale.qty)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn-ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ); -- mvd 7->6; 7->8; 7->9; 7->10; 7->11; 7->12; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc,ow_sale.vn desc rows between 4 following and floor(ow_sale.cn/ow_sale.prc) following ); -- mvd 4,5->3; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty/ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.pn*ow_sale.qty) following and 3 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between floor(ow_sale.pn*ow_sale.qty) following and 3 following ); -- mvd 6->5; 6->7; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.vn desc,ow_sale.vn asc rows between 8 following and unbounded following ); -- mvd 3,6->5; + +-- LAST_VALUE() function with ONLY order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.dt,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc,ow_sale.pn desc,ow_sale.vn desc rows between 2 following and unbounded following ); -- mvd 4,6->5; 4,6->7; + +-- LAST_VALUE() function with OVER() clause having PARTITION BY and ORDER BY (without framing)-- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc,ow_sale.vn desc); -- mvd 7,8,5->6; + +-- LAST_VALUE() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn,ow_sale.qty +, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(partition by ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(partition by ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty order by ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc); -- mvd 5,6,3,7->4; 5,6,3,7->8; 5,6,3,7->9; 5,6,3,7->10; 5,6,3,7->11; 5,6,3,7->12; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.cn,ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc range unbounded preceding ); -- mvd 6,2,7->5; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(partition by ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.pn,ow_sale.cn,ow_sale.pn order by ow_sale.ord, ow_sale.vn desc range unbounded preceding ); -- mvd 4,5,2,6->3; 4,5,2,6->7; 4,5,2,6->8; 4,5,2,6->9; 4,5,2,6->10; 4,5,2,6->11; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc range floor(ow_sale.vn) preceding ); -- mvd 1,4->3; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn/ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn,ow_sale.pn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn/ow_sale.prc)) OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc range floor(ow_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc+ow_sale.pn)) OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc range floor(ow_sale.pn) preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc range floor(ow_sale.pn) preceding ); -- mvd 3,4,5,6->2; 3,4,5,6->7; 3,4,5,6->8; 3,4,5,6->9; 3,4,5,6->10; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn asc range current row ); -- mvd 5,6->4; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn order by ow_sale.ord, ow_sale.cn asc range current row ); -- mvd 1,3->5; 1,3->6; 1,3->7; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and 0 preceding ); -- mvd 7,3->6; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn/ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and floor(ow_sale.prc) preceding ); -- mvd 4,5->3; 4,5->6; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc range between unbounded preceding and current row ); -- mvd 4,2,5->3; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.prc,ow_sale.cn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(partition by ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn-ow_sale.vn)) OVER(partition by ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc,ow_sale.dt,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and current row ); -- mvd 2,7,1,5->6; 2,7,1,5->8; 2,7,1,5->9; 2,7,1,5->10; 2,7,1,5->11; 2,7,1,5->12; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.pn desc range between unbounded preceding and floor(ow_sale.prc) following ); -- mvd 4,5->3; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.qty,ow_sale.qty,ow_sale.cn,ow_sale.prc,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn/ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc range between unbounded preceding and floor(ow_sale.cn) following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.pn desc range between unbounded preceding and floor(ow_sale.cn) following ); -- mvd 8,6,1->7; 8,6,1->9; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.qty order by ow_sale.ord, ow_sale.pn asc range between unbounded preceding and unbounded following ); -- mvd 5,2,6->4; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.qty,ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(partition by ow_sale.prc,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(partition by ow_sale.prc,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.vn asc range between unbounded preceding and unbounded following ); -- mvd 7,8,3->6; 7,8,3->9; 7,8,3->10; 7,8,3->11; 7,8,3->12; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.cn asc range between floor(ow_sale.cn) preceding and floor(ow_sale.prc+ow_sale.pn) preceding ); -- mvd 5,3->4; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.dt,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc range between 2 preceding and floor(ow_sale.cn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc range between 2 preceding and floor(ow_sale.cn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc range between 2 preceding and floor(ow_sale.cn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.prc,ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.cn desc range between 2 preceding and floor(ow_sale.cn) preceding ); -- mvd 5,3,6->4; 5,3,6->7; 5,3,6->8; 5,3,6->9; 5,3,6->10; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn desc range between floor(ow_sale.cn-ow_sale.qty) preceding and current row ); -- mvd 5,6->4; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc range between floor(ow_sale.qty-ow_sale.cn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc*ow_sale.qty)) OVER(partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc range between floor(ow_sale.qty-ow_sale.cn) preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.cn asc range between floor(ow_sale.qty-ow_sale.cn) preceding and current row ); -- mvd 3,5,1->4; 3,5,1->6; 3,5,1->7; 3,5,1->8; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.vn desc range between floor(ow_sale.prc+ow_sale.pn) preceding and floor(ow_sale.vn+ow_sale.prc) following ); -- mvd 1,3,4,5->2; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn/ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(partition by ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc range between 1 preceding and floor(ow_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.cn desc range between 1 preceding and floor(ow_sale.qty) following ); -- mvd 5,6,1->4; 5,6,1->7; 5,6,1->8; 5,6,1->9; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.pn,ow_sale.pn,ow_sale.dt, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.vn asc range between 4 preceding and unbounded following ); -- mvd 2,1->6; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn,ow_sale.pn,ow_sale.dt order by ow_sale.ord, ow_sale.cn asc range between 4 preceding and unbounded following ); -- mvd 3,1,8,4,5->7; 3,1,8,4,5->9; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.vn,ow_sale.dt, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.cn desc range between current row and current row ); -- mvd 4,1->5; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.pn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty*ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.pn desc range between current row and current row ); -- mvd 2,1->3; 2,1->4; 2,1->5; 2,1->6; 2,1->7; 2,1->8; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.qty,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.cn order by ow_sale.ord, ow_sale.cn desc range between current row and floor(ow_sale.cn) following ); -- mvd 4,1->3; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc range between current row and floor(ow_sale.pn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc range between current row and floor(ow_sale.pn) following ); -- mvd 5,6,2->4; 5,6,2->7; 5,6,2->8; 5,6,2->9; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.cn desc range between current row and unbounded following ); -- mvd 4->6; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.qty, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc+ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.cn,ow_sale.qty order by ow_sale.ord, ow_sale.cn asc range between current row and unbounded following ); -- mvd 6,1,7->5; 6,1,7->8; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.dt,ow_sale.vn order by ow_sale.ord, ow_sale.pn asc range between floor(ow_sale.cn) following and 4 following ); -- mvd 3,1,4->2; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.qty,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc range between floor(ow_sale.vn/ow_sale.pn) following and 1 following ); -- mvd 2,1,4->3; 2,1,4->5; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.prc order by ow_sale.ord, ow_sale.pn asc range between 1 following and unbounded following ); -- mvd 4,5,2->3; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having range based framing clause in combination with other functions-- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty/ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn asc range between floor(ow_sale.pn-ow_sale.pn) following and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.pn asc range between floor(ow_sale.pn-ow_sale.pn) following and unbounded following ); -- mvd 1,3->2; 1,3->4; 1,3->5; 1,3->6; 1,3->7; 1,3->8; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.pn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows unbounded preceding ); -- mvd 5,1,2->4; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty-ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn-ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.cn asc rows unbounded preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.cn asc,ow_sale.cn asc rows unbounded preceding ); -- mvd 4,5,1->3; 4,5,1->6; 4,5,1->7; 4,5,1->8; 4,5,1->9; 4,5,1->10; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn-ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_vendor WHERE ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc rows 5 preceding ); -- mvd 5,6,7,3->4; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.cn,ow_sale.cn,ow_sale.pn,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty*ow_sale.qty)) OVER(partition by ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows 2 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc rows 2 preceding ); -- mvd 8,3,5->7; 8,3,5->9; 8,3,5->10; 8,3,5->11; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.prc,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.vn,ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.pn asc,ow_sale.cn asc rows current row ); -- mvd 6,7,2,4->5; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc,ow_sale.cn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty-ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc rows current row ); -- mvd 2,5->4; 2,5->6; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn*ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.cn,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between unbounded preceding and 6 preceding ); -- mvd 1,3->2; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.dt,ow_sale.cn,ow_sale.prc,ow_sale.qty,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc,ow_sale.vn asc rows between unbounded preceding and floor(ow_sale.vn) preceding ); -- mvd 6,8->7; 6,8->9; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.pn,ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc rows between unbounded preceding and current row ); -- mvd 3,4,1,5->2; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn/ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(partition by ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn asc rows between unbounded preceding and current row ); -- mvd 3,6->5; 3,6->7; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc-ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between unbounded preceding and 7 following ); -- mvd 5,3,2->7; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.dt,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc*ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty)) OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 0 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 0 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 0 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn+ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between unbounded preceding and 0 following ); -- mvd 2,6->5; 2,6->7; 2,6->8; 2,6->9; 2,6->10; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty/ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.prc,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 4,2,5,6->3; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.vn,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty-ow_sale.qty)) OVER(partition by ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between unbounded preceding and unbounded following ); -- mvd 1,5,6->4; 1,5,6->7; 1,5,6->8; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.dt,ow_sale.cn,ow_sale.dt,ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.dt,ow_sale.pn,ow_sale.prc,ow_sale.pn,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc,ow_sale.pn asc rows between floor(ow_sale.vn+ow_sale.vn) preceding and 3 preceding ); -- mvd 8,3,4,1,9->7; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.cn,ow_sale.pn,ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty/ow_sale.prc)) OVER(partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.cn) preceding and 4 preceding ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between floor(ow_sale.cn) preceding and 4 preceding ); -- mvd 1,5,2->4; 1,5,2->6; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_product WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.prc,ow_sale.vn order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between 7 preceding and current row ); -- mvd 3,4->2; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty/ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.qty, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(partition by ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.vn+ow_sale.prc) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.vn+ow_sale.prc) preceding and current row ); -- mvd 2,6->5; 2,6->7; 2,6->8; 2,6->9; 2,6->10; 2,6->11; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.vn,ow_sale.vn,ow_sale.cn,ow_sale.dt, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc/ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.cn desc rows between floor(ow_sale.qty-ow_sale.qty) preceding and 1 following ); -- mvd 3,4,6->5; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.vn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn-ow_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc,ow_sale.cn asc,ow_sale.cn desc rows between 1 preceding and 3 following ); -- mvd 3,4,5->2; 3,4,5->6; 3,4,5->7; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.cn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn/ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.pn asc rows between 1 preceding and unbounded following ); -- mvd 3,4->2; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt,ow_sale.pn, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn)) OVER(partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.vn) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.vn,ow_sale.dt,ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc rows between floor(ow_sale.vn) preceding and unbounded following ); -- mvd 3,4,1,5->2; 3,4,1,5->6; 3,4,1,5->7; 3,4,1,5->8; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.vn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer,ow_vendor WHERE ow_sale_ord.cn=ow_customer.cn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.dt order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between current row and current row ); -- mvd 7,3->6; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.pn order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between current row and current row ); -- mvd 3,1->5; 3,1->6; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.prc,ow_sale.qty,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn) ow_sale +WINDOW win1 as (partition by ow_sale.pn,ow_sale.dt,ow_sale.dt,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.vn desc rows between current row and floor(ow_sale.pn) following ); -- mvd 6,7,2,8->5; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.vn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn*ow_sale.cn)) OVER(win1),0),'99999999.9999999'),ow_sale.prc,ow_sale.cn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.vn/ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between current row and 1 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between current row and 1 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.qty*ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.cn*ow_sale.prc)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between current row and 1 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty-ow_sale.cn)) OVER(partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between current row and 1 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.cn,ow_sale.vn,ow_sale.vn,ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc rows between current row and 1 following ); -- mvd 5,6,2->4; 5,6,2->7; 5,6,2->8; 5,6,2->9; 5,6,2->10; 5,6,2->11; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.cn,ow_sale.qty,ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn-ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.dt,ow_sale.vn,ow_sale.pn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.dt,ow_sale.vn,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc,ow_sale.cn desc,ow_sale.pn desc rows between current row and unbounded following ); -- mvd 1,5,6,7->4; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.vn,ow_sale.qty,ow_sale.dt,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn+ow_sale.qty)) OVER(win1),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.prc+ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn*ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_customer WHERE ow_sale_ord.cn=ow_customer.cn ) ow_sale +WINDOW win1 as (partition by ow_sale.prc order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ); -- mvd 6,4->5; 6,4->7; 6,4->8; 6,4->9; 6,4->10; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.pn, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.vn +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord) ow_sale +WINDOW win1 as (partition by ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.pn desc,ow_sale.vn desc rows between 3 following and floor(ow_sale.vn) following ); -- mvd 4,1,2->3; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.dt,ow_sale.qty,ow_sale.vn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc-ow_sale.prc)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.pn, +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.cn)) OVER(partition by ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc,ow_sale.pn desc rows between floor(ow_sale.pn) following and 0 following ),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.qty,ow_sale.pn,ow_sale.qty order by ow_sale.ord, ow_sale.ord, ow_sale.vn asc,ow_sale.cn desc,ow_sale.pn desc rows between floor(ow_sale.pn) following and 0 following ); -- mvd 6,2,3,7->5; 6,2,3,7->8; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause -- + +SELECT ow_sale.qty,ow_sale.vn,ow_sale.prc, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'),ow_sale.cn,ow_sale.dt +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product WHERE ow_sale_ord.pn=ow_product.pn) ow_sale +WINDOW win1 as (partition by ow_sale.dt,ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.cn asc rows between floor(ow_sale.qty) following and unbounded following ); -- mvd 5,6->4; + +-- LAST_VALUE() function with partition by and order by ow_sale.ord, having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.vn,ow_sale.vn,ow_sale.pn,ow_sale.cn,ow_sale.qty, TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.pn+ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(floor(ow_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(floor(ow_sale.prc/ow_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT ow_sale_ord.* FROM ow_sale_ord,ow_product,ow_vendor,ow_customer WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_sale_ord.cn=ow_customer.cn) ow_sale +WINDOW win1 as (partition by ow_sale.cn order by ow_sale.ord, ow_sale.ord, ow_sale.cn desc,ow_sale.pn asc,ow_sale.cn desc rows between 3 following and unbounded following ); + +select ntile(3) over (order by cn) from ow_sale; +select dt, ntile(5) over (order by dt) from ow_sale; +select cn, dt, ntile(3) over (partition by cn order by dt) from ow_sale; -- mvd 1,2->3 +select cn, dt, ntile(3) over (partition by cn order by dt), sum(prc) over (order by cn, dt) from ow_sale; -- mvd 1,2->3 +select cn,vn,ntile(cn) over(partition by cn order by vn) from ow_sale; --mvd 1->3 +select cn,vn,ntile(qty) over(partition by cn order by vn) from ow_sale; +select cn,vn,ntile(cn) over(partition by cn+vn order by vn) from ow_sale; +select cn,vn,ntile(cn+vn) over(partition by cn+vn order by vn) from ow_sale; --mvd 1,2->3 + +select ow_count_operator('explain select * from ow_sale order by first_value(NULL) over (partition by cn order by case when 1=1 then pn else vn end);', 'Window') > 0; + +drop table if exists tab12773_test; + +create table tab12773_test(member_id varchar(100),name varchar(100),color varchar(100),a int,b int ,c int); + +insert into tab12773_test values('mersfe','Donuts','Chocolate',1,13,56); +insert into tab12773_test values('3sef3','Hamburger','Grey',2,15,58); +insert into tab12773_test values('3sef3','Castle','Grey',3,17,60); +insert into tab12773_test values('3sef3','Justice','Clear',4,19,62); +insert into tab12773_test values('3sesdff3','Donuts','Plain',5,21,64); +insert into tab12773_test values('mersfe','Sword','Black',7,23,66); +insert into tab12773_test values('3sef3','Dream','Black',9,25,68); +insert into tab12773_test values('3sesdff3','Fries','Grey',11,27,5456); + +drop table if exists tab12773_vendor; + +create table tab12773_vendor +( + vn int not null, + vname text not null, + vloc text, + + primary key (vn) + +) distributed by (vn); + +drop table if exists tab12773_product; + +create table tab12773_product +( + pn int not null, + pname text not null, + pcolor text, + + primary key (pn) + +) distributed by (pn); + +drop table if exists tab12773_sale_ord; + +create table tab12773_sale_ord +( + ord int not null, + cn int not null, + vn int not null, + pn int not null, + dt date not null, + qty int not null, + prc float not null, + + primary key (cn, vn, pn) + +) distributed by (cn,vn,pn); + +-- Vendors +insert into tab12773_vendor values + ( 10, 'Witches, Inc', 'Lonely Heath'), + ( 20, 'Lady Macbeth', 'Inverness'), + ( 30, 'Duncan', 'Forres'), + ( 40, 'Macbeth', 'Inverness'), + ( 50, 'Macduff', 'Fife'); + +-- Products +insert into tab12773_product values + ( 100, 'Sword', 'Black'), + ( 200, 'Dream', 'Black'), + ( 300, 'Castle', 'Grey'), + ( 400, 'Justice', 'Clear'), + ( 500, 'Donuts', 'Plain'), + ( 600, 'Donuts', 'Chocolate'), + ( 700, 'Hamburger', 'Grey'), + ( 800, 'Fries', 'Grey'); + + +-- Sales (ord transactions) +insert into tab12773_sale_ord values + ( 1,2, 40, 100, '1401-1-1', 1100, 2400), + ( 2,1, 10, 200, '1401-3-1', 1, 0), + ( 3,3, 40, 200, '1401-4-1', 1, 0), + ( 4,1, 20, 100, '1401-5-1', 1, 0), + ( 5,1, 30, 300, '1401-5-2', 1, 0), + ( 6,1, 50, 400, '1401-6-1', 1, 0), + ( 7,2, 50, 400, '1401-6-1', 1, 0), + ( 8,1, 30, 500, '1401-6-1', 12, 5), + ( 9,3, 30, 500, '1401-6-1', 12, 5), + ( 10,3, 30, 600, '1401-6-1', 12, 5), + ( 11,4, 40, 700, '1401-6-1', 1, 1), + ( 12,4, 40, 800, '1401-6-1', 1, 1); + + +--The following query was erroring when a varchar was used in partition by clause + +select member_id, +row_number() over (PARTITION by member_id ORDER BY a) a_rownum, +row_number() over (PARTITION by member_id ORDER BY b) b_rownum, +row_number() over (PARTITION by member_id ORDER BY c) c_rownum +from tab12773_test order by member_id,a_rownum,b_rownum,c_rownum; + + +--Some more cases around varchar in window functions + +--Sanity check with some other window functions +SELECT ow_product.pn,ow_product.pname,ow_product.pcolor, TO_CHAR(COALESCE(COUNT(*) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win1),0),'99999999.9999999') +FROM tab12773_product ow_product +WINDOW win1 as (partition by ow_product.pcolor order by ow_product.pn asc) order by ow_product.pn; + + +SELECT test.member_id,test.a,test.b,test.c, +TO_CHAR(COALESCE(COUNT(a) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(FIRST_VALUE(a) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAST_VALUE(a) OVER(win1),0),'99999999.9999999') +FROM tab12773_test test +WINDOW win1 as (partition by test.member_id order by test.a asc) order by test.member_id,test.a,test.b,test.c; + + + +--Use more than one varchar column in the ranges + +SELECT test.member_id,test.color,test.name, +TO_CHAR(COALESCE(COUNT(*) OVER(win1),0),'99999999.9999999'), +COALESCE(FIRST_VALUE(name) OVER(win1),'0') first_name, +COALESCE(LAST_VALUE(name) OVER(win1),'0') last_name +FROM tab12773_test test +WINDOW win1 as (partition by test.member_id,test.color order by test.name asc) order by test.member_id,test.color,test.name; + +--Using more than one windows involving varchar +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT ow_sale.pn,ow_sale.cn,ow_sale.name,ow_sale.color, +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty+ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),ow_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(ow_sale.qty-ow_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by ow_sale.qty order by ow_sale.vn asc),0),'99999999.9999999') +FROM +(SELECT ow_sale_ord.*,test.name,test.color,ow_product.pname,ow_product.pcolor FROM tab12773_sale_ord ow_sale_ord,tab12773_product ow_product,tab12773_vendor ow_vendor,tab12773_test test WHERE ow_sale_ord.pn=ow_product.pn AND ow_sale_ord.vn=ow_vendor.vn AND ow_product.pname = test.name AND ow_product.pcolor = test.color) ow_sale +WINDOW win1 as (partition by ow_sale.vn,ow_sale.vn,ow_sale.name order by ow_sale.ord, ow_sale.pn desc rows between current row and unbounded following ), +win2 as (partition by ow_sale.pname,ow_sale.name,ow_sale.color order by ow_sale.cn asc), +win3 as (partition by ow_sale.prc,ow_sale.color,ow_sale.pcolor order by ow_sale.vn desc) order by ow_sale.pn,ow_sale.cn,ow_sale.name,ow_sale.color; + +SELECT a,color,sum(a) over (partition by member_id,color) FROM tab12773_test order by member_id,name; + +SELECT member_id,a,color,sum(a) over (partition by member_id,color) FROM tab12773_test order by member_id,name; + +-- start_ignore +reset datestyle; +drop table tab12773_test; +drop table ow_customer; +drop table ow_vendor; +drop table ow_product; +drop table ow_sale; +drop table ow_sale_ord; +drop table ow_util; +drop function ow_count_operator; +-- end_ignore \ No newline at end of file diff --git a/src/test/regress/sql/cf_olap_windowerr.sql b/src/test/regress/sql/cf_olap_windowerr.sql new file mode 100644 index 0000000000000000000000000000000000000000..e0d17c26876fe25e74ed630cb75e7ee5eaa2578c --- /dev/null +++ b/src/test/regress/sql/cf_olap_windowerr.sql @@ -0,0 +1,4071 @@ +-- +-- STANDARD DATA FOR olap_* TESTS. +-- +-- start_ignore +drop table cf_olap_windowerr_customer; +drop table cf_olap_windowerr_vendor; +drop table cf_olap_windowerr_product; +drop table cf_olap_windowerr_sale; +drop table cf_olap_windowerr_sale_ord; +drop table cf_olap_windowerr_util; + + +create table cf_olap_windowerr_customer +( + cn int not null, + cname text not null, + cloc text, + + primary key (cn) + +) distributed by (cn); + +create table cf_olap_windowerr_vendor +( + vn int not null, + vname text not null, + vloc text, + + primary key (vn) + +) distributed by (vn); + +create table cf_olap_windowerr_product +( + pn int not null, + pname text not null, + pcolor text, + + primary key (pn) + +) distributed by (pn); + +create table cf_olap_windowerr_sale +( + cn int not null, + vn int not null, + pn int not null, + dt date not null, + qty int not null, + prc float not null, + + primary key (cn, vn, pn) + +) distributed by (cn,vn,pn); + +create table cf_olap_windowerr_sale_ord +( + ord int not null, + cn int not null, + vn int not null, + pn int not null, + dt date not null, + qty int not null, + prc float not null, + + primary key (cn, vn, pn) + +) distributed by (cn,vn,pn); + +create table cf_olap_windowerr_util +( + xn int not null, + + primary key (xn) + +) distributed by (xn); + +-- cf_olap_windowerr_customers +insert into cf_olap_windowerr_customer values + ( 1, 'Macbeth', 'Inverness'), + ( 2, 'Duncan', 'Forres'), + ( 3, 'Lady Macbeth', 'Inverness'), + ( 4, 'Witches, Inc', 'Lonely Heath'); + +-- cf_olap_windowerr_vendors +insert into cf_olap_windowerr_vendor values + ( 10, 'Witches, Inc', 'Lonely Heath'), + ( 20, 'Lady Macbeth', 'Inverness'), + ( 30, 'Duncan', 'Forres'), + ( 40, 'Macbeth', 'Inverness'), + ( 50, 'Macduff', 'Fife'); + +-- cf_olap_windowerr_products +insert into cf_olap_windowerr_product values + ( 100, 'Sword', 'Black'), + ( 200, 'Dream', 'Black'), + ( 300, 'Castle', 'Grey'), + ( 400, 'Justice', 'Clear'), + ( 500, 'Donuts', 'Plain'), + ( 600, 'Donuts', 'Chocolate'), + ( 700, 'Hamburger', 'Grey'), + ( 800, 'Fries', 'Grey'); + + +-- cf_olap_windowerr_sales (transactions) +insert into cf_olap_windowerr_sale values + ( 2, 40, 100, '1401-1-1', 1100, 2400), + ( 1, 10, 200, '1401-3-1', 1, 0), + ( 3, 40, 200, '1401-4-1', 1, 0), + ( 1, 20, 100, '1401-5-1', 1, 0), + ( 1, 30, 300, '1401-5-2', 1, 0), + ( 1, 50, 400, '1401-6-1', 1, 0), + ( 2, 50, 400, '1401-6-1', 1, 0), + ( 1, 30, 500, '1401-6-1', 12, 5), + ( 3, 30, 500, '1401-6-1', 12, 5), + ( 3, 30, 600, '1401-6-1', 12, 5), + ( 4, 40, 700, '1401-6-1', 1, 1), + ( 4, 40, 800, '1401-6-1', 1, 1); + +-- cf_olap_windowerr_sales (ord transactions) +insert into cf_olap_windowerr_sale_ord values + ( 1,2, 40, 100, '1401-1-1', 1100, 2400), + ( 2,1, 10, 200, '1401-3-1', 1, 0), + ( 3,3, 40, 200, '1401-4-1', 1, 0), + ( 4,1, 20, 100, '1401-5-1', 1, 0), + ( 5,1, 30, 300, '1401-5-2', 1, 0), + ( 6,1, 50, 400, '1401-6-1', 1, 0), + ( 7,2, 50, 400, '1401-6-1', 1, 0), + ( 8,1, 30, 500, '1401-6-1', 12, 5), + ( 9,3, 30, 500, '1401-6-1', 12, 5), + ( 10,3, 30, 600, '1401-6-1', 12, 5), + ( 11,4, 40, 700, '1401-6-1', 1, 1), + ( 12,4, 40, 800, '1401-6-1', 1, 1); + +-- cf_olap_windowerr_util + +insert into cf_olap_windowerr_util values + (1), + (20), + (300); + +-- end_ignore + +-- LEAD() function with OVER() clause having ONLY ORDER BY ASC/DESC (without framing) -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range 3 preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.pn desc), +win3 as (order by cf_olap_windowerr_sale.pn asc); +-- mvd 6->5; 4,8,6,9,1->7; 1->10; + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.qty)) OVER(order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.qty) preceding and 2 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.qty) preceding and 2 preceding ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn desc), +win3 as (order by cf_olap_windowerr_sale.cn desc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +-- mvd 2->5; 2->6; 4,3,8,1->7; 3->9; 1->10; + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.prc) preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.pn asc), +win4 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 6->5; 2,8,9->7; 9->10; 9->11; 2,8,9->12; 1,6->13; + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by cf_olap_windowerr_sale.vn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) preceding and floor(cf_olap_windowerr_sale.cn) following ), +win2 as (order by cf_olap_windowerr_sale.vn asc); +-- mvd 3->6; 3->7; 3->8; + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) preceding and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.vn asc); +-- mvd 4->3; 6,4,7,1,2->5; + +-- COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between current row and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.vn asc); +-- mvd 1->6; 2->7; + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.qty) preceding and 4 following ), +win2 as (order by cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 1,3->5; 4->6; 4->7; 1,3,4->8; 4->9; + +-- COUNT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn)) OVER(partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win5),0),'99999999.9999999'),cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between current row and floor(cf_olap_windowerr_sale.vn) following ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.vn asc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win5 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 8->7; 8,10,2,1->9; 10,2->11; 8->12; 10,2->13; 10,8,2,15,1->14; + +-- COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win5),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn asc range between unbounded preceding and floor(cf_olap_windowerr_sale.cn) following ), +win2 as (order by cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.pn asc), +win4 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win5 as (order by cf_olap_windowerr_sale.vn asc); +-- mvd 5,6,3,1->4; 3->7; 3->8; 1->9; 6,3->10; 3->11; + +-- COUNT() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.prc) preceding and current row ); +-- mvd 6,4,7,3->5; + +-- COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn)) OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win5),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.pn desc rows between 0 preceding and floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty) following ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.vn desc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win5 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc); +-- mvd 5,6,7->4; 5,9,7->8; 5,9,7->10; 9->11; 7->12; 5,9,7->13; + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.cn)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn asc range between unbounded preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 3->2; 1,3->4; 1->5; 1,3->6; 1->7; 3->8; + +-- MAX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn asc range between 3 following and floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc); +-- mvd 2->4; 2,1->5; 2,1->6; 2,1->7; 9,10,2->8; + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn asc rows between unbounded preceding and 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.prc)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn asc rows between unbounded preceding and 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn asc rows between unbounded preceding and 1 preceding ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 6,7->5; 6,7->8; 2,1,6,7->9; 6,7->10; 2,1,6,7->11; + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.vn asc); +-- mvd 3->5; 7,3,1,2->6; + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.vn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between current row and current row ), +win2 as (order by cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win5 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 3->7; 9->8; 11->10; 9->12; 2,1,3,11->13; + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.vn asc rows between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.vn asc rows between current row and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc); +-- mvd 2,6->5; 2,6->7; 9,2->8; 9,2->10; 9,2->11; + +-- MAX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.cn) following and floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.prc) following ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +-- mvd 3->2; 1,3,5->4; 7->6; + +-- MAX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and 3 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and 3 following ), +win2 as (partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.pn desc), +win3 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win4 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc); +-- mvd 3,1->2; 3,1->4; 3,1->5; 7,8->6; 7,3,10,8->9; 7,3,1,10->11; + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by cf_olap_windowerr_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.cn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.pn desc rows between unbounded preceding and 2 preceding ), +win2 as (order by cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.cn asc); +-- mvd 5,3,2->4; 3->6; 5->7; 3->8; 3->9; 5->10; + +-- MAX() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between 7 preceding and unbounded following ); +-- mvd 4,3,1->6; + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.pn asc rows between current row and unbounded following ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.pn asc rows between current row and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 3,4,5,6->2; 4,1,6->7; 5->8; 6->9; 3,4,5,6->10; + +-- MAX() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) following and unbounded following ); +-- mvd 3,4,5,6->2; + +-- MAX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.prc) following and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc); +-- mvd 6,1,3,7->5; 7->8; 7->9; 7->10; 7->11; + +-- MIN() function with NULL OVER() clause in combination with other window functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 7->7; 3->8; 3->9; + +-- MIN() function with OVER() clause having ONLY PARTITION BY -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn); +-- mvd 4->3; + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) preceding ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 6->5; 6,8,4->7; 6,8,4->9; 6,8,4->10; + +-- MIN() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.cn) preceding and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) following ); +-- mvd 1->6; + +-- MIN() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty)) OVER(order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.pn) preceding and floor(cf_olap_windowerr_sale.qty) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.pn) preceding and floor(cf_olap_windowerr_sale.qty) following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.vn desc); +-- mvd 1->5; 1->6; 1->7; 3,4,9->8; + +-- MIN() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn desc range between current row and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) following ); +-- mvd 2->3; + +-- MIN() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.pn desc rows unbounded preceding ); +-- mvd 3,1->2; + +-- MIN() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows current row ); +-- mvd 5->4; + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn asc rows between unbounded preceding and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 3,4->2; 4->5; 4->6; + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.cn asc); +-- mvd 4->3; 6->5; 4->7; 6->8; 4->9; 6->10; + +-- MIN() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn)) OVER(order by cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.vn desc rows between 1 preceding and 2 following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.vn asc), +win4 as (order by cf_olap_windowerr_sale.cn asc); +-- mvd 5->4; 5->6; 3,2,5,1->7; 5->8; 5->9; 3->10; + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.cn desc range unbounded preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 3,4->2; 3->5; 3,4->6; + +-- MIN() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) preceding and floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.prc) preceding ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) preceding and floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.prc) preceding ); +-- mvd 3,4,5->2; 3,4,5->6; + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.cn desc rows unbounded preceding ), +win2 as (order by cf_olap_windowerr_sale.pn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win5 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 6,3,7,1->5; 1->8; 1->9; 1->10; 6->11; + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.pn asc rows between unbounded preceding and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.vn desc), +win4 as (order by cf_olap_windowerr_sale.cn desc), +win5 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 3,8,2->7; 3->9; 1->10; 3->11; 3->12; + +-- MIN() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between current row and floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) following ); +-- mvd 4,1->3; + +-- MIN() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between current row and 0 following ), +win2 as (order by cf_olap_windowerr_sale.vn asc), +win3 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 5,6,7->4; 3->8; 3->9; 7,1->10; + +-- STDDEV() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn desc range unbounded preceding ); +-- mvd 8->7; + +-- STDDEV() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn asc range floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) preceding ); +-- mvd 4->6; + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn asc range between unbounded preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.pn asc), +win4 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn desc); +-- mvd 2->4; 2->5; 7,8,9,10,2->6; 7,8,9,10,2->11; 2->12; 8,9,10,2->13; + +-- STDDEV() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) preceding and 3 following ); +-- mvd 5->6; + +-- STDDEV() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn asc range between floor(cf_olap_windowerr_sale.vn) preceding and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn asc); +-- mvd 1->6; 2,1,8->7; + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn desc rows between current row and floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.cn) following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 3,1->2; 1->4; + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between 3 following and floor(cf_olap_windowerr_sale.cn) following ), +win2 as (order by cf_olap_windowerr_sale.cn asc); +-- mvd 1->3; 5->4; 5->6; + +-- STDDEV() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) following and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.pn asc); +-- mvd 3,6->5; 6->7; 6->8; 6->9; 6->10; + +-- STDDEV() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn asc range between unbounded preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 3,1,2->7; 1,2->8; 1->9; 1->10; + +-- STDDEV() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn asc range between unbounded preceding and 2 following ); +-- mvd 1,6,7->5; + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn asc rows between unbounded preceding and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.vn asc), +win3 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc); +-- mvd 3,4,1,5->2; 3,4,1,5->6; 4,1->7; 3,4,5->8; + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between 4 preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 1,5,8->7; 2->9; + +-- STDDEV() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(STDDEV(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between current row and floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc) following ), +win2 as (order by cf_olap_windowerr_sale.cn desc); +-- mvd 8,5,1->7; 8->9; 8,5,1->10; + +-- STDDEV_POP() function with NULL OVER() clause in combination with other window functions -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (), +win2 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +-- mvd 6->6; 1,2,5->7; 1,2,5->8; 1,2,5->9; 1,4->10; + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.dt +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn desc range between unbounded preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn asc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 1->5; 3,2->6; 3,2->7; 3,2->8; 10,2,1->9; + +-- STDDEV_POP() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.vn) preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) following ); +-- mvd 3->7; + +-- STDDEV_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn asc range between current row and floor(cf_olap_windowerr_sale.cn) following ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc); +-- mvd 3->2; 5,6,7,1->4; 6,3,1->8; + +-- STDDEV_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between unbounded preceding and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win4 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc); +-- mvd 4->3; 6,7,4,8->5; 8->9; 7,6,8->10; + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.vn desc range between unbounded preceding and floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) preceding ); +-- mvd 3,4,5,6->2; + +-- STDDEV_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(STDDEV_POP(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.pn)) OVER(order by cf_olap_windowerr_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.vn asc range between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) preceding and 1 preceding ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.vn desc), +win4 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 3,4->2; 3,4->5; 7,1,3->6; 3->8; 3->9; 7,1,11->10; + +-- STDDEV_POP() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.cn asc range between floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.cn) preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) following ); +-- mvd 6,7->5; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(STDDEV_POP(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) preceding ); +-- mvd 1,3,4->2; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(STDDEV_POP(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc) preceding and unbounded following ); +-- mvd 5,1,2->4; + +-- STDDEV_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(STDDEV_POP(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.cn)) OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn asc rows between current row and current row ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn asc rows between current row and current row ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win4 as (order by cf_olap_windowerr_sale.pn desc); +-- mvd 1,6,2,3->7; 1,2->8; 2->9; 3->10; 1,6,2,3->11; + +-- STDDEV_SAMP() function with NULL OVER() clause in combination with other window functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win4 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn desc); +-- mvd 3->3; 3->4; 1->5; 7,8,1->6; 10,1->9; 1->11; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn desc range between unbounded preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.pn asc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc); +-- mvd 3->2; 3->4; 3->5; 3->6; 3->7; 1->8; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.cn asc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.cn asc range between current row and current row ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between current row and current row ); +-- mvd 2->5; 2->6; 2->7; + +-- STDDEV_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.cn asc range between 2 following and floor(cf_olap_windowerr_sale.vn) following ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between 2 following and floor(cf_olap_windowerr_sale.vn) following ), +win2 as (order by cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win4 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.pn asc); +-- mvd 7->6; 7->8; 7->9; 7,11,2,1->10; 5,11,13,2,1->12; 7->14; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.vn) preceding ); +-- mvd 4->3; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.pn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.vn) preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 2,3->6; 2->7; 2->8; 2->9; 2->10; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.prc) preceding and current row ); +-- mvd 2->4; + +-- STDDEV_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between 7 following and floor(cf_olap_windowerr_sale.vn) following ); +-- mvd 4->6; + +-- STDDEV_SAMP() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn +, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn asc), +win2 as (partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +-- mvd 1,4,5,6->3; 5,6->7; 1,4,5,6->8; 5,6->9; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc range unbounded preceding ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 2,1->5; 2,1->6; 2,1->7; 4,2,3,1->8; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn asc), +win4 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn desc); +-- mvd 4,5,2,1->3; 1->6; 1->7; 4,5,2,1->8; 1->9; 4,11,5,2,12->10; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.qty) following and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +-- mvd 5,6,3->4; 2,5->7; 2,1,5,3->8; 5,6,3->9; + +-- STDDEV_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc range between 4 following and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 3,6,7->5; 1,4->8; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn desc rows floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) preceding ); +-- mvd 3,5,6->4; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.vn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.vn) following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 3,4,5,1,6->2; 6->7; 6->8; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between 3 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between 3 preceding and current row ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between 3 preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.pn asc); +-- mvd 8,1,2->7; 8,1,2->9; 4->10; 4->11; 2,13->12; 8,1,2->14; + +-- STDDEV_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(STDDEV_SAMP(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.vn asc rows between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) following and floor(cf_olap_windowerr_sale.vn) following ); +-- mvd 5,8,4,6,1,3->7; + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn asc range current row ), +win2 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn desc), +win4 as (order by cf_olap_windowerr_sale.vn asc); +-- mvd 2->4; 1,3,2->5; 2->6; 1,3,8,9,2->7; 9->10; 1,3,2->11; + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between unbounded preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc); +-- mvd 3->2; 5->4; + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between 2 preceding and floor(cf_olap_windowerr_sale.cn) following ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +-- mvd 1->3; 1,5,6,7->4; 1,5,6,7->8; 1,5,6,7->9; 1,5,6,7->10; 7->11; + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn)) OVER(partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.vn) preceding and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn desc); +-- mvd 3->6; 3->7; 1,9,3,10->8; 3,12->11; 1,9,3,10->13; + +-- SUM() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn asc range between 4 following and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.vn desc), +win4 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 7->6; 4,9,1,7->8; 4,9,1,7->10; 12->11; 4,9,1,7->13; 4,7->14; + +-- SUM() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between unbounded preceding and unbounded following ); +-- mvd 5->4; + +-- SUM() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between floor(cf_olap_windowerr_sale.qty) preceding and floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) preceding ); +-- mvd 1->5; + +-- SUM() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win5),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.prc) preceding and floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.pn) following ), +win2 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win4 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn desc), +win5 as (order by cf_olap_windowerr_sale.pn asc); +-- mvd 3,2->4; 6,3,7,2,8->5; 7,3,2,1->9; 6,3,7,2->10; 1->11; 7,3,2,1->12; + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn asc range unbounded preceding ), +win2 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 3,4,5->2; 3,4,7->6; 3,4,5->8; + +-- SUM() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn asc range between floor(cf_olap_windowerr_sale.qty) preceding and current row ); +-- mvd 3,4,5->2; + +-- SUM() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn asc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn asc range between current row and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +-- mvd 2,5->4; 2,5->6; 5->7; + +-- SUM() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.pn asc range between floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) following and unbounded following ); +-- mvd 1,6,3,7->5; + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.pn asc rows floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) preceding ), +win2 as (order by cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +-- mvd 3,4,1,5->2; 4->6; 4->7; 5->8; 3,4,1,5->9; + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.vn asc rows between unbounded preceding and 2 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.vn asc rows between unbounded preceding and 2 following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 1,5,2->4; 7->6; 7->8; 1,5,2->9; 7->10; + +-- SUM() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.cn) preceding and current row ); +-- mvd 4,5->3; + +-- SUM() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(SUM(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between current row and current row ); +-- mvd 6,2,7,1,8,9->5; 6,2,7,1,8,9->10; + +-- VAR_POP() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range 0 preceding ); +-- mvd 3->2; + +-- VAR_POP() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) preceding and floor(cf_olap_windowerr_sale.cn) preceding ); +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) preceding and 4 preceding ), +win2 as (order by cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.pn asc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 1->2; 4->3; 6->5; 1->7; +-- VAR_POP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) preceding and 4 following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 2->7; 2,5,3,1->8; 10,2,3,5->9; 2->11; +-- VAR_POP() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) preceding and floor(cf_olap_windowerr_sale.cn) preceding ); +-- mvd 2->5; + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) preceding ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) preceding ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 4->3; 4->5; 7,1,8,2,4->6; 4->9; 7,1,8,2,4->10; 4->11; + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between floor(cf_olap_windowerr_sale.pn) preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc); +-- mvd 1->6; 8,3,1->7; 8,3,1->9; 3->10; + +-- VAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win5),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.vn asc rows between 2 preceding and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win4 as (order by cf_olap_windowerr_sale.pn asc), +win5 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +-- mvd 2,1,3->5; 1,3->6; 3->7; 3->8; 10,2,1,3->9; 3->11; + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn desc range between 0 preceding and floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) following ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 3,4->2; 3,6,4->5; 3,4->7; 3,6,4->8; 3,6,4->9; 3,6,4->10; + +-- VAR_POP() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.vn desc range between current row and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) following ); +-- mvd 3,4,5->2; + +-- VAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn asc range between current row and 1 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn asc range between current row and 1 following ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 2,6,7,4->5; 2,6,7,4->8; 2,6,7,4->9; 2,6,7->10; 2,6,7,4->11; + +-- VAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between unbounded preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) following ); +-- mvd 5->4; + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between 4 preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 4,5,6,7->3; 6->8; 6->9; 6->10; + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.pn) preceding and floor(cf_olap_windowerr_sale.cn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.pn) preceding and floor(cf_olap_windowerr_sale.cn) following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn asc); +-- mvd 4,5,6,7->3; 4,5,6,7->8; 1,6,7->9; 1,5,6,7->10; 4,5,6,7->11; 4,5,6,7->12; + +-- VAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(VAR_POP(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty)) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.vn asc rows between current row and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +-- mvd 4,1->3; 4,1->5; 7->6; 4,7,9,2->8; 4,1->10; 7->11; + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn desc range floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 3->2; 5,1,3->4; + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn asc range between unbounded preceding and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 2->5; 2->6; + +-- VAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc)) OVER(order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.cn) preceding and floor(cf_olap_windowerr_sale.vn) preceding ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.cn) preceding and floor(cf_olap_windowerr_sale.vn) preceding ), +win2 as (order by cf_olap_windowerr_sale.cn asc); +-- mvd 1->4; 1->5; 1->6; 1->7; 1->8; + +-- VAR_SAMP() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) preceding and unbounded following ); +-- mvd 5->4; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.pn desc rows between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) preceding and floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.pn) preceding ); +-- mvd 5,1->4; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.cn) preceding and 1 preceding ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn asc), +win4 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 6->5; 6,8,4,1->7; 8,4,2->9; 6->10; 6,8,4,2->11; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between 8 following and unbounded following ); +-- mvd 7->6; + +-- VAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.vn desc rows between 4 following and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 6,2->5; 6,2->7; 2->8; 2->9; 4,2->10; 6,2->11; + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by cf_olap_windowerr_sale.cn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn asc range floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) preceding ), +win2 as (order by cf_olap_windowerr_sale.cn desc); +-- mvd 1->5; 1->6; 1->7; + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by cf_olap_windowerr_sale.pn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.pn asc); +-- mvd 7,1->6; 1->8; 1->9; + +-- VAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn desc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn desc range between current row and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 1,3,4->2; 1,3,4->5; 3,4->6; 8->7; 3,4->9; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.vn desc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.qty)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.vn desc rows unbounded preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.pn asc); +-- mvd 1,8,9->7; 1,8,9->10; 8->11; 8->12; 9->13; 8->14; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.pn desc rows floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) preceding ); +-- mvd 5,1,6->4; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc)) OVER(order by cf_olap_windowerr_sale.vn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.pn desc rows between 0 preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.vn desc); +-- mvd 3,4,6->5; 3->7; 4->8; 3->9; 4->10; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn desc rows between current row and 9 following ); +-- mvd 7,3,4,8->6; + +-- VAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(VAR_SAMP(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) following and unbounded following ); +-- mvd 1,2,3->7; + +-- VARIANCE() function with NULL OVER() clause in combination with other window functions -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999') +, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (), +win2 as (order by cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 3->3; 3->4; 6->5; 6->7; 6,1->8; + +-- VARIANCE() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc +, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win5),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc), +win2 as (order by cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.pn asc), +win4 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win5 as (order by cf_olap_windowerr_sale.pn desc); +-- mvd 8,4,1->7; 1->9; 1->10; 4,12,1->11; 1->13; 4,12,1->14; + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) preceding and floor(cf_olap_windowerr_sale.vn) preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 3->2; 3->4; 6->5; + +-- VARIANCE() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn desc range between 2 preceding and current row ); +-- mvd 1->5; + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.pn asc range between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) preceding and current row ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn asc range between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) preceding and current row ); +-- mvd 2->4; 2->5; 2->6; + +-- VARIANCE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn asc range between floor(cf_olap_windowerr_sale.pn) following and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn) following ), +win2 as (order by cf_olap_windowerr_sale.pn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 4->3; 6->5; 6->7; 1->8; + +-- VARIANCE() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between unbounded preceding and 1 preceding ); +-- mvd 8->7; + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.vn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.vn) preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn desc), +win3 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win4 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn asc); +-- mvd 3->2; 5,1,6->4; 1,3,6->7; 9,5,10,3->8; + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.qty)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn asc rows between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win5),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn asc rows between unbounded preceding and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.vn asc), +win4 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn asc), +win5 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 1,2->3; 2,5->4; 1,2->6; 2->7; 1,5->8; 10->9; + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between 1 following and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) following ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.cn desc); +-- mvd 4->3; 1,4,6->5; 1,4,6->7; 1,4,6->8; 4->9; 4->10; + +-- VARIANCE() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) following and unbounded following ); +-- mvd 3,2->4; + +-- VARIANCE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.cn desc rows between 2 following and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 1,6->5; 1,2,3->7; + +-- VARIANCE() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty +, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn)) OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn asc), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 5,1,6,3->4; 5,2,1,6,3->7; 5,2,1,6,3->8; 5->9; 5->10; 5,2,1,6,3->11; + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc range unbounded preceding ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 2,4->3; 2,6,7,4->5; + +-- VARIANCE() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.vn desc range floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) preceding ); +-- mvd 2,4,1,5->3; + +-- VARIANCE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.vn) preceding and 3 preceding ), +win2 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +-- mvd 6,3->5; 8,6,1->7; 6->9; 8,6,1->10; 6,3->11; 3->12; + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between unbounded preceding and 4 preceding ), +win2 as (order by cf_olap_windowerr_sale.cn desc); +-- mvd 2,4->3; 2,4->5; 2->6; + +-- VARIANCE() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between 9 preceding and unbounded following ); +-- mvd 2,6->5; + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between current row and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) following ), +win2 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.pn desc); +-- mvd 7,8,9,4->6; 7,9->10; 7,9->11; 4->12; + +-- VARIANCE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(VARIANCE(floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.prc) following and 1 following ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.cn desc), +win4 as (order by cf_olap_windowerr_sale.pn asc); +-- mvd 1,3,4,5->2; 3,4,7->6; 3->8; 7->9; 3,4,7->10; 7->11; + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.cn asc range unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.pn)) OVER(order by cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range unbounded preceding ), +win2 as (order by cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.vn asc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 1->4; 1->5; 1->6; 1,8,3,9->7; 1->10; 1->11; + +-- CORR() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn desc range between unbounded preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win4 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 5->4; 5->6; 5->7; 5->8; 5->9; 2,5,11->10; + +-- CORR() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.vn asc rows floor(cf_olap_windowerr_sale.vn) preceding ); +-- mvd 3->7; + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn)) OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.vn asc rows between unbounded preceding and floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.vn) preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 3,4->2; 6,3,4->5; 6,3,4->7; 3->8; + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn desc rows between unbounded preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn desc rows between unbounded preceding and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc); +-- mvd 1->3; 1->4; 1,6->5; 1,6->7; 1,6->8; 10->9; + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between 1 preceding and floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc) following ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win4 as (order by cf_olap_windowerr_sale.pn desc); +-- mvd 3->2; 5,1,3->4; 3->6; 5->7; 5,1,3->8; 3->9; + +-- CORR() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.prc)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) preceding and unbounded following ); +-- mvd 1->5; 1->6; + +-- CORR() function with OVER() clause having PARTITION BY and ORDER BY (without framing) in combination with other window functions -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn asc), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 3,6,1->5; 3,6,1->7; 3,6,1->8; 1,10,11->9; 1,10,11->12; + +-- CORR() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn asc range between 1 preceding and floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) following ); +-- mvd 2->5; + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) preceding and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win4 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 5,2,6->4; 5,2,6->7; 5,6->8; 5,6->9; 5,6->10; 12,13,5,2,6->11; + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn asc range between current row and current row ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 3,4->2; 1,6,3,7,8->5; 1,6,3,7,8->9; 8->10; + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.qty) following and 4 following ), +win2 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 6,7,2->5; 9,1,6->8; 9,1,6->10; 9,1,6->11; 9,1,6->12; + +-- CORR() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn desc range between 2 following and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +-- mvd 1,4->3; 6,4,2,7->5; 1,4,9->8; 6,4,2,7->10; + +-- CORR() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn asc rows between unbounded preceding and floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) preceding ); +-- mvd 1,3,4,5->2; + +-- CORR() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(CORR(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win5),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.cn)) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc) preceding and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.vn desc), +win4 as (partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.pn desc), +win5 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn desc); +-- mvd 4,5->3; 1->6; 1,2,5->7; 4,5->8; 10,11->9; 4,5->12; + +-- COVAR_POP() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn asc range between unbounded preceding and floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.cn) preceding ); +-- mvd 3->2; + +-- COVAR_POP() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between current row and floor(cf_olap_windowerr_sale.qty) following ); +-- mvd 5->4; + +-- COVAR_POP() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.prc) preceding and floor(cf_olap_windowerr_sale.cn) preceding ); +-- mvd 3->2; + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.pn asc rows between 3 preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.pn asc rows between 3 preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) following ), +win2 as (order by cf_olap_windowerr_sale.cn desc); +-- mvd 1,4->3; 1,4->5; 1->6; + +-- COVAR_POP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between floor(cf_olap_windowerr_sale.prc) following and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 8->7; 5,8->9; 5,4,3,8->10; 5,4,3,8->11; 5,4,3,8->12; + +-- COVAR_POP() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) preceding and floor(cf_olap_windowerr_sale.vn) preceding ); +-- mvd 7,1->6; + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn asc range between floor(cf_olap_windowerr_sale.vn) preceding and 2 preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 1,4->7; 9->8; 9->10; 9->11; 9->12; + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) preceding and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) preceding and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 5,6,7,1->4; 5,6,7,1->8; 5,6,7,1->9; 11->10; 2->12; + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn asc range between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.prc) following and floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn asc range between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.prc) following and floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc) following ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 3,4->2; 6,4->5; 3,4->7; 6,4->8; + +-- COVAR_POP() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.pn asc range between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) following and unbounded following ); +-- mvd 2,1,4->3; + +-- COVAR_POP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.pn desc range between floor(cf_olap_windowerr_sale.prc) following and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 4,1->3; 2->5; + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc rows between unbounded preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 2,4,5,1->3; 5->6; 1->7; 1->8; 1->9; + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn asc rows between unbounded preceding and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) following ); +-- mvd 2,7,8,3->6; + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between unbounded preceding and 0 following ), +win2 as (order by cf_olap_windowerr_sale.pn desc), +win3 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 2,4,6,8->7; 8->9; 5,2,1->10; + +-- COVAR_POP() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.vn) preceding and floor(cf_olap_windowerr_sale.pn) following ); +-- mvd 6,7,8,4->5; + +-- COVAR_POP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(COVAR_POP(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between current row and floor(cf_olap_windowerr_sale.vn) following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 6,7->5; 7->8; 7->9; 7->10; + +-- COVAR_SAMP() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn desc range between unbounded preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.pn desc); +-- mvd 7->6; 9->8; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.qty)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) preceding ), +win2 as (order by cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 3->5; 3->6; 3->7; 3->8; 3->9; 11,2,3,12,13->10; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) preceding ); +-- mvd 3,4,5->2; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.qty) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.qty) preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +-- mvd 4,1->3; 4,1->5; 2,4,7,1->6; 2,4,7,1->8; 1->9; + +-- COVAR_SAMP() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn asc rows between current row and floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) following ), +win2 as (order by cf_olap_windowerr_sale.cn asc); +-- mvd 3,4->2; 3->5; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn) preceding ), +win2 as (order by cf_olap_windowerr_sale.cn asc); +-- mvd 1,2,6->5; 1->7; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn asc range between unbounded preceding and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) following ); +-- mvd 3,4,1->2; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc range between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) preceding and current row ); +-- mvd 3,4,5,6->2; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.pn)) OVER(partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc range between 3 preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc range between 3 preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win4 as (order by cf_olap_windowerr_sale.vn asc); +-- mvd 4,1->3; 6,4->5; 4,8,1->7; 4,8,1->9; 4,1->10; 2->11; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.pn/(cf_olap_windowerr_sale.prc+1))) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.vn asc range between floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) preceding and unbounded following ); +-- mvd 6,7,8->5; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.pn desc range between current row and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) following ); +-- mvd 4,5->3; + +-- COVAR_SAMP() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.vn asc range between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) following and 0 following ); +-- mvd 2,3,1->5; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) preceding ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.vn desc); +-- mvd 1,3,4->2; 6,7->5; 6,7->8; 1,3,4->9; 1,3,4->10; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(CUME_DIST() OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between unbounded preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 4,5->3; 1,7,4,8->6; 1,7,4,8->9; 4,5->10; 5->11; 1,7,4,8->12; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.pn asc rows between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) preceding and 2 preceding ); +-- mvd 5,1,6,7,2->4; + +-- COVAR_SAMP() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(COVAR_SAMP(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn)) OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.cn asc); +-- mvd 3,5,6,1->4; 3,5,6,1->7; 3,6,5->8; 3,5,6,1->9; 2->10; + +-- REGR_AVGX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(order by cf_olap_windowerr_sale.vn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn asc range between 3 following and 4 following ), +win2 as (order by cf_olap_windowerr_sale.vn desc); +-- mvd 1->5; 1->6; 1->7; 1->8; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.vn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) preceding ); +-- mvd 3,6,1->5; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn asc rows between unbounded preceding and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 4,5->3; 2->6; + +-- REGR_AVGX() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.cn) preceding and current row ); +-- mvd 6,1->5; + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn asc range current row ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win4 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn asc); +-- mvd 1,4->3; 1,6,7->5; 4->8; 1,6,4->9; + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.vn desc range between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn)) OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.vn desc range between unbounded preceding and current row ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.vn desc range between unbounded preceding and current row ); +-- mvd 1,2,4,5,6->3; 1,2,4,5,6->7; 1,2,4,5,6->8; + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and 3 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and 3 following ), +win2 as (order by cf_olap_windowerr_sale.cn asc); +-- mvd 3,4,5,6->2; 3,4,5,6->7; 3->8; + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.cn desc range between 3 following and 0 following ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 3,6,1,7->5; 6,3->8; 6,3->9; 7->10; 6,3->11; 7->12; + +-- REGR_AVGX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn asc range between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn) following and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 5,1,3,6->4; 1,5,8->7; 1,5,8->9; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.cn)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.pn desc rows between unbounded preceding and 1 preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.pn desc rows between unbounded preceding and 1 preceding ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 5,2,6->4; 5,2,6->7; 9,5,6->8; 5,9,2,6->10; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) preceding and floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.prc) preceding ), +win2 as (partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 6,1,7,8->5; 1,7->9; 1,7->10; 1,7->11; 1,7->12; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.pn)) OVER(partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.cn) following and 1 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.cn) following and 1 following ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 3,4->2; 3,4->5; 3,7->6; 3,7->8; 3,7,10->9; + +-- REGR_AVGX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_AVGX(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.pn) following and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win4 as (order by cf_olap_windowerr_sale.pn desc); +-- mvd 6,1,3,7,8,9->5; 6,3,8,7,9->10; 6,3,8,7,9->11; 8->12; 8->13; 9->14; + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range unbounded preceding ); +-- mvd 3->2; + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range unbounded preceding ), +win2 as (order by cf_olap_windowerr_sale.vn asc), +win3 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn asc); +-- mvd 2->6; 4->7; 4->8; 2,4->9; 2,4->10; + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.dt +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn desc range 4 preceding ), +win2 as (order by cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win4 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn desc); +-- mvd 6->5; 1->7; 9,6->8; 1->10; 9,12,1,6->11; + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn asc range between unbounded preceding and floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.prc) preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +-- mvd 4->3; 6,1->5; + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn asc range between unbounded preceding and floor(cf_olap_windowerr_sale.qty) following ); +-- mvd 3->5; + +-- REGR_AVGY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between unbounded preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn) following ), +win2 as (order by cf_olap_windowerr_sale.pn desc); +-- mvd 2->7; 2->8; 1->9; + +-- REGR_AVGY() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.vn) following and unbounded following ); +-- mvd 4->3; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between unbounded preceding and floor(cf_olap_windowerr_sale.prc) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between unbounded preceding and floor(cf_olap_windowerr_sale.prc) following ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.pn asc); +-- mvd 3->2; 5,6,7,3->4; 3->8; 7,3->9; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.pn asc rows between floor(cf_olap_windowerr_sale.pn) preceding and 4 preceding ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn desc); +-- mvd 5,1->4; 7,8,1->6; 5,2,8,1->9; 5,1->10; 5,1->11; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.pn) preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc); +-- mvd 2,1->4; 1->5; 2,1->6; 8->7; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between 4 preceding and floor(cf_olap_windowerr_sale.pn) following ); +-- mvd 8->7; + +-- REGR_AVGY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.vn) preceding and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +-- mvd 2->5; 2,3->6; + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.pn) preceding and floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) preceding ); +-- mvd 5->4; + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn asc range between current row and unbounded following ); +-- mvd 7,8,9->6; + +-- REGR_AVGY() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.vn) following and floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) following ); +-- mvd 8,1,9->7; + +-- REGR_AVGY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn asc range between 4 following and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn asc); +-- mvd 3,4,1,5->2; 3,4,1,5->6; 8,3,1->7; 8,3,1->9; 3,4,1,5->10; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows 2 preceding ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows 2 preceding ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win4 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc); +-- mvd 5,1->4; 5,1->6; 8,1,9->7; 11,1->10; 8,2,9->12; 5,1->13; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.pn) preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 4,5,2->3; 7,5,4,1->6; 7,5,4,1->8; 4->9; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.cn desc rows between unbounded preceding and unbounded following ); +-- mvd 3,1,4->2; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) preceding and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.pn desc), +win3 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc); +-- mvd 3,2,7,8->6; 3,2,7,8->9; 8->10; 2,8->11; + +-- REGR_AVGY() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_AVGY(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between current row and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) following ); +-- mvd 1,3,2->4; + +-- REGR_COUNT() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn +, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc), +win4 as (order by cf_olap_windowerr_sale.vn asc); +-- mvd 5,6,1->4; 1->7; 1->8; 10,6,1,2->9; 1->11; + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn asc range floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) preceding ); +-- mvd 2->7; + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by cf_olap_windowerr_sale.cn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.cn desc); +-- mvd 1->7; 2->8; 2->9; 2->10; 1->11; 1->12; + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between unbounded preceding and current row ); +-- mvd 2->4; + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between unbounded preceding and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) following ); +-- mvd 5->4; + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between 1 following and 3 following ), +win2 as (order by cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc); +-- mvd 1->3; 5->4; 5->6; + +-- REGR_COUNT() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn) following and unbounded following ); +-- mvd 3->2; + +-- REGR_COUNT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.qty) following and unbounded following ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.qty) following and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.cn desc); +-- mvd 2->7; 2->8; 1->9; 2->10; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between 5 preceding and current row ); +-- mvd 2->3; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) preceding and unbounded following ); +-- mvd 1,5->6; + +-- REGR_COUNT() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between current row and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) following ); +-- mvd 4->5; + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn asc range between unbounded preceding and unbounded following ); +-- mvd 5,1,6->4; + +-- REGR_COUNT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn)) OVER(order by cf_olap_windowerr_sale.vn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn asc range between current row and current row ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win4 as (order by cf_olap_windowerr_sale.vn asc); +-- mvd 5,6,1->4; 5,8,6->7; 1->9; 6->10; 6->11; + +-- REGR_COUNT() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn asc range between 3 following and unbounded following ); +-- mvd 4,5,6->3; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.vn desc rows unbounded preceding ), +win2 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.vn desc), +win4 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc), +win5 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 5,1,6,7->4; 9,7->8; 1->10; 5,7->11; 5->12; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between unbounded preceding and floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) following ); +-- mvd 6,4,2->5; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between unbounded preceding and 1 following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 4,1,2->3; 6->5; 6->7; 6->8; 6->9; 6->10; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) preceding and floor(cf_olap_windowerr_sale.vn) preceding ); +-- mvd 5,3->7; + +-- REGR_COUNT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_COUNT(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn asc rows between floor(cf_olap_windowerr_sale.qty) preceding and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.vn) following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 3,4,5->2; 1->6; 3,1,8,4,5->7; 3,1,8,4,5->9; 1->10; 1->11; + +-- REGR_INTERCEPT() function with NULL OVER() clause -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (); +-- mvd 6->6; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(RANK() OVER(partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn asc range unbounded preceding ), +win2 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 2->3; 5,2->4; 5,2->6; 5,2->7; 5,2->8; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between current row and unbounded following ); +-- mvd 3->2; + +-- REGR_INTERCEPT() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) following and floor(cf_olap_windowerr_sale.pn) following ); +-- mvd 4->7; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows unbounded preceding ); +-- mvd 1->5; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows floor(cf_olap_windowerr_sale.qty) preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn desc), +win4 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.vn desc); +-- mvd 1->5; 7->6; 7->8; 10,3->9; 1,7->11; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.vn asc rows current row ); +-- mvd 3->4; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.dt +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn asc rows between unbounded preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.cn desc), +win4 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 3->2; 5->4; 5->6; 5->7; 3->8; 3,10->9; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn asc rows between unbounded preceding and 4 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn asc rows between unbounded preceding and 4 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn asc rows between unbounded preceding and 4 following ), +win2 as (order by cf_olap_windowerr_sale.cn desc); +-- mvd 5,6->4; 5,6->7; 5,6->8; 5->9; 5->10; 5,6->11; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.prc) preceding and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.prc) preceding and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) preceding ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.vn desc); +-- mvd 6->5; 8,9,6,1->7; 8,9,6,1->10; 6->11; 6->12; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between 1 preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 1->5; 1->6; 4->7; 4->8; 4->9; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) preceding and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn desc); +-- mvd 3->2; 1->4; + +-- REGR_INTERCEPT() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) following and floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.cn) following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 3->2; 3->4; 3->5; 3->6; 3->7; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc range unbounded preceding ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc range unbounded preceding ), +win2 as (order by cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.cn asc); +-- mvd 3,2,5,6->4; 6->7; 3,2,5,6->8; 2->9; 3,2,5,6->10; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc range between unbounded preceding and floor(cf_olap_windowerr_sale.vn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc range between unbounded preceding and floor(cf_olap_windowerr_sale.vn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc range between unbounded preceding and floor(cf_olap_windowerr_sale.vn) preceding ), +win2 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 4,3->6; 4,3->7; 4,3->8; 2,3->9; 2,3->10; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn asc range between floor(cf_olap_windowerr_sale.cn) preceding and current row ); +-- mvd 8,3->7; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn desc range between current row and current row ); +-- mvd 6,1,3,7->5; + +-- REGR_INTERCEPT() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc range between current row and unbounded following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.vn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc range between current row and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.vn asc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 7,3,8,5->6; 8->9; 7,3,8,5->10; 8->11; 5->12; 8->13; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.pn)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows current row ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn asc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 4,2->3; 4,6,2->5; 4,2->7; 9,4,10->8; 9,4,10->11; 4->12; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.prc) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.prc) preceding ), +win2 as (order by cf_olap_windowerr_sale.pn desc), +win3 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win4 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn desc); +-- mvd 4,3,1->7; 1->8; 4,3,1->9; 11->10; 11,4,1->12; 11->13; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.cn)) OVER(partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc rows between unbounded preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc rows between unbounded preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.pn desc); +-- mvd 5,2,3->4; 7,1->6; 3->8; 7,1->9; 5,2,3->10; 5,2,3->11; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.vn) preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.pn asc); +-- mvd 5,1,2,3,6,7->4; 5,1,2,3,6,7->8; 5,1,2,3,6,7->9; 7->10; + +-- REGR_INTERCEPT() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_INTERCEPT(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.qty) following and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) following ); +-- mvd 4,5->3; + +-- REGR_R2() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) preceding ); +-- mvd 4->3; + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range current row ), +win2 as (order by cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 2->6; 2->7; 2->8; 2,1->9; + +-- REGR_R2() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn asc range between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) preceding and 2 preceding ); +-- mvd 5->4; + +-- REGR_R2() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty)) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.pn) preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.vn asc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win4 as (partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 5->4; 7->6; 5,9,3->8; 11,1->10; 7->12; + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win5),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.cn) preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.pn desc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win5 as (order by cf_olap_windowerr_sale.cn desc); +-- mvd 3->2; 5,3,6->4; 8->7; 8->9; 5,3,6->10; 3->11; + +-- REGR_R2() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between unbounded preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) preceding ); +-- mvd 5->4; + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn desc rows between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn desc rows between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) preceding and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn desc rows between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) preceding and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc); +-- mvd 3,4->2; 3,4->5; 3,4->6; 1->7; 3->8; + +-- REGR_R2() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.vn asc rows between floor(cf_olap_windowerr_sale.pn) preceding and unbounded following ); +-- mvd 3,4->2; + +-- REGR_R2() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc rows between 2 preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn desc rows between 2 preceding and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.pn desc); +-- mvd 3,1->2; 3,5,6,1->4; 3,1->7; + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and 0 preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 4,1,5,6->3; 4,1,5,6->7; 4,1,5,6->8; 4,5,1->9; 5,6,11->10; + +-- REGR_R2() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.cn asc range between unbounded preceding and unbounded following ); +-- mvd 5,2,6->4; + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc range between floor(cf_olap_windowerr_sale.pn) preceding and floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) preceding ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 3,2,1,5->4; 2,5->6; + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc range between current row and floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 5,2->6; 8,9,2->7; + +-- REGR_R2() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc range between floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty) following and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 1,7->6; 1,7->8; 7->9; 7->10; + +-- REGR_R2() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.vn asc rows floor(cf_olap_windowerr_sale.vn) preceding ); +-- mvd 3,1,4->2; + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.cn)) OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.cn asc rows current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.cn asc rows current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.pn asc); +-- mvd 1,4,6,3,2->5; 1,4,6,3,2->7; 4->8; 2->9; + +-- REGR_R2() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn asc rows between unbounded preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn) preceding ); +-- mvd 6,7,8->5; + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.prc) preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 5,2,6,7->4; 6->8; 6->9; 6->10; + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between 4 preceding and 4 following ); +-- mvd 6,5->7; 6,5->8; + +-- REGR_R2() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_R2(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between 3 preceding and unbounded following ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between 3 preceding and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 3,1,4->2; 3,1,4->5; 4->6; 8,9,4,10->7; 3,1,4->11; 3,1,4->12; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn desc range unbounded preceding ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn asc), +win3 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 4->3; 6,1,7,4->5; 9,2,1,4->8; 9,2,1,4->10; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and 4 preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn desc), +win3 as (partition by cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.vn asc); +-- mvd 3->5; 3,7->6; 3,7->8; 2,1->9; 3,7->10; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.pn)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between unbounded preceding and 2 following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn asc); +-- mvd 1->3; 1,5->4; 1,5->6; 1,5->7; 1,5->8; + +-- REGR_SLOPE() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.qty)) OVER(order by cf_olap_windowerr_sale.pn asc range between floor(cf_olap_windowerr_sale.vn) following and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) following ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn asc range between floor(cf_olap_windowerr_sale.vn) following and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) following ); +-- mvd 1->3; 1->4; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn desc rows floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) preceding ); +-- mvd 1,4->3; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows current row ); +-- mvd 1->6; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between unbounded preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc); +-- mvd 5->4; 7,8,9,2,5->6; 7,8,9,2,5->10; 9,1,2,5->11; 9,1,2,5->12; + +-- REGR_SLOPE() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.dt +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.pn desc rows between 0 preceding and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) preceding ), +win2 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +-- mvd 1,2,4->3; 6,1,2->5; 8,4->7; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc)) OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn desc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn desc range current row ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc); +-- mvd 6,3,2,7,1->5; 3,9->8; 6,3,2,7,1->10; 3,9->11; 3,9->12; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.dt +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.pn desc range between floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) preceding and 4 preceding ), +win2 as (order by cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win4 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 1,6,2->5; 1->7; 9->8; 9->10; 12,9,1,6->11; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn desc range between current row and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) following ); +-- mvd 2->3; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc range between current row and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc range between current row and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.prc) following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.vn desc); +-- mvd 5,6,7,1->4; 5,6,7,1->8; 6,7,1->9; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn desc range between current row and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 4,5,6->3; 8,5,6,2->7; 6->9; + +-- REGR_SLOPE() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.pn desc range between 0 following and unbounded following ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.cn asc), +win4 as (order by cf_olap_windowerr_sale.pn asc), +win5 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +-- mvd 1,4->5; 2,3,7,1,8->6; 3->9; 4->10; 3,8,4->11; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn desc rows unbounded preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 1,4,5->3; 1->6; 1->7; 1->8; 1->9; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.cn) preceding and floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc) preceding ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 2,1->3; 5,2,1->4; 5,2,1->6; 8->7; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn desc rows between current row and floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) following ), +win2 as (order by cf_olap_windowerr_sale.cn desc); +-- mvd 2,1,5,6,3->4; 2,1,5,6,3->7; 1->8; + +-- REGR_SLOPE() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SLOPE(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(order by cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.pn asc rows between 4 following and 2 following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.pn asc); +-- mvd 4,2,5->3; 7->6; 5->8; 5->9; 5->10; + +-- REGR_SXX() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range floor(cf_olap_windowerr_sale.cn) preceding ); +-- mvd 5->4; + +-- REGR_SXX() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.cn asc range between 0 following and 3 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between 0 following and 3 following ), +win2 as (order by cf_olap_windowerr_sale.pn asc), +win3 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn asc); +-- mvd 4->3; 4->5; 4->6; 4->7; 9->8; 2,4,1,9->10; + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc,cf_olap_windowerr_sale.cn asc rows 9 preceding ); +-- mvd 1,3->2; + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win5),0),'99999999.9999999'),cf_olap_windowerr_sale.prc +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.vn) preceding and 4 preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.pn desc), +win4 as (order by cf_olap_windowerr_sale.cn asc), +win5 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn desc); +-- mvd 4->6; 4->7; 4->8; 1->9; 4->10; 12,4,2->11; + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) preceding and current row ); +-- mvd 4,5->3; + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) preceding and 2 following ),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn desc rows between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) preceding and 2 following ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win4 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +-- mvd 2,1->3; 2,1->4; 6,2,7->5; 2,1->8; 7->9; 1,7->10; + +-- REGR_SXX() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.pn asc rows between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.prc) preceding and unbounded following ); +-- mvd 1->2; + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.vn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.vn desc rows between floor(cf_olap_windowerr_sale.qty) preceding and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 3,4->2; 4->5; 4->6; 4->7; + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc,cf_olap_windowerr_sale.pn desc rows between current row and current row ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 3->2; 1,5,6->4; + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.pn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.vn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.cn)) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.vn desc rows between current row and floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) following ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.vn asc); +-- mvd 2->4; 6,7,2->5; 6,7,2->8; 6,7,2->9; 6,7,2->10; 6,7,2->11; + +-- REGR_SXX() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.vn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.vn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.dt +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.pn) following and unbounded following ), +win2 as (order by cf_olap_windowerr_sale.vn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win4 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.vn desc); +-- mvd 4,5->3; 5->6; 5->7; 5->8; 4->9; 11,5->10; + +-- REGR_SXX() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn asc range floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) preceding ); +-- mvd 5->6; + +-- REGR_SXX() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.cn asc range between unbounded preceding and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.cn) preceding ); +-- mvd 6,4->5; + +-- REGR_SXX() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn asc range between floor(cf_olap_windowerr_sale.qty) preceding and floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) preceding ); +-- mvd 6->5; + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.vn desc range between 4 preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 4,1,5->3; 5,7->6; 5,7->8; 1->9; + +-- REGR_SXX() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty/(cf_olap_windowerr_sale.prc+1)) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn asc range between 3 following and 1 following ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc); +-- mvd 5,1,2->4; 5,7,8->6; 5,7,8->9; 8->10; 5,7,8->11; 2->12; + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows floor(cf_olap_windowerr_sale.cn) preceding ); +-- mvd 4,5,6->3; + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.pn desc rows current row ); +-- mvd 2,5,6->4; 2,5,6->7; + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.cn) following ); +-- mvd 4,5->3; + +-- REGR_SXX() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.prc*cf_olap_windowerr_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn desc rows between 3 preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win4 as (partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 4,5,2,1,6->3; 2,5,1,8,6->7; 4,5,2,1,6->9; 2,6->10; 4,2->11; 2,5,1,8,6->12; + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between current row and 0 following ); +-- mvd 6,7->5; + +-- REGR_SXX() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SXX(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc rows between floor(cf_olap_windowerr_sale.prc) following and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) following ); +-- mvd 3,6,2,4->5; + +-- REGR_SXY() function with OVER() clause having ONLY PARTITION BY in combination with other window functions -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn +, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 1,4,5->3; 2,4,5->6; 8,2,4->7; 8,2,4->9; + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.cn asc range floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) preceding ), +win2 as (order by cf_olap_windowerr_sale.pn desc); +-- mvd 5->4; 5->6; 5->7; 3->8; + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.cn asc range current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc); +-- mvd 5->4; 5->6; 5->7; 5->8; 2->9; 5,2,11->10; + +-- REGR_SXY() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn desc range between floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) preceding and floor(cf_olap_windowerr_sale.prc) preceding ); +-- mvd 5->6; + +-- REGR_SXY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.qty)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win5),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between current row and floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.prc) following ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.cn asc), +win3 as (order by cf_olap_windowerr_sale.cn asc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win5 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 6->5; 6,8,9->7; 6,8,9->10; 6->11; 6->12; 6->13; + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn desc,cf_olap_windowerr_sale.cn desc rows unbounded preceding ); +-- mvd 3->2; + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.vn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.pn desc rows unbounded preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn/cf_olap_windowerr_sale.prc)) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.pn desc rows unbounded preceding ), +win2 as (order by cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.cn desc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 3,5->4; 3->6; 8->7; 3,5->9; 8->10; 3->11; + +-- REGR_SXY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'),cf_olap_windowerr_sale.dt, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win5),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn asc rows 3 preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win3 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.vn desc), +win4 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win5 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 4,1->5; 3->6; 4,1,3->7; 9,4,1,3->8; 4,3->10; 4,1->11; + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn desc rows between unbounded preceding and current row ); +-- mvd 3,1->4; + +-- REGR_SXY() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.pn desc rows between current row and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) following ); +-- mvd 2,1,5->4; + +-- REGR_SXY() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.cn asc range unbounded preceding ); +-- mvd 7->6; + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win4),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt order by cf_olap_windowerr_sale.pn asc range 1 preceding ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win4 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 1,5,6->4; 5,2->7; 5,2->8; 6->9; 6->10; 2->11; + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.pn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.pn asc); +-- mvd 5,1->4; 1,7,2,8->6; 5,8->9; 5,8->10; + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty)) OVER(order by cf_olap_windowerr_sale.pn asc),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.pn desc range between floor(cf_olap_windowerr_sale.cn) preceding and 1 following ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc), +win3 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn asc), +win4 as (order by cf_olap_windowerr_sale.pn asc); +-- mvd 3,1,5->4; 7,3,1->6; 2,3,1,9,5->8; 2,3,1,9,5->10; 5->11; 5->12; + +-- REGR_SXY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.pn desc range between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.pn-cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty order by cf_olap_windowerr_sale.pn desc range between current row and current row ), +win2 as (order by cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 6,7->5; 6,7->8; 7->9; 7->10; 2->11; + +-- REGR_SXY() function with partition by and order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.qty),floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.pn desc range between floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) following and floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.prc) following ); +-- mvd 2,1->5; + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn desc rows current row ), +win2 as (partition by cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win3 as (order by cf_olap_windowerr_sale.cn desc); +-- mvd 6,7,8->5; 6,7,8->9; 8,1->10; 8,1->11; 7->12; 6,7,8->13; + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.prc) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.vn)) OVER(partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn+cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.cn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc,cf_olap_windowerr_sale.vn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.pn) preceding ), +win2 as (partition by cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win3 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc order by cf_olap_windowerr_sale.cn desc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 1,3,4->2; 6,4->5; 6,4->7; 6,9->8; 9->10; 6,9->11; + +-- REGR_SXY() function with partition by and order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SXY(floor(cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.prc, +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.cn)) OVER(partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between current row and current row ),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between current row and current row ); +-- mvd 4,1->3; 4,1->5; 4,1->6; 4,1->7; + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc),0),'99999999.9999999'), +TO_CHAR(COALESCE(PERCENT_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn asc range between unbounded preceding and 0 preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.vn asc); +-- mvd 7->6; 7->8; 7->9; 7->10; 4->11; + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.qty)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.pn) as int),NULL) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.pn desc range between floor(cf_olap_windowerr_sale.prc) preceding and current row ), +win2 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc); +-- mvd 1->4; 6,1->5; 6,1->7; 6,1->8; 3->9; + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.cn) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn asc range between current row and current row ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc), +win3 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn desc), +win4 as (order by cf_olap_windowerr_sale.cn desc); +-- mvd 2->7; 2->8; 2,5,1->9; 2->10; 2,5,1->11; + +-- REGR_SYY() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.cn desc range between current row and unbounded following ); +-- mvd 4->3; + +-- REGR_SYY() function with ONLY order by having range based framing clause -- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn asc range between floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.prc) following and floor(cf_olap_windowerr_sale.vn*cf_olap_windowerr_sale.pn) following ); +-- mvd 3->5; + +-- REGR_SYY() function with ONLY order by having range based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MIN(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.vn asc range between 1 following and floor(cf_olap_windowerr_sale.qty) following ), +win2 as (partition by cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn order by cf_olap_windowerr_sale.vn asc); +-- mvd 1->4; 1->5; 7,1,8->6; + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.cn)) OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.vn) preceding ),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.prc/cf_olap_windowerr_sale.prc) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.vn asc,cf_olap_windowerr_sale.cn desc rows between unbounded preceding and floor(cf_olap_windowerr_sale.vn-cf_olap_windowerr_sale.vn) preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 3,1->6; 3,1->7; 1->8; + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.cn, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.cn),floor(cf_olap_windowerr_sale.cn-cf_olap_windowerr_sale.qty)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.cn asc,cf_olap_windowerr_sale.vn asc rows between floor(cf_olap_windowerr_sale.qty/cf_olap_windowerr_sale.prc) preceding and 8 following ); +-- mvd 1,3->2; + +-- REGR_SYY() function with ONLY order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.qty*cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.qty) preceding and unbounded following ); +-- mvd 4->3; + +-- REGR_SYY() function with ONLY order by having rows based framing clause in combination with other functions -- + +SELECT cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.cn*cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.cn)) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.cn) as int),cast (floor(cf_olap_windowerr_sale.prc) as int),NULL) OVER(win3),0),'99999999.9999999'),cf_olap_windowerr_sale.cn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.qty) as int),NULL) OVER(win4),0),'99999999.9999999'), +TO_CHAR(COALESCE(MAX(floor(cf_olap_windowerr_sale.pn*cf_olap_windowerr_sale.cn)) OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product,cf_olap_windowerr_vendor,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn AND cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn AND cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn) cf_olap_windowerr_sale +WINDOW win1 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc rows between current row and 1 following ), +win2 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.pn asc), +win3 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win4 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn desc); +-- mvd 3->7; 3,2,9->8; 3,2,9->10; 12->11; 3->13; 12->14; + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(LAG(cast(floor(cf_olap_windowerr_sale.pn) as int),cast (floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.pn) as int),NULL) OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(ROW_NUMBER() OVER(order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc),0),'99999999.9999999'), +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.qty) as int),cast (floor(cf_olap_windowerr_sale.cn/(cf_olap_windowerr_sale.prc+1)) as int),NULL) OVER(win3),0),'99999999.9999999'), +TO_CHAR(COALESCE(RANK() OVER(win2),0),'99999999.9999999'), +TO_CHAR(COALESCE(DENSE_RANK() OVER(win3),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_customer WHERE cf_olap_windowerr_sale_ord.cn=cf_olap_windowerr_customer.cn ) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.vn desc range unbounded preceding ), +win2 as (order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn desc), +win3 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc); +-- mvd 2,6->5; 1->7; 1->8; 1,2->9; 1->10; 1,2->11; + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.vn+cf_olap_windowerr_sale.pn),floor(cf_olap_windowerr_sale.pn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn, +TO_CHAR(COALESCE(COUNT(floor(cf_olap_windowerr_sale.pn)) OVER(partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and 3 following ),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_vendor WHERE cf_olap_windowerr_sale_ord.vn=cf_olap_windowerr_vendor.vn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.cn desc range between unbounded preceding and 3 following ); +-- mvd 3,6,7->5; 3,6,7->8; + +-- REGR_SYY() function with partition by and order by having range based framing clause in combination with other functions-- + +SELECT cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.qty+cf_olap_windowerr_sale.vn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn, +TO_CHAR(COALESCE(LEAD(cast(floor(cf_olap_windowerr_sale.vn) as int),cast (floor(cf_olap_windowerr_sale.vn) as int),NULL) OVER(win2),0),'99999999.9999999'),cf_olap_windowerr_sale.qty, +TO_CHAR(COALESCE(CUME_DIST() OVER(win2),0),'99999999.9999999') +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.vn asc range between floor(cf_olap_windowerr_sale.qty-cf_olap_windowerr_sale.vn) preceding and 1 following ), +win2 as (partition by cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc); +-- mvd 1,4,5,2->3; 4,1,5,7,2->6; 4,1,5,7,2->8; + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.prc,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.prc, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.pn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.pn asc rows between unbounded preceding and unbounded following ); +-- mvd 7,8->6; + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.dt, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.vn),floor(cf_olap_windowerr_sale.vn/cf_olap_windowerr_sale.prc)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.dt,cf_olap_windowerr_sale.vn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.vn asc rows between 8 preceding and current row ); +-- mvd 4,1,5,6->3; + +-- REGR_SYY() function with partition by and order by having rows based framing clause -- + +SELECT cf_olap_windowerr_sale.pn, TO_CHAR(COALESCE(REGR_SYY(floor(cf_olap_windowerr_sale.cn+cf_olap_windowerr_sale.prc),floor(cf_olap_windowerr_sale.cn)) OVER(win1),0),'99999999.9999999'),cf_olap_windowerr_sale.cn,cf_olap_windowerr_sale.qty +FROM (SELECT cf_olap_windowerr_sale_ord.* FROM cf_olap_windowerr_sale_ord,cf_olap_windowerr_product WHERE cf_olap_windowerr_sale_ord.pn=cf_olap_windowerr_product.pn) cf_olap_windowerr_sale +WINDOW win1 as (partition by cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn,cf_olap_windowerr_sale.qty,cf_olap_windowerr_sale.pn order by cf_olap_windowerr_sale.ord, cf_olap_windowerr_sale.cn asc rows between floor(cf_olap_windowerr_sale.prc-cf_olap_windowerr_sale.pn) preceding and unbounded following ); +-- mvd 3,4,1->2; + +-- start_ignore +CREATE TABLE filter_test (i int, j int) DISTRIBUTED BY (i); +INSERT INTO filter_test VALUES (1, 1); +INSERT INTO filter_test VALUES (2, 1); +INSERT INTO filter_test VALUES (3, 1); +INSERT INTO filter_test VALUES (4, 2); +INSERT INTO filter_test VALUES (NULL, 2); +INSERT INTO filter_test VALUES (6, 2); +INSERT INTO filter_test VALUES (7, 3); +INSERT INTO filter_test VALUES (8, NULL); +INSERT INTO filter_test VALUES (9, 3); +INSERT INTO filter_test VALUES (10, NULL); +-- end_ignore + +select j, i, ntile(j) over (partition by j order by i) FROM filter_test; + +SELECT ntile(-1) over (order by i) FROM filter_test; + +SELECT ntile(0) over (order by i) FROM filter_test; + +SELECT ntile(0) over (order by i) FROM filter_test; + +-- start_ignore +DROP TABLE filter_test; + +-- +-- STANDARD DATA FOR olap_* TESTS. +-- + +drop table cf_olap_windowerr_customer; +drop table cf_olap_windowerr_vendor; +drop table cf_olap_windowerr_product; +drop table cf_olap_windowerr_sale; +drop table cf_olap_windowerr_sale_ord; +drop table cf_olap_windowerr_util; +-- end_ignore \ No newline at end of file